From: Ben Beltran Date: Fri, 10 Jul 2015 16:12:25 +0000 (-0500) Subject: Adds atom X-Git-Url: https://git.r.bdr.sh/rbdr/dotfiles/commitdiff_plain/24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a?hp=-c Adds atom --- 24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a diff --git a/atom/.apm/.apmrc b/atom/.apm/.apmrc new file mode 100644 index 0000000..d8961b2 --- /dev/null +++ b/atom/.apm/.apmrc @@ -0,0 +1,5 @@ +; This file is auto-generated and should not be edited since any +; modifications will be lost the next time any apm command is run. +; +; You should instead edit your .apmrc config located in ~/.atom/.apmrc +cache = /Users/benbeltran/.atom/.apm diff --git a/atom/.apm/amdefine/0.1.1/package.tgz b/atom/.apm/amdefine/0.1.1/package.tgz new file mode 100644 index 0000000..d9b8df0 Binary files /dev/null and b/atom/.apm/amdefine/0.1.1/package.tgz differ diff --git a/atom/.apm/amdefine/0.1.1/package/package.json b/atom/.apm/amdefine/0.1.1/package/package.json new file mode 100644 index 0000000..4216526 --- /dev/null +++ b/atom/.apm/amdefine/0.1.1/package/package.json @@ -0,0 +1 @@ +{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.1.1","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"license":"BSD-3-Clause AND MIT","repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"gitHead":"fcadcc8080f47084b973bac3b3c4b3dd3e0f957d","bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"_id":"amdefine@0.1.1","scripts":{},"_shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","_from":"amdefine@>=0.0.4","_npmVersion":"1.4.28","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"dist":{"shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"} \ No newline at end of file diff --git a/atom/.apm/async/0.2.10/package.tgz b/atom/.apm/async/0.2.10/package.tgz new file mode 100644 index 0000000..6a47bd6 Binary files /dev/null and b/atom/.apm/async/0.2.10/package.tgz differ diff --git a/atom/.apm/async/0.2.10/package/package.json b/atom/.apm/async/0.2.10/package/package.json new file mode 100644 index 0000000..29c25ca --- /dev/null +++ b/atom/.apm/async/0.2.10/package/package.json @@ -0,0 +1 @@ +{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.10","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.10","dist":{"shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","tarball":"http://registry.npmjs.org/async/-/async-0.2.10.tgz"},"_from":"async@>=0.2.9 <0.3.0","_npmVersion":"1.3.2","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{},"_shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","_resolved":"https://registry.npmjs.org/async/-/async-0.2.10.tgz"} \ No newline at end of file diff --git a/atom/.apm/atom-space-pen-views/2.0.5/package.tgz b/atom/.apm/atom-space-pen-views/2.0.5/package.tgz new file mode 100644 index 0000000..ecc9cad Binary files /dev/null and b/atom/.apm/atom-space-pen-views/2.0.5/package.tgz differ diff --git a/atom/.apm/atom-space-pen-views/2.0.5/package/package.json b/atom/.apm/atom-space-pen-views/2.0.5/package/package.json new file mode 100644 index 0000000..6e6a039 --- /dev/null +++ b/atom/.apm/atom-space-pen-views/2.0.5/package/package.json @@ -0,0 +1 @@ +{"name":"atom-space-pen-views","version":"2.0.5","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"0e5fc262cc62d453bbd6dce9ecaec5caddc553f9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.5","_shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","_from":"atom-space-pen-views@>=2.0.4 <3.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"} \ No newline at end of file diff --git a/atom/.apm/coffee-script/1.8.0/package.tgz b/atom/.apm/coffee-script/1.8.0/package.tgz new file mode 100644 index 0000000..69b2688 Binary files /dev/null and b/atom/.apm/coffee-script/1.8.0/package.tgz differ diff --git a/atom/.apm/coffee-script/1.8.0/package/package.json b/atom/.apm/coffee-script/1.8.0/package/package.json new file mode 100644 index 0000000..51282b0 --- /dev/null +++ b/atom/.apm/coffee-script/1.8.0/package/package.json @@ -0,0 +1 @@ +{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.8.0","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.6.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.8.0","dist":{"shasum":"9c9f1d2b4a52a000ded15b659791703648263c1d","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"},"_from":"coffee-script@>=1.8.0 <1.9.0","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"_shasum":"9c9f1d2b4a52a000ded15b659791703648263c1d","_resolved":"https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"} \ No newline at end of file diff --git a/atom/.apm/coffeestack/1.1.2/package.tgz b/atom/.apm/coffeestack/1.1.2/package.tgz new file mode 100644 index 0000000..e108374 Binary files /dev/null and b/atom/.apm/coffeestack/1.1.2/package.tgz differ diff --git a/atom/.apm/coffeestack/1.1.2/package/package.json b/atom/.apm/coffeestack/1.1.2/package/package.json new file mode 100644 index 0000000..72de8f6 --- /dev/null +++ b/atom/.apm/coffeestack/1.1.2/package/package.json @@ -0,0 +1 @@ +{"name":"coffeestack","version":"1.1.2","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"8484218a00e59526d9f064b64441df788526fa04","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.2","_shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","_from":"coffeestack@>=1.0.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"} \ No newline at end of file diff --git a/atom/.apm/d/0.1.1/package.tgz b/atom/.apm/d/0.1.1/package.tgz new file mode 100644 index 0000000..0e19514 Binary files /dev/null and b/atom/.apm/d/0.1.1/package.tgz differ diff --git a/atom/.apm/d/0.1.1/package/package.json b/atom/.apm/d/0.1.1/package/package.json new file mode 100644 index 0000000..bbcd236 --- /dev/null +++ b/atom/.apm/d/0.1.1/package/package.json @@ -0,0 +1 @@ +{"name":"d","version":"0.1.1","description":"Property descriptor factory","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"scripts":{"test":"node node_modules/tad/bin/tad"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"dependencies":{"es5-ext":"~0.10.2"},"devDependencies":{"tad":"~0.1.21"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/d/issues"},"homepage":"https://github.com/medikoo/d","_id":"d@0.1.1","dist":{"shasum":"da184c535d18d8ee7ba2aa229b914009fae11309","tarball":"http://registry.npmjs.org/d/-/d-0.1.1.tgz"},"_from":"d@>=0.1.1 <0.2.0","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{},"_shasum":"da184c535d18d8ee7ba2aa229b914009fae11309","_resolved":"https://registry.npmjs.org/d/-/d-0.1.1.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/emissary/1.3.3/package.tgz b/atom/.apm/emissary/1.3.3/package.tgz new file mode 100644 index 0000000..e8e3d8a Binary files /dev/null and b/atom/.apm/emissary/1.3.3/package.tgz differ diff --git a/atom/.apm/emissary/1.3.3/package/package.json b/atom/.apm/emissary/1.3.3/package/package.json new file mode 100644 index 0000000..8bf554a --- /dev/null +++ b/atom/.apm/emissary/1.3.3/package/package.json @@ -0,0 +1 @@ +{"name":"emissary","version":"1.3.3","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"13170d3e1f8b1cd4396d6dceb3c3bccf0887dae2","_id":"emissary@1.3.3","_shasum":"a618d92d682b232d31111dc3625a5df661799606","_from":"emissary@>=1.2.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"a618d92d682b232d31111dc3625a5df661799606","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/es5-ext/0.10.7/package.tgz b/atom/.apm/es5-ext/0.10.7/package.tgz new file mode 100644 index 0000000..0aa368a Binary files /dev/null and b/atom/.apm/es5-ext/0.10.7/package.tgz differ diff --git a/atom/.apm/es5-ext/0.10.7/package/package.json b/atom/.apm/es5-ext/0.10.7/package/package.json new file mode 100644 index 0000000..3168e57 --- /dev/null +++ b/atom/.apm/es5-ext/0.10.7/package/package.json @@ -0,0 +1 @@ +{"name":"es5-ext","version":"0.10.7","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"5b63ee02f50dfbc70dc1f62bc66b8718af443f83","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.7","_shasum":"dfaea50721301042e2d89c1719d43493fa821656","_from":"es5-ext@>=0.10.6 <0.11.0","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"dfaea50721301042e2d89c1719d43493fa821656","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/es6-iterator/0.1.3/package.tgz b/atom/.apm/es6-iterator/0.1.3/package.tgz new file mode 100644 index 0000000..3f7cfd2 Binary files /dev/null and b/atom/.apm/es6-iterator/0.1.3/package.tgz differ diff --git a/atom/.apm/es6-iterator/0.1.3/package/package.json b/atom/.apm/es6-iterator/0.1.3/package/package.json new file mode 100644 index 0000000..1cc0d20 --- /dev/null +++ b/atom/.apm/es6-iterator/0.1.3/package/package.json @@ -0,0 +1 @@ +{"name":"es6-iterator","version":"0.1.3","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5","es6-symbol":"~2.0.1"},"devDependencies":{"event-emitter":"~0.3.3","tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"2addc362c6f139e4941cf4726eeb59e5960c5cef","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.3","_shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","_from":"es6-iterator@>=0.1.3 <0.2.0","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/es6-symbol/2.0.1/package.tgz b/atom/.apm/es6-symbol/2.0.1/package.tgz new file mode 100644 index 0000000..866cf5e Binary files /dev/null and b/atom/.apm/es6-symbol/2.0.1/package.tgz differ diff --git a/atom/.apm/es6-symbol/2.0.1/package/package.json b/atom/.apm/es6-symbol/2.0.1/package/package.json new file mode 100644 index 0000000..564673c --- /dev/null +++ b/atom/.apm/es6-symbol/2.0.1/package/package.json @@ -0,0 +1 @@ +{"name":"es6-symbol","version":"2.0.1","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"51f6938d7830269fefa38f02eb912f5472b3ccd7","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@2.0.1","_shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","_from":"es6-symbol@>=2.0.1 <2.1.0","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/es6-weak-map/0.1.4/package.tgz b/atom/.apm/es6-weak-map/0.1.4/package.tgz new file mode 100644 index 0000000..f4ef004 Binary files /dev/null and b/atom/.apm/es6-weak-map/0.1.4/package.tgz differ diff --git a/atom/.apm/es6-weak-map/0.1.4/package/package.json b/atom/.apm/es6-weak-map/0.1.4/package/package.json new file mode 100644 index 0000000..d62a4a9 --- /dev/null +++ b/atom/.apm/es6-weak-map/0.1.4/package/package.json @@ -0,0 +1 @@ +{"name":"es6-weak-map","version":"0.1.4","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.6","es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"e68802395b82a700257374c379cfaafe84ee8552","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.4","_shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","_from":"es6-weak-map@>=0.1.2 <0.2.0","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/event-kit/0.7.2/package.tgz b/atom/.apm/event-kit/0.7.2/package.tgz new file mode 100644 index 0000000..8b9dbac Binary files /dev/null and b/atom/.apm/event-kit/0.7.2/package.tgz differ diff --git a/atom/.apm/event-kit/0.7.2/package/package.json b/atom/.apm/event-kit/0.7.2/package/package.json new file mode 100644 index 0000000..87c4791 --- /dev/null +++ b/atom/.apm/event-kit/0.7.2/package/package.json @@ -0,0 +1 @@ +{"name":"event-kit","version":"0.7.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"997b618b19566d5740c77507492528c52b5edb6a","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.2","_shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","_from":"event-kit@>=0.7.2 <0.8.0","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/ex-mode/0.5.1/package.tgz b/atom/.apm/ex-mode/0.5.1/package.tgz new file mode 100644 index 0000000..8770c16 Binary files /dev/null and b/atom/.apm/ex-mode/0.5.1/package.tgz differ diff --git a/atom/.apm/ex-mode/0.5.1/package/package.json b/atom/.apm/ex-mode/0.5.1/package/package.json new file mode 100644 index 0000000..48fbbfd --- /dev/null +++ b/atom/.apm/ex-mode/0.5.1/package/package.json @@ -0,0 +1 @@ +{"name":"ex-mode","main":"./lib/ex-mode","version":"0.5.1","description":"Ex for Atom's vim-mode","activationCommands":{"atom-workspace":"ex-mode:open"},"repository":{"type":"git","url":"https://github.com/lloeki/ex-mode"},"license":"MIT","engines":{"atom":">=0.200.0 <2.0.0"},"dependencies":{"underscore-plus":"1.x","event-kit":"^0.7.2","space-pen":"^5.1.1","atom-space-pen-views":"^2.0.4"},"consumedServices":{"vim-mode":{"versions":{"^0.1.0":"consumeVim"}}},"providedServices":{"ex-mode":{"description":"Ex commands","versions":{"0.20.0":"provideEx"}}},"readme":"# ex-mode package\n\nex-mode for Atom's vim-mode\n\n## Use\n\nInstall both [vim-mode](https://github.com/atom/vim-mode) and ex-mode. Type `:` in command mode. Enter `w` or `write`.\n\n## Extend\n\nUse the service to register commands, from your own package, or straight from `init.coffee`:\n\n```coffee\n# in Atom's init.coffee\natom.packages.onDidActivatePackage (pack) ->\n if pack.name == 'ex-mode'\n Ex = pack.mainModule.provideEx()\n Ex.registerCommand 'z', -> console.log(\"Zzzzzz...\")\n```\n\nSee `lib/ex.coffee` for some examples commands. Contributions are very welcome!\n\n## Status\n\nGroundwork is done. More ex commands are easy to add and will be coming as time permits and contributions come in.\n\n## License\n\nMIT\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/lloeki/ex-mode/issues"},"homepage":"https://github.com/lloeki/ex-mode","_id":"ex-mode@0.5.1","_shasum":"8af9a669232d55ae62ee5b6d21750e864564a7fe","_resolved":"file:../d-11562-87793-1y2kizp/package.tgz","_from":"../d-11562-87793-1y2kizp/package.tgz"} \ No newline at end of file diff --git a/atom/.apm/fs-plus/2.8.1/package.tgz b/atom/.apm/fs-plus/2.8.1/package.tgz new file mode 100644 index 0000000..0b46fd0 Binary files /dev/null and b/atom/.apm/fs-plus/2.8.1/package.tgz differ diff --git a/atom/.apm/fs-plus/2.8.1/package/package.json b/atom/.apm/fs-plus/2.8.1/package/package.json new file mode 100644 index 0000000..5722391 --- /dev/null +++ b/atom/.apm/fs-plus/2.8.1/package/package.json @@ -0,0 +1 @@ +{"name":"fs-plus","version":"2.8.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"eb4915c02f09427b1bb002b886a9cfc34a262e1f","_id":"fs-plus@2.8.1","_shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","_from":"fs-plus@>=2.5.0 <3.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"} \ No newline at end of file diff --git a/atom/.apm/fuzzaldrin/2.1.0/package.tgz b/atom/.apm/fuzzaldrin/2.1.0/package.tgz new file mode 100644 index 0000000..10d2031 Binary files /dev/null and b/atom/.apm/fuzzaldrin/2.1.0/package.tgz differ diff --git a/atom/.apm/fuzzaldrin/2.1.0/package/package.json b/atom/.apm/fuzzaldrin/2.1.0/package/package.json new file mode 100644 index 0000000..ac06b33 --- /dev/null +++ b/atom/.apm/fuzzaldrin/2.1.0/package/package.json @@ -0,0 +1 @@ +{"name":"fuzzaldrin","version":"2.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@2.1.0","dist":{"shasum":"90204c3e2fdaa6941bb28d16645d418063a90e9b","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"},"_from":"fuzzaldrin@>=2.1.0 <3.0.0","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{},"_shasum":"90204c3e2fdaa6941bb28d16645d418063a90e9b","_resolved":"https://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"} \ No newline at end of file diff --git a/atom/.apm/grim/0.12.0/package.tgz b/atom/.apm/grim/0.12.0/package.tgz new file mode 100644 index 0000000..665f938 Binary files /dev/null and b/atom/.apm/grim/0.12.0/package.tgz differ diff --git a/atom/.apm/grim/0.12.0/package/package.json b/atom/.apm/grim/0.12.0/package/package.json new file mode 100644 index 0000000..13f7bb9 --- /dev/null +++ b/atom/.apm/grim/0.12.0/package/package.json @@ -0,0 +1 @@ +{"name":"grim","version":"0.12.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c24f22a7e415d5d6b695967e341f7fb7aa27d83f","homepage":"https://github.com/atom/grim","_id":"grim@0.12.0","_shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","_from":"grim@>=0.12.0 <0.13.0","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","tarball":"http://registry.npmjs.org/grim/-/grim-0.12.0.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/grim/-/grim-0.12.0.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/grim/1.4.1/package.tgz b/atom/.apm/grim/1.4.1/package.tgz new file mode 100644 index 0000000..074a3d4 Binary files /dev/null and b/atom/.apm/grim/1.4.1/package.tgz differ diff --git a/atom/.apm/grim/1.4.1/package/package.json b/atom/.apm/grim/1.4.1/package/package.json new file mode 100644 index 0000000..9e0621c --- /dev/null +++ b/atom/.apm/grim/1.4.1/package/package.json @@ -0,0 +1 @@ +{"name":"grim","version":"1.4.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dbcb234a130aaef6af1458bfa686f65c5b97690a","homepage":"https://github.com/atom/grim","_id":"grim@1.4.1","_shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","_from":"grim@>=1.0.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","tarball":"http://registry.npmjs.org/grim/-/grim-1.4.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/grim/-/grim-1.4.1.tgz"} \ No newline at end of file diff --git a/atom/.apm/jquery/2.1.4/package.tgz b/atom/.apm/jquery/2.1.4/package.tgz new file mode 100644 index 0000000..af2bc2a Binary files /dev/null and b/atom/.apm/jquery/2.1.4/package.tgz differ diff --git a/atom/.apm/jquery/2.1.4/package/package.json b/atom/.apm/jquery/2.1.4/package/package.json new file mode 100644 index 0000000..1c6ce71 --- /dev/null +++ b/atom/.apm/jquery/2.1.4/package/package.json @@ -0,0 +1 @@ +{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.4","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","jsdom":"1.5.0","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"7751e69b615c6eca6f783a81e292a55725af6b85","_id":"jquery@2.1.4","_shasum":"228bde698a0c61431dc2630a6a154f15890d2317","_from":"jquery@>=2.1.3 <3.0.0","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"228bde698a0c61431dc2630a6a154f15890d2317","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"} \ No newline at end of file diff --git a/atom/.apm/mixto/1.0.0/package.tgz b/atom/.apm/mixto/1.0.0/package.tgz new file mode 100644 index 0000000..03db8b9 Binary files /dev/null and b/atom/.apm/mixto/1.0.0/package.tgz differ diff --git a/atom/.apm/mixto/1.0.0/package/package.json b/atom/.apm/mixto/1.0.0/package/package.json new file mode 100644 index 0000000..e48fdc8 --- /dev/null +++ b/atom/.apm/mixto/1.0.0/package/package.json @@ -0,0 +1 @@ +{"name":"mixto","version":"1.0.0","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","main":"lib/mixin","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/mixto/raw/master/LICENSE.md"}],"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"author":{"name":"Nathan Sobo"},"_id":"mixto@1.0.0","dist":{"shasum":"c320ef61b52f2898f522e17d8bbc6d506d8425b6","tarball":"http://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz"},"_from":"mixto@>=1.0.0 <2.0.0","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{},"_shasum":"c320ef61b52f2898f522e17d8bbc6d506d8425b6","_resolved":"https://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz","readme":"ERROR: No README data found!","homepage":"https://github.com/atom/mixto"} \ No newline at end of file diff --git a/atom/.apm/mkdirp/0.3.5/package.tgz b/atom/.apm/mkdirp/0.3.5/package.tgz new file mode 100644 index 0000000..29d8571 Binary files /dev/null and b/atom/.apm/mkdirp/0.3.5/package.tgz differ diff --git a/atom/.apm/mkdirp/0.3.5/package/package.json b/atom/.apm/mkdirp/0.3.5/package/package.json new file mode 100644 index 0000000..57455e1 --- /dev/null +++ b/atom/.apm/mkdirp/0.3.5/package/package.json @@ -0,0 +1 @@ +{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.5","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.4.0"},"license":"MIT","_id":"mkdirp@0.3.5","dist":{"shasum":"de3e5f8961c88c787ee1368df849ac4413eca8d7","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"},"_from":"mkdirp@>=0.3.5 <0.4.0","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{},"_shasum":"de3e5f8961c88c787ee1368df849ac4413eca8d7","_resolved":"https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"} \ No newline at end of file diff --git a/atom/.apm/property-accessors/1.1.3/package.tgz b/atom/.apm/property-accessors/1.1.3/package.tgz new file mode 100644 index 0000000..eca83de Binary files /dev/null and b/atom/.apm/property-accessors/1.1.3/package.tgz differ diff --git a/atom/.apm/property-accessors/1.1.3/package/package.json b/atom/.apm/property-accessors/1.1.3/package/package.json new file mode 100644 index 0000000..907a39c --- /dev/null +++ b/atom/.apm/property-accessors/1.1.3/package/package.json @@ -0,0 +1 @@ +{"name":"property-accessors","version":"1.1.3","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"1.x","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"c90f096dfc8f589ecb8186cadfbfcf97dc5f5cc6","_id":"property-accessors@1.1.3","_shasum":"1dde84024631865909ef30703365680c5f928b15","_from":"property-accessors@>=1.1.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"1dde84024631865909ef30703365680c5f928b15","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz","readme":"ERROR: No README data found!"} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/amdefine/.cache.json b/atom/.apm/registry.npmjs.org/amdefine/.cache.json new file mode 100644 index 0000000..3505109 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/amdefine/.cache.json @@ -0,0 +1 @@ +{"_id":"amdefine","_rev":"22-bd5a8f194ca83bbf018248932e8c7d13","name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.1","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.6.0"},"_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"_id":"amdefine@0.0.1","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"20add952bf0f8941ae2765386c92310679d4a954","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.1.tgz"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.2":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.2","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"_id":"amdefine@0.0.2","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"e857fddd8f9f35706d79ea749769260eec8aaf64","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.2.tgz"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.3":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.3","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.3","dist":{"shasum":"614a059498baf6145e43b08bd4e9bd03a76d8528","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.3.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.4":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.4","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.4","dist":{"shasum":"510e24a0f231314e1105b9c747e79aaed694a0e9","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.4.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.5":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.5","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.5","dist":{"shasum":"86b6e9470f8cde955ef7daa3cf5d544ba81aa3db","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.6":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.6","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.6","dist":{"shasum":"71c4fa15af79f48f0f9ecb6f76e59ef56cfa9e11","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.6.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.7":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.7","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.7","dist":{"shasum":"701b674496bcb16aa2edb8db232b7f9c9332d3c8","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.7.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.8":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.8","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.8","dist":{"shasum":"34dc8c981e6acb3be1853bef8f0ec94a39d55ba0","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.8.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.1.0":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.1.0","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"_id":"amdefine@0.1.0","dist":{"shasum":"3ca9735cf1dde0edf7a4bf6641709c8024f9b227","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.1.1":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.1.1","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"license":"BSD-3-Clause AND MIT","repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"gitHead":"fcadcc8080f47084b973bac3b3c4b3dd3e0f957d","bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"_id":"amdefine@0.1.1","scripts":{},"_shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"dist":{"shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"},"directories":{}}},"readme":"# amdefine\n\nA module that can be used to implement AMD's define() in Node. This allows you\nto code to the AMD API and have the module work in node programs without\nrequiring those other programs to use AMD.\n\n## Usage\n\n**1)** Update your package.json to indicate amdefine as a dependency:\n\n```javascript\n \"dependencies\": {\n \"amdefine\": \">=0.1.0\"\n }\n```\n\nThen run `npm install` to get amdefine into your project.\n\n**2)** At the top of each module that uses define(), place this code:\n\n```javascript\nif (typeof define !== 'function') { var define = require('amdefine')(module) }\n```\n\n**Only use these snippets** when loading amdefine. If you preserve the basic structure,\nwith the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).\n\nYou can add spaces, line breaks and even require amdefine with a local path, but\nkeep the rest of the structure to get the stripping behavior.\n\nAs you may know, because `if` statements in JavaScript don't have their own scope, the var\ndeclaration in the above snippet is made whether the `if` expression is truthy or not. If\nRequireJS is loaded then the declaration is superfluous because `define` is already already\ndeclared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`\ndeclarations of the same variable in the same scope gracefully.\n\nIf you want to deliver amdefine.js with your code rather than specifying it as a dependency\nwith npm, then just download the latest release and refer to it using a relative path:\n\n[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)\n\n### amdefine/intercept\n\nConsider this very experimental.\n\nInstead of pasting the piece of text for the amdefine setup of a `define`\nvariable in each module you create or consume, you can use `amdefine/intercept`\ninstead. It will automatically insert the above snippet in each .js file loaded\nby Node.\n\n**Warning**: you should only use this if you are creating an application that\nis consuming AMD style defined()'d modules that are distributed via npm and want\nto run that code in Node.\n\nFor library code where you are not sure if it will be used by others in Node or\nin the browser, then explicitly depending on amdefine and placing the code\nsnippet above is suggested path, instead of using `amdefine/intercept`. The\nintercept module affects all .js files loaded in the Node app, and it is\ninconsiderate to modify global state like that unless you are also controlling\nthe top level app.\n\n#### Why distribute AMD-style modules via npm?\n\nnpm has a lot of weaknesses for front-end use (installed layout is not great,\nshould have better support for the `baseUrl + moduleID + '.js' style of loading,\nsingle file JS installs), but some people want a JS package manager and are\nwilling to live with those constraints. If that is you, but still want to author\nin AMD style modules to get dynamic require([]), better direct source usage and\npowerful loader plugin support in the browser, then this tool can help.\n\n#### amdefine/intercept usage\n\nJust require it in your top level app module (for example index.js, server.js):\n\n```javascript\nrequire('amdefine/intercept');\n```\n\nThe module does not return a value, so no need to assign the result to a local\nvariable.\n\nThen just require() code as you normally would with Node's require(). Any .js\nloaded after the intercept require will have the amdefine check injected in\nthe .js source as it is loaded. It does not modify the source on disk, just\nprepends some content to the text of the module as it is loaded by Node.\n\n#### How amdefine/intercept works\n\nIt overrides the `Module._extensions['.js']` in Node to automatically prepend\nthe amdefine snippet above. So, it will affect any .js file loaded by your\napp.\n\n## define() usage\n\nIt is best if you use the anonymous forms of define() in your module:\n\n```javascript\ndefine(function (require) {\n var dependency = require('dependency');\n});\n```\n\nor\n\n```javascript\ndefine(['dependency'], function (dependency) {\n\n});\n```\n\n## RequireJS optimizer integration. \n\nVersion 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)\nwill have support for stripping the `if (typeof define !== 'function')` check\nmentioned above, so you can include this snippet for code that runs in the\nbrowser, but avoid taking the cost of the if() statement once the code is\noptimized for deployment.\n\n## Node 0.4 Support\n\nIf you want to support Node 0.4, then add `require` as the second parameter to amdefine:\n\n```javascript\n//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.\nif (typeof define !== 'function') { var define = require('amdefine')(module, require) }\n```\n\n## Limitations\n\n### Synchronous vs Asynchronous\n\namdefine creates a define() function that is callable by your code. It will\nexecute and trace dependencies and call the factory function *synchronously*,\nto keep the behavior in line with Node's synchronous dependency tracing.\n\nThe exception: calling AMD's callback-style require() from inside a factory\nfunction. The require callback is called on process.nextTick():\n\n```javascript\ndefine(function (require) {\n require(['a'], function(a) {\n //'a' is loaded synchronously, but\n //this callback is called on process.nextTick().\n });\n});\n```\n\n### Loader Plugins\n\nLoader plugins are supported as long as they call their load() callbacks\nsynchronously. So ones that do network requests will not work. However plugins\nlike [text](http://requirejs.org/docs/api.html#text) can load text files locally.\n\nThe plugin API's `load.fromText()` is **not supported** in amdefine, so this means\ntranspiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)\nwill not work. This may be fixable, but it is a bit complex, and I do not have\nenough node-fu to figure it out yet. See the source for amdefine.js if you want\nto get an idea of the issues involved.\n\n## Tests\n\nTo run the tests, cd to **tests** and run:\n\n```\nnode all.js\nnode all-intercept.js\n```\n\n## License\n\nNew BSD and MIT. Check the LICENSE file for all the details.\n","maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"time":{"modified":"2015-06-08T21:00:25.583Z","created":"2011-12-10T01:16:02.521Z","0.0.1":"2011-12-10T01:16:03.912Z","0.0.2":"2012-02-28T22:11:53.033Z","0.0.3":"2012-10-15T00:18:41.972Z","0.0.4":"2012-10-15T05:02:38.640Z","0.0.5":"2013-05-08T17:30:15.875Z","0.0.6":"2013-08-02T18:39:56.943Z","0.0.7":"2013-08-03T01:16:01.971Z","0.0.8":"2013-08-03T06:43:30.058Z","0.1.0":"2013-10-15T04:52:41.100Z","0.1.1":"2015-06-08T21:00:25.583Z"},"author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"users":{"nate-wilkins":true,"subchen":true},"homepage":"http://github.com/jrburke/amdefine","bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"license":"BSD-3-Clause AND MIT","readmeFilename":"README.md","_attachments":{},"_etag":"\"4YYSFNXID9MUWP27KTSW2EKU8\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/async/.cache.json b/atom/.apm/registry.npmjs.org/async/.cache.json new file mode 100644 index 0000000..94e3710 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/async/.cache.json @@ -0,0 +1 @@ +{"_id":"async","_rev":"808-cd6d219de76ed2d420d3df80eaca91cf","name":"async","description":"Higher-order functions and common patterns for asynchronous code","dist-tags":{"latest":"1.3.0"},"versions":{"0.1.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.0","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.0.tgz","shasum":"ab8ece0c40627e4e8f0e09c8fcf7c19ed0c4241c"},"directories":{}},"0.1.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.1","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.1.tgz","shasum":"fb965e70dbea44c8a4b8a948472dee7d27279d5e"},"directories":{}},"0.1.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.2","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.2.tgz","shasum":"be761882a64d3dc81a669f9ee3d5c28497382691"},"directories":{}},"0.1.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.3","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.3.tgz","shasum":"629ca2357112d90cafc33872366b14f2695a1fbc"},"directories":{}},"0.1.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.4","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.4.tgz","shasum":"29de4b98712ab8858411d8d8e3361a986c3b2c18"},"directories":{}},"0.1.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.5","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.5","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.5.tgz","shasum":"9d83e3d4adb9c962fc4a30e7dd04bf1206c28ea5"},"directories":{}},"0.1.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.6","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.6","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.6.tgz","shasum":"2dfb4fa1915f86056060c2e2f35a7fb8549907cc"},"directories":{}},"0.1.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.7","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.7","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.4-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.7.tgz","shasum":"e9268d0d8cd8dcfe0db0895b27dcc4bcc5c739a5"},"directories":{}},"0.1.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.8","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.8","engines":{"node":"*"},"_nodeSupported":true,"dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.8.tgz","shasum":"52f2df6c0aa6a7f8333e1fbac0fbd93670cf6758"},"directories":{}},"0.1.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.9","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"dependencies":{},"devDependencies":{},"_id":"async@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.1rc7","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"f984d0739b5382c949cc3bea702d21d0dbd52040","tarball":"http://registry.npmjs.org/async/-/async-0.1.9.tgz"},"directories":{}},"0.1.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.10","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.10/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.10","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"12b32bf098fa7fc51ae3ac51441b8ba15f437cf1","tarball":"http://registry.npmjs.org/async/-/async-0.1.10.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.11":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.11","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.11/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.11","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a397a69c6febae232d20a76a5b10d8742e2b8215","tarball":"http://registry.npmjs.org/async/-/async-0.1.11.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.12":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.12","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.12/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.12","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"ab36be6611dc63d91657128e1d65102b959d4afe","tarball":"http://registry.npmjs.org/async/-/async-0.1.12.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.13":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.13","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.13","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"f1e53ad69dab282d8e75cbec5e2c5524b6195eab","tarball":"http://registry.npmjs.org/async/-/async-0.1.13.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.14":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.14","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.14","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"0fcfaf089229fc657798203d1a4544102f7d26dc","tarball":"http://registry.npmjs.org/async/-/async-0.1.14.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.15":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.15","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.15","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3","tarball":"http://registry.npmjs.org/async/-/async-0.1.15.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.16":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.16","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.16","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b3a61fdc1a9193d4f64755c7600126e254223186","tarball":"http://registry.npmjs.org/async/-/async-0.1.16.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.17":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.17","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"dependencies":{"uglify-js":"1.2.x"},"devDependencies":{"nodeunit":">0.0.0","nodelint":">0.0.0"},"scripts":{"preinstall":"make clean","install":"make build","test":"make test"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.17","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"03524a379e974dc9ee5c811c6ee3815d7bc54f6e","tarball":"http://registry.npmjs.org/async/-/async-0.1.17.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.18":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.18","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.18","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"c59c923920b76d5bf23248c04433920c4d45086a","tarball":"http://registry.npmjs.org/async/-/async-0.1.18.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.19":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.19","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.19","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4fd6125a70f841fb10b14aeec6e23cf1479c71a7","tarball":"http://registry.npmjs.org/async/-/async-0.1.19.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.20":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.20","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.20","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ba0e47b08ae972e04b5215de28539b313482ede5","tarball":"http://registry.npmjs.org/async/-/async-0.1.20.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.21":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.21","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.21","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b5b12e985f09ab72c202fa00f623cd9d997e9464","tarball":"http://registry.npmjs.org/async/-/async-0.1.21.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.22":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.22","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.22","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061","tarball":"http://registry.npmjs.org/async/-/async-0.1.22.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.0","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_id":"async@0.2.0","dist":{"shasum":"db1c645337bab79d0ca93d95f5c72d9605be0fce","tarball":"http://registry.npmjs.org/async/-/async-0.2.0.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.1","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_id":"async@0.2.1","dist":{"shasum":"4e37d08391132f79657a99ca73aa4eb471a6f771","tarball":"http://registry.npmjs.org/async/-/async-0.2.1.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.2","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.2","dist":{"shasum":"8414ee47da7548126b4d3d923850d54e68a72b28","tarball":"http://registry.npmjs.org/async/-/async-0.2.2.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.3","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.3","dist":{"shasum":"79bf601d723a2e8c3e91cb6bb08f152dca309fb3","tarball":"http://registry.npmjs.org/async/-/async-0.2.3.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.4","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.4","dist":{"shasum":"0550e510cf43b83e2fcf1cb96399f03f1efd50eb","tarball":"http://registry.npmjs.org/async/-/async-0.2.4.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.5","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.5","dist":{"shasum":"45f05da480749ba4c1dcd8cd3a3747ae7b36fe52","tarball":"http://registry.npmjs.org/async/-/async-0.2.5.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.6","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.6","dist":{"shasum":"ad3f373d9249ae324881565582bc90e152abbd68","tarball":"http://registry.npmjs.org/async/-/async-0.2.6.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.7","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.7","dist":{"shasum":"44c5ee151aece6c4bf5364cfc7c28fe4e58f18df","tarball":"http://registry.npmjs.org/async/-/async-0.2.7.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.8","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.8","dist":{"shasum":"ba1b3ffd1e6cdb1e999aca76ef6ecee8e7f55f53","tarball":"http://registry.npmjs.org/async/-/async-0.2.8.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.9","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.9","dist":{"shasum":"df63060fbf3d33286a76aaf6d55a2986d9ff8619","tarball":"http://registry.npmjs.org/async/-/async-0.2.9.tgz"},"_from":".","_npmVersion":"1.2.23","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.10","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.10","dist":{"shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","tarball":"http://registry.npmjs.org/async/-/async-0.2.10.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.3.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.3.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.3.0","dist":{"shasum":"6d2c543c25f514c602bb22916ac222a519290d5d","tarball":"http://registry.npmjs.org/async/-/async-0.3.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.4.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.4.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.4.0","dist":{"shasum":"208bba02850129dacc2bc3959e4126570ae80b74","tarball":"http://registry.npmjs.org/async/-/async-0.4.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.4.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.4.1","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.4.1","dist":{"shasum":"1985abade017df906bfaa8d77d424b25366b3a5b","tarball":"http://registry.npmjs.org/async/-/async-0.4.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.5.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.5.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.5.0","dist":{"shasum":"524bc1cf3ed2b6adc7f4a8c4987dd9c4809c764f","tarball":"http://registry.npmjs.org/async/-/async-0.5.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.6.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.6.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.6.0","dist":{"shasum":"025a31c8b1fb11e7481fa18dbdbc2bf2e434933a","tarball":"http://registry.npmjs.org/async/-/async-0.6.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.6.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.6.1","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.6.1","dist":{"shasum":"594fe360968fcdd2d7e0a6d95a874e4e92c7a26d","tarball":"http://registry.npmjs.org/async/-/async-0.6.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.6.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.6.2","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.6.2","dist":{"shasum":"41fd038a3812c0a8bc1842ecf08ba63eb0392bef","tarball":"http://registry.npmjs.org/async/-/async-0.6.2.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.7.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.7.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.7.0","dist":{"shasum":"4429e0e62f5de0a54f37458c49f0b897eb52ada5","tarball":"http://registry.npmjs.org/async/-/async-0.7.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.8.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.8.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.8.0","dist":{"shasum":"ee65ec77298c2ff1456bc4418a052d0f06435112","tarball":"http://registry.npmjs.org/async/-/async-0.8.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.9.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.9.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"homepage":"https://github.com/caolan/async","_id":"async@0.9.0","dist":{"shasum":"ac3613b1da9bed1b47510bb4651b8931e47146c7","tarball":"http://registry.npmjs.org/async/-/async-0.9.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.9.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"0.9.2","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0","lodash":">=2.4.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"nodeunit test/test-async.js"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"de3a16091d5125384eff4a54deb3998b13c3814c","homepage":"https://github.com/caolan/async#readme","_id":"async@0.9.2","_shasum":"aea74d5e61c1f899613bf64bda66d4c78f2fd17d","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.1","_npmUser":{"name":"beaugunderson","email":"beau@beaugunderson.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"}],"dist":{"shasum":"aea74d5e61c1f899613bf64bda66d4c78f2fd17d","tarball":"http://registry.npmjs.org/async/-/async-0.9.2.tgz"},"directories":{}},"1.0.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.0.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"~1.0.0","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","uglify-js":"1.2.x"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"cfa81645c9cb4011b23d1d1a445ad855762568e0","homepage":"https://github.com/caolan/async#readme","_id":"async@1.0.0","_shasum":"f8fc04ca3a13784ade9e1641af98578cfbd647a9","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"f8fc04ca3a13784ade9e1641af98578cfbd647a9","tarball":"http://registry.npmjs.org/async/-/async-1.0.0.tgz"},"directories":{}},"1.1.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.1.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"88906aa60d407e12185139e86204aa63aa6faf28","homepage":"https://github.com/caolan/async#readme","_id":"async@1.1.0","_shasum":"2b33ea3e87fc0c5ed624f9e31a9c902c022da09b","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"2b33ea3e87fc0c5ed624f9e31a9c902c022da09b","tarball":"http://registry.npmjs.org/async/-/async-1.1.0.tgz"},"directories":{}},"1.2.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.2.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"ff3bd90be6b862a11d0e4a11eb72a6985c26c5af","homepage":"https://github.com/caolan/async#readme","_id":"async@1.2.0","_shasum":"9029580f93d05a7cab24f502c84707ac3ef57b10","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.2","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"9029580f93d05a7cab24f502c84707ac3ef57b10","tarball":"http://registry.npmjs.org/async/-/async-1.2.0.tgz"},"directories":{}},"1.1.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.1.1","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"46cbdfd5324be57f15481bee32ad0fda507171b0","homepage":"https://github.com/caolan/async#readme","_id":"async@1.1.1","_shasum":"753cb13df043ff08d810e4418d312d646ee1bbea","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.2","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"753cb13df043ff08d810e4418d312d646ee1bbea","tarball":"http://registry.npmjs.org/async/-/async-1.1.1.tgz"},"directories":{}},"1.2.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.2.1","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"b66e85d1cca8c8056313253f22d18f571e7001d2","homepage":"https://github.com/caolan/async#readme","_id":"async@1.2.1","_shasum":"a4816a17cd5ff516dfa2c7698a453369b9790de0","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.2","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"a4816a17cd5ff516dfa2c7698a453369b9790de0","tarball":"http://registry.npmjs.org/async/-/async-1.2.1.tgz"},"directories":{}},"1.3.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.3.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.8.0","lodash":"^3.9.0","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"~2.4.0","xyz":"^0.5.0","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"71fa2638973dafd8761fa5457c472a312cc820fe","homepage":"https://github.com/caolan/async#readme","_id":"async@1.3.0","_shasum":"a6f1631e8a595a663496d0a5586bd12007d4871d","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"a6f1631e8a595a663496d0a5586bd12007d4871d","tarball":"http://registry.npmjs.org/async/-/async-1.3.0.tgz"},"directories":{}}},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"author":{"name":"Caolan McMahon"},"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"time":{"modified":"2015-06-29T16:14:01.899Z","created":"2010-12-19T16:41:51.765Z","0.1.0":"2010-12-19T16:41:51.765Z","0.1.1":"2010-12-19T16:41:51.765Z","0.1.2":"2010-12-19T16:41:51.765Z","0.1.3":"2010-12-19T16:41:51.765Z","0.1.4":"2010-12-19T16:41:51.765Z","0.1.5":"2010-12-19T16:41:51.765Z","0.1.6":"2010-12-19T16:41:51.765Z","0.1.7":"2010-12-19T16:41:51.765Z","0.1.8":"2011-01-18T09:56:53.975Z","0.1.9":"2011-04-27T20:48:08.634Z","0.1.10":"2011-09-19T04:40:01.573Z","0.1.11":"2011-10-14T17:07:28.752Z","0.1.12":"2011-10-14T17:19:19.452Z","0.1.13":"2011-10-29T22:33:52.448Z","0.1.14":"2011-10-29T22:40:14.486Z","0.1.15":"2011-11-01T23:05:01.415Z","0.1.16":"2012-02-13T04:56:23.926Z","0.1.17":"2012-02-27T02:40:58.997Z","0.1.18":"2012-02-27T16:51:02.109Z","0.1.19":"2012-05-24T06:51:06.109Z","0.1.20":"2012-05-24T06:53:39.997Z","0.1.21":"2012-05-24T07:16:16.753Z","0.1.22":"2012-05-30T18:26:44.821Z","0.1.23":"2012-10-04T13:52:08.947Z","0.2.0":"2013-02-04T11:38:08.943Z","0.2.1":"2013-02-04T11:52:34.110Z","0.2.2":"2013-02-05T15:55:23.202Z","0.2.3":"2013-02-06T12:48:37.415Z","0.2.4":"2013-02-07T17:26:22.236Z","0.2.5":"2013-02-10T22:42:00.162Z","0.2.6":"2013-03-03T11:29:52.674Z","0.2.7":"2013-04-09T20:50:04.712Z","0.2.8":"2013-05-01T10:04:07.430Z","0.2.9":"2013-05-28T07:50:48.795Z","0.2.10":"2014-01-23T16:23:57.271Z","0.3.0":"2014-03-28T17:16:05.640Z","0.4.0":"2014-03-28T17:25:12.580Z","0.4.1":"2014-03-30T11:42:54.298Z","0.5.0":"2014-03-30T11:46:31.381Z","0.6.0":"2014-03-30T12:04:32.275Z","0.6.1":"2014-03-30T20:35:32.550Z","0.6.2":"2014-03-31T09:56:20.294Z","0.7.0":"2014-04-07T09:07:34.303Z","0.8.0":"2014-04-29T15:26:34.028Z","0.9.0":"2014-05-16T10:20:22.247Z","0.9.2":"2015-05-19T08:45:57.198Z","1.0.0":"2015-05-20T23:40:05.710Z","1.1.0":"2015-06-01T07:59:05.989Z","1.2.0":"2015-06-02T20:56:04.526Z","1.1.1":"2015-06-08T01:26:56.285Z","1.2.1":"2015-06-08T01:43:33.907Z","1.3.0":"2015-06-29T16:14:01.899Z"},"users":{"thejh":true,"avianflu":true,"dylang":true,"ragingwind":true,"mvolkmann":true,"mikl":true,"linus":true,"pvorb":true,"dodo":true,"danielr":true,"suor":true,"dolphin278":true,"kurijov":true,"langpavel":true,"alexindigo":true,"fgribreau":true,"hughsk":true,"pid":true,"tylerstalder":true,"gillesruppert":true,"coiscir":true,"xenomuta":true,"jgoodall":true,"jswartwood":true,"drudge":true,"cpsubrian":true,"joeferner":true,"bencevans":true,"Scryptonite":true,"damonoehlman":true,"glukki":true,"tivac":true,"shama":true,"gimenete":true,"bryanburgers":true,"hij1nx":true,"sandeepmistry":true,"minddiaper":true,"fiws":true,"ljharb":true,"popeindustries":true,"dbrockman":true,"eknkc":true,"booyaa":true,"afc163":true,"maxmaximov":true,"meryn":true,"hfcorriez":true,"hyqhyq_3":true,"zonetti":true,"cmilhench":true,"cparker15":true,"jfromaniello":true,"ExxKA":true,"devoidfury":true,"cedrickchee":true,"niftymonkey":true,"paulj":true,"leesei":true,"jamesmgreene":true,"igorissen":true,"zaphod1984":true,"moonpyk":true,"joliva":true,"netroy":true,"chrisweb":true,"cuprobot":true,"tmaximini":true,"lupomontero":true,"john.pinch":true,"everywhere.js":true,"frankblizzard":true,"alanshaw":true,"forivall":true,"kubakubula":true,"doliveira":true,"dstokes":true,"pana":true,"irae":true,"mhaidarh":true,"feross":true,"tetsu3a":true,"qubyte":true,"darosh":true,"pragmadash":true,"denisix":true,"samuelrn":true,"tigefa":true,"tcrowe":true,"tpwk":true,"eins78":true,"sierrasoftworks":true,"yoavf":true,"irakli":true,"hypergeometric":true,"gammasoft":true,"youxiachai":true,"kahboom":true,"elisee":true,"soroush":true,"thomas-so":true,"shenaor":true,"dannynemer":true,"paulomcnally":true,"timur.shemsedinov":true,"slianfeng":true,"ettalea":true,"mananvaghasiya":true,"daniel7912":true,"themiddleman":true,"jacques":true,"kerimdzhanov":true,"jorgemsrs":true,"ivandimanov":true,"vegera":true,"aselzer":true,"kentcdodds":true,"putaoshu":true,"cilindrox":true,"bezoerb":true,"leodutra":true,"mpcref":true,"green_goo":true,"crimeminister":true,"rrobayna":true,"tengisb":true,"johannestegner":true,"iisii":true,"nate-wilkins":true,"hankeypancake":true,"sironfoot":true,"seldo":true,"skipzero":true,"owenlancaster":true,"esundahl":true,"zeusdeux":true,"ajduke":true,"darryl.west":true,"noder":true,"projectweekend":true,"alejonext":true,"evkline":true,"horaci":true,"h2non":true,"tarcio":true,"lucasbrigida":true,"roboterhund87":true,"nbu":true,"biggora":true,"junajan":true,"huoshaolin":true,"netzzwerg":true,"fmm":true,"redbe4rd":true,"codeshrew":true,"stonestyle":true,"caligone":true,"nswbmw":true,"landau":true,"progmer":true,"lucasjans":true,"gabeio":true,"beyoung":true,"davidhalldor":true,"cwonrails":true,"cocopas":true,"jayharris":true,"rckbt":true,"hut":true,"lobodpav":true,"alinex":true,"morishitter":true,"joost":true,"mmierswa":true,"skilbjo":true,"topcloud":true,"imzack":true,"runningtalus":true,"toogle":true,"gyoridavid":true,"humantriangle":true,"pospi":true,"sampsa":true,"z3a":true,"andre_de_souza":true,"wayneashleyberry":true,"vitaliks":true,"mikend":true,"gmturbo":true,"juriwiens":true,"ksnieck":true,"brentonhouse":true,"axelav":true,"jbdoumenjou":true,"shen-weizhong":true,"tmn":true,"gaborsar":true,"nromano":true,"chaowi":true,"jaredvogt":true,"timsmiths":true,"zckrs":true,"agent_9191":true,"djbrandl":true,"edalorzo":true,"jakub.knejzlik":true,"robertwarrengilmore":true,"trylobot":true,"oroce":true,"nak2k":true,"piron_t":true,"bmpvieira":true,"joshmu":true,"davidrlee":true,"adityabakle":true,"wilbeibi":true,"ramanshalupau":true,"dizlexik":true,"cbarrick":true,"janez89":true,"frk1705":true,"travelingtechguy":true,"thitinun":true,"shatting":true,"pilsy":true,"quadroid":true,"fanchangyong":true,"tchey":true,"arrc":true,"h02e56":true,"strangemother":true,"tmypawa":true,"ioncreature":true,"japh":true,"tonijz":true,"syzer":true,"nodecode":true,"dercoder":true,"leighakin":true,"matteospampani":true,"redmed":true,"s-konrad":true,"boustanihani":true,"ricardofbarros":true,"ryanthejuggler":true,"mswanson1524":true,"alnafie":true,"truongpv":true,"tjwebb":true,"daviddias":true,"nbarr":true,"ajohnstone":true,"atd":true,"tommyjs7":true,"omardelarosa":true,"rifaqat":true,"tsangint":true,"cortys":true,"mbildner":true,"yourhoneysky":true,"fill":true,"dennisgnl":true,"fampinheiro":true,"anilcs0405":true,"mathiasm":true,"benpptung":true,"thebearingedge":true,"leon.domingo":true,"hemphillcc":true,"jits":true,"tcauduro":true,"gorbiz":true,"guumaster":true,"brandonb927":true,"nornalbion":true,"loselovegirl":true,"lucag":true,"dilterporto":true,"wilk":true,"karmadude":true,"henryfour":true,"iaincollins":true,"louxiaojian":true,"jotadeveloper":true,"cyberien":true,"atheken":true,"lebowitz":true,"orion-":true,"thebespokepixel":true,"hecto932":true,"denmerc":true,"rpgreen":true,"colwob":true,"shieldax":true,"8bitalex":true,"memoramirez":true,"liushuping":true,"ciroque":true,"jugyo":true,"mjurincic":true,"flaviodelbianco":true,"thealphanerd":true,"samanthagmccormick":true,"trycatch9264":true,"tomi77":true,"lezuse":true,"oncletom":true,"kewin":true,"l0n9h02n":true,"sasquatch":true,"manny":true,"wxnet":true,"ruffle1986":true,"danestuckel":true,"krisbarrett":true,"tur-nr":true,"danielhuisman":true,"byossarian":true,"joshwyatt":true,"lellansin":true,"evandrix":true,"gautam.mehra762":true,"dominik.palo":true,"dgarlitt":true,"woverton":true,"legacy":true,"paulpdaniels":true,"congcong":true,"trusktr":true,"jcreigno":true,"jsolis":true,"avinashkoyyana":true,"nfd":true,"yvesm":true,"yoavniran":true,"silentcloud":true,"ivangaravito":true,"otrlennon":true,"terkelg":true,"jgubo":true,"jshkurti":true,"ryanj":true,"pensierinmusica":true,"mihaiv":true,"swak":true,"cath":true,"gdbtek":true,"adomvris":true,"hash-bang":true,"dearyhud":true,"themanspeaker":true,"shahzaib":true,"yerke":true,"gigerlin":true,"mastayoda":true,"cgfeel":true,"ashkyd":true,"schroeterm":true,"kasperstuck":true,"thorsson":true,"raksa":true,"patrick":true,"genediazjr":true,"hollobit":true,"rgraves90":true,"yeahoffline":true,"kenjisan4u":true,"tgohn":true,"tedyhy":true,"frakti":true,"minichiello":true,"johnnyeven":true,"tomas-sereikis":true,"fyockm":true,"dormi330":true,"eterna2":true,"cdubois":true,"mnemr":true,"yvanscher":true,"thomask33":true,"chehow":true,"chzhewl":true,"jezzalaycock":true,"pumych":true,"marsup":true,"javimaravillas":true,"sushant711":true,"robftw":true,"elliotchong":true,"f124275809":true,"wangnan0610":true,"lazycoder":true,"chrisayn":true,"uniquerockrz":true,"r3nya":true,"cellule":true,"leonning":true,"meme":true,"adamk":true,"salvatorelab":true,"kerry95":true,"stuligan":true,"dlpowless":true,"goblindegook":true,"davidcz":true,"nachbar90":true,"haeck":true,"pnevares":true,"markthethomas":true,"kikar":true,"blakedietz":true,"drdanryan":true,"saidgeek":true,"melvingruesbeck":true,"atonb117":true,"theodor.lindekaer":true,"vchouhan":true,"kulakowka":true,"schnarald":true,"samhwang1990":true,"lyaotian":true,"joeyblue":true,"kbeaulieu":true,"igorkirey":true,"sahilsk":true,"manxisuo":true,"mnlfischer":true,"dmitrymatveev":true,"alejcerro":true,"goodseller":true,"samhou1988":true,"tophsic":true,"docksteaderluke":true,"harutlc":true,"vboctor":true,"alexey_detr":true,"marianboda":true,"jerome.d.russ":true,"warapitiya":true,"snehlsen":true,"techmatt101":true,"nicolasmccurdy":true,"koulmomo":true,"d4nyll":true,"huarse":true,"savostin":true,"nadimix":true,"leodido":true,"tomjamescn":true,"anhulife":true,"jmm23":true,"jklassen":true,"airswoop1":true,"derickchou0129":true,"subchen":true,"simplyianm":true,"pengzhisun":true,"nickeljew":true,"dongxu":true,"risyasin":true,"brandonpapworth":true,"denistrofimov":true,"sc7639":true,"rbartoli":true,"shaneli":true,"rodrigo-medeiros":true,"swarnendu-dutta":true,"jmshahen":true,"junjiansyu":true,"itonyyo":true,"trotyl":true,"icirellik":true,"paeblits":true,"logeshpaul":true,"elgubenis":true,"alexkval":true,"aesinv":true,"arnold-almeida":true,"bruce313":true,"rcastro":true,"godion":true,"skozz":true,"zemgalis":true,"justintormey":true,"tonydieu":true,"gejiawen":true,"yvesroos":true,"yjsosa":true,"fabioelizandro":true,"tfentonz":true,"dac2205":true,"octoo":true,"tmcguire":true,"sbrajesh":true,"staraple":true,"micahjonas":true,"j3kz":true,"modao":true,"iamwiz":true,"joemdavis":true,"jasoncmcg":true,"richarddavenport":true,"xavierharrell":true,"chriscalo":true,"arunvsuresh":true,"dolymood":true,"allthingssmitty":true,"brandondoran":true,"jonatasnona":true,"tudou":true,"nwinant":true,"khaledkaram":true,"garek":true,"etsit":true,"l3au":true,"ezcabrera":true,"johnny.young":true,"subso":true,"rogier.spieker":true,"rgbz":true,"plitat":true,"favasconcelos":true,"buzuli":true,"nukisman":true,"battlemidget":true,"brandouellette":true,"till":true,"craneleeon":true,"rbecheras":true,"nikitka_m":true,"thepanuto":true,"justinshea":true,"luuhoangnam":true,"jasonlotito":true,"aclark64":true,"scottkay":true,"pigram":true,"kanongil":true,"vladan":true,"universemaster":true,"nanhualyq":true,"unboundev":true,"josuehenry14":true,"mjwilliams":true,"cestrensem":true,"zhen":true,"ddffx":true,"prabhash1785":true,"gaboesquivel":true,"bpatel":true,"davidchubbs":true,"adamkdean":true,"parkerproject":true,"confkit":true,"amoiseev":true,"buzzalderaan":true,"damianof":true,"ocd_lionel":true,"tylersmith.34":true,"princetoad":true,"tnagengast":true,"devmoreno":true,"karlbateman":true,"fvcproductions":true,"joshua.marquez":true,"freshlogic":true,"andrewpmckenzie":true,"jueb":true,"perrywu":true},"readme":"# Async.js\n\n[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async)\n[![NPM version](http://img.shields.io/npm/v/async.svg)](https://www.npmjs.org/package/async)\n[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master)\n[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [Node.js](http://nodejs.org) and installable via `npm install async`,\nit can also be used directly in the browser.\n\nAsync is also installable via:\n\n- [bower](http://bower.io/): `bower install async`\n- [component](https://github.com/component/component): `component install\n caolan/async`\n- [jam](http://jamjs.org/): `jam install async`\n- [spm](http://spmjs.io/): `spm install async`\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns\nfor asynchronous control flow (`parallel`, `series`, `waterfall`…). All these\nfunctions assume you follow the Node.js convention of providing a single\ncallback as the last argument of your `async` function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n\nasync.parallel([\n function(){ ... },\n function(){ ... }\n], callback);\n\nasync.series([\n function(){ ... },\n function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n\n### Synchronous iteration functions\n\nIf you get an error like `RangeError: Maximum call stack size exceeded.` or other stack overflow issues when using async, you are likely using a synchronous iterator. By *synchronous* we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with `async.nextTick` to start a new call stack on the next tick of the event loop.\n\nThis can also arise by accident if you callback early in certain cases:\n\n```js\nasync.eachSeries(hugeArray, function iterator(item, callback) {\n if (inCache(item)) {\n callback(null, cache[item]); // if many items are cached, you'll overflow\n } else {\n doSomeIO(item, callback);\n }\n}, function done() {\n //...\n});\n```\n\nJust change it to:\n\n```js\nasync.eachSeries(hugeArray, function iterator(item, callback) {\n if (inCache(item)) {\n async.setImmediate(function () {\n callback(null, cache[item]);\n });\n } else {\n doSomeIO(item, callback);\n //...\n```\n\nAsync guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with [`async.ensureAsync`](#ensureAsync) Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral.\n\nIf javascript's event loop is still a bit nebulous, check out [this article](http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/) or [this talk](http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html) for more detailed information about how it works.\n\n\n### Binding a context to an iterator\n\nThis section is really about `bind`, not about `async`. If you are wondering how to\nmake `async` execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n squareExponent: 2,\n square: function(number, callback){\n var result = Math.pow(number, this.squareExponent);\n setTimeout(function(){\n callback(null, result);\n }, 200);\n }\n};\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){\n // result is [NaN, NaN, NaN]\n // This fails because the `this.squareExponent` expression in the square\n // function is not evaluated in the context of AsyncSquaringLibrary, and is\n // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n // result is [1, 4, 9]\n // With the help of bind we can attach a context to the iterator before\n // passing it to async. Now the square function will be executed in its\n // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](https://github.com/caolan/async/blob/master/lib/async.js).\nAlternatively, you can install using Node Package Manager (`npm`):\n\n npm install async\n\nAs well as using Bower:\n\n bower install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Browser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5.\n\nUsage:\n\n```html\n\n\n```\n\n## Documentation\n\n### Collections\n\n* [`each`](#each)\n* [`eachSeries`](#eachSeries)\n* [`eachLimit`](#eachLimit)\n* [`forEachOf`](#forEachOf)\n* [`forEachOfSeries`](#forEachOfSeries)\n* [`forEachOfLimit`](#forEachOfLimit)\n* [`map`](#map)\n* [`mapSeries`](#mapSeries)\n* [`mapLimit`](#mapLimit)\n* [`filter`](#filter)\n* [`filterSeries`](#filterSeries)\n* [`reject`](#reject)\n* [`rejectSeries`](#rejectSeries)\n* [`reduce`](#reduce)\n* [`reduceRight`](#reduceRight)\n* [`detect`](#detect)\n* [`detectSeries`](#detectSeries)\n* [`sortBy`](#sortBy)\n* [`some`](#some)\n* [`every`](#every)\n* [`concat`](#concat)\n* [`concatSeries`](#concatSeries)\n\n### Control Flow\n\n* [`series`](#seriestasks-callback)\n* [`parallel`](#parallel)\n* [`parallelLimit`](#parallellimittasks-limit-callback)\n* [`whilst`](#whilst)\n* [`doWhilst`](#doWhilst)\n* [`until`](#until)\n* [`doUntil`](#doUntil)\n* [`during`](#during)\n* [`doDuring`](#doDuring)\n* [`forever`](#forever)\n* [`waterfall`](#waterfall)\n* [`compose`](#compose)\n* [`seq`](#seq)\n* [`applyEach`](#applyEach)\n* [`applyEachSeries`](#applyEachSeries)\n* [`queue`](#queue)\n* [`priorityQueue`](#priorityQueue)\n* [`cargo`](#cargo)\n* [`auto`](#auto)\n* [`retry`](#retry)\n* [`iterator`](#iterator)\n* [`times`](#times)\n* [`timesSeries`](#timesSeries)\n* [`timesLimit`](#timesLimit)\n\n### Utils\n\n* [`apply`](#apply)\n* [`nextTick`](#nextTick)\n* [`memoize`](#memoize)\n* [`unmemoize`](#unmemoize)\n* [`ensureAsync`](#ensureAsync)\n* [`constant`](#constant)\n* [`asyncify`](#asyncify)\n* [`wrapSync`](#wrapSync)\n* [`log`](#log)\n* [`dir`](#dir)\n* [`noConflict`](#noConflict)\n\n\n## Collections\n\n\n\n### each(arr, iterator, [callback])\n\nApplies the function `iterator` to each item in `arr`, in parallel.\nThe `iterator` is called with an item from the list, and a callback for when it\nhas finished. If the `iterator` passes an error to its `callback`, the main\n`callback` (for the `each` function) is immediately called with the error.\n\nNote, that since this function applies `iterator` to each item in parallel,\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err)` which must be called once it has\n completed. If no error has occurred, the `callback` should be run without\n arguments or with an explicit `null` argument. The array index is not passed\n to the iterator. If you need the index, use [`forEachOf`](#forEachOf).\n* `callback(err)` - *Optional* A callback which is called when all `iterator` functions\n have finished, or an error occurs.\n\n__Examples__\n\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n```js\n// assuming openFiles is an array of file names\n\nasync.each(openFiles, function(file, callback) {\n\n // Perform operation on file here.\n console.log('Processing file ' + file);\n\n if( file.length > 32 ) {\n console.log('This file name is too long');\n callback('File name too long');\n } else {\n // Do work to process file here\n console.log('File processed');\n callback();\n }\n}, function(err){\n // if any of the file processing produced an error, err would equal that error\n if( err ) {\n // One of the iterations produced an error.\n // All processing will now stop.\n console.log('A file failed to process');\n } else {\n console.log('All files have been processed successfully');\n }\n});\n```\n\n---------------------------------------\n\n\n\n### eachSeries(arr, iterator, [callback])\n\nThe same as [`each`](#each), only `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed.\nThis means the `iterator` functions will complete in order.\n\n\n---------------------------------------\n\n\n\n### eachLimit(arr, limit, iterator, [callback])\n\nThe same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously\nrunning at any time.\n\nNote that the items in `arr` are not processed in batches, so there is no guarantee that\nthe first `limit` `iterator` functions will complete before any others are started.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `limit` - The maximum number of `iterator`s to run at any time.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err)` which must be called once it has\n completed. If no error has occurred, the callback should be run without\n arguments or with an explicit `null` argument.\n* `callback(err)` - *Optional* A callback which is called when all `iterator` functions\n have finished, or an error occurs.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n\n\n\n### forEachOf(obj, iterator, [callback])\n\nLike `each`, except that it iterates over objects, and passes the key as the second argument to the iterator.\n\n__Arguments__\n\n* `obj` - An object or array to iterate over.\n* `iterator(item, key, callback)` - A function to apply to each item in `obj`.\nThe `key` is the item's key, or index in the case of an array. The iterator is\npassed a `callback(err)` which must be called once it has completed. If no\nerror has occurred, the callback should be run without arguments or with an\nexplicit `null` argument.\n* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs.\n\n__Example__\n\n```js\nvar obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"};\nvar configs = {};\n\nasync.forEachOf(obj, function (value, key, callback) {\n fs.readFile(__dirname + value, \"utf8\", function (err, data) {\n if (err) return callback(err);\n try {\n configs[key] = JSON.parse(data);\n } catch (e) {\n return callback(e);\n }\n callback();\n })\n}, function (err) {\n if (err) console.error(err.message);\n // configs is now a map of JSON data\n doSomethingWith(configs);\n})\n```\n\n---------------------------------------\n\n\n\n\n### forEachOfSeries(obj, iterator, [callback])\n\nLike [`forEachOf`](#forEachOf), except only one `iterator` is run at a time. The order of execution is not guaranteed for objects, but it will be guaranteed for arrays.\n\n---------------------------------------\n\n\n\n\n### forEachOfLimit(obj, limit, iterator, [callback])\n\nLike [`forEachOf`](#forEachOf), except the number of `iterator`s running at a given time is controlled by `limit`.\n\n\n---------------------------------------\n\n\n### map(arr, iterator, [callback])\n\nProduces a new array of values by mapping each value in `arr` through\nthe `iterator` function. The `iterator` is called with an item from `arr` and a\ncallback for when it has finished processing. Each of these callback takes 2 arguments:\nan `error`, and the transformed item from `arr`. If `iterator` passes an error to its\ncallback, the main `callback` (for the `map` function) is immediately called with the error.\n\nNote, that since this function applies the `iterator` to each item in parallel,\nthere is no guarantee that the `iterator` functions will complete in order.\nHowever, the results array will be in the same order as the original `arr`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, transformed)` which must be called once\n it has completed with an error (which can be `null`) and a transformed item.\n* `callback(err, results)` - *Optional* A callback which is called when all `iterator`\n functions have finished, or an error occurs. Results is an array of the\n transformed items from the `arr`.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n\n### mapSeries(arr, iterator, [callback])\n\nThe same as [`map`](#map), only the `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed.\nThe results array will be in the same order as the original.\n\n\n---------------------------------------\n\n\n### mapLimit(arr, limit, iterator, [callback])\n\nThe same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously\nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\nthe first `limit` `iterator` functions will complete before any others are started.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `limit` - The maximum number of `iterator`s to run at any time.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, transformed)` which must be called once\n it has completed with an error (which can be `null`) and a transformed item.\n* `callback(err, results)` - A callback which is called when all `iterator`\n calls have finished, or an error occurs. The result is an array of the\n transformed items from the original `arr`.\n\n__Example__\n\n```js\nasync.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n\n\n### filter(arr, iterator, [callback])\n\n__Alias:__ `select`\n\nReturns a new array of all the values in `arr` which pass an async truth test.\n_The callback for each `iterator` call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in `arr`.\n The `iterator` is passed a `callback(truthValue)`, which must be called with a\n boolean argument once it has completed.\n* `callback(results)` - *Optional* A callback which is called after all the `iterator`\n functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n\n\n### filterSeries(arr, iterator, [callback])\n\n__Alias:__ `selectSeries`\n\nThe same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed.\nThe results array will be in the same order as the original.\n\n---------------------------------------\n\n\n### reject(arr, iterator, [callback])\n\nThe opposite of [`filter`](#filter). Removes values that pass an `async` truth test.\n\n---------------------------------------\n\n\n### rejectSeries(arr, iterator, [callback])\n\nThe same as [`reject`](#reject), only the `iterator` is applied to each item in `arr`\nin series.\n\n\n---------------------------------------\n\n\n### reduce(arr, memo, iterator, [callback])\n\n__Aliases:__ `inject`, `foldl`\n\nReduces `arr` into a single value using an async `iterator` to return\neach successive step. `memo` is the initial state of the reduction.\nThis function only operates in series.\n\nFor performance reasons, it may make sense to split a call to this function into\na parallel map, and then use the normal `Array.prototype.reduce` on the results.\nThis function is for situations where each step in the reduction needs to be async;\nif you can get the data before reducing it, then it's probably a good idea to do so.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `memo` - The initial state of the reduction.\n* `iterator(memo, item, callback)` - A function applied to each item in the\n array to produce the next step in the reduction. The `iterator` is passed a\n `callback(err, reduction)` which accepts an optional error as its first\n argument, and the state of the reduction as the second. If an error is\n passed to the callback, the reduction is stopped and the main `callback` is\n immediately called with the error.\n* `callback(err, result)` - *Optional* A callback which is called after all the `iterator`\n functions have finished. Result is the reduced value.\n\n__Example__\n\n```js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n}, function(err, result){\n // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n\n### reduceRight(arr, memo, iterator, [callback])\n\n__Alias:__ `foldr`\n\nSame as [`reduce`](#reduce), only operates on `arr` in reverse order.\n\n\n---------------------------------------\n\n\n### detect(arr, iterator, [callback])\n\nReturns the first value in `arr` that passes an async truth test. The\n`iterator` is applied in parallel, meaning the first iterator to return `true` will\nfire the detect `callback` with that result. That means the result might not be\nthe first item in the original `arr` (in terms of order) that passes the test.\n\nIf order within the original `arr` is important, then look at [`detectSeries`](#detectSeries).\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in `arr`.\n The iterator is passed a `callback(truthValue)` which must be called with a\n boolean argument once it has completed. **Note: this callback does not take an error as its first argument.**\n* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns\n `true`, or after all the `iterator` functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value `undefined` if none passed. **Note: this callback does not take an error as its first argument.**\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n\n### detectSeries(arr, iterator, [callback])\n\nThe same as [`detect`](#detect), only the `iterator` is applied to each item in `arr`\nin series. This means the result is always the first in the original `arr` (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n\n### sortBy(arr, iterator, [callback])\n\nSorts a list by the results of running each `arr` value through an async `iterator`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, sortValue)` which must be called once it\n has completed with an error (which can be `null`) and a value to use as the sort\n criteria.\n* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`\n functions have finished, or an error occurs. Results is the items from\n the original `arr` sorted by the values returned by the `iterator` calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n}, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n});\n```\n\n__Sort Order__\n\nBy modifying the callback parameter the sorting order can be influenced:\n\n```js\n//ascending order\nasync.sortBy([1,9,3,5], function(x, callback){\n callback(null, x);\n}, function(err,result){\n //result callback\n} );\n\n//descending order\nasync.sortBy([1,9,3,5], function(x, callback){\n callback(null, x*-1); //<- x*-1 instead of x, turns the order around\n}, function(err,result){\n //result callback\n} );\n```\n\n---------------------------------------\n\n\n### some(arr, iterator, [callback])\n\n__Alias:__ `any`\n\nReturns `true` if at least one element in the `arr` satisfies an async test.\n_The callback for each iterator call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`. Once any iterator\ncall returns `true`, the main `callback` is immediately called.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in the array\n in parallel. The iterator is passed a `callback(truthValue)`` which must be\n called with a boolean argument once it has completed.\n* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns\n `true`, or after all the iterator functions have finished. Result will be\n either `true` or `false` depending on the values of the async tests.\n\n **Note: the callbacks do not take an error as their first argument.**\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n\n### every(arr, iterator, [callback])\n\n__Alias:__ `all`\n\nReturns `true` if every element in `arr` satisfies an async test.\n_The callback for each `iterator` call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in the array\n in parallel. The iterator is passed a `callback(truthValue)` which must be\n called with a boolean argument once it has completed.\n* `callback(result)` - *Optional* A callback which is called after all the `iterator`\n functions have finished. Result will be either `true` or `false` depending on\n the values of the async tests.\n\n **Note: the callbacks do not take an error as their first argument.**\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n\n### concat(arr, iterator, [callback])\n\nApplies `iterator` to each item in `arr`, concatenating the results. Returns the\nconcatenated list. The `iterator`s are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of `arr` passed to the `iterator` function.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, results)` which must be called once it\n has completed with an error (which can be `null`) and an array of results.\n* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`\n functions have finished, or an error occurs. Results is an array containing\n the concatenated results of the `iterator` function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n\n### concatSeries(arr, iterator, [callback])\n\nSame as [`concat`](#concat), but executes in series instead of parallel.\n\n\n## Control Flow\n\n\n### series(tasks, [callback])\n\nRun the functions in the `tasks` array in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run, and `callback` is immediately called with the value of the error.\nOtherwise, `callback` receives an array of results when `tasks` have completed.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function, and the results will be passed to the final `callback` as an object\ninstead of an array. This can be a more readable way of handling results from\n[`series`](#series).\n\n**Note** that while many implementations preserve the order of object properties, the\n[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\nexplicitly states that\n\n> The mechanics and order of enumerating the properties is not specified.\n\nSo if you rely on the order in which your series of functions are executed, and want\nthis to work on all platforms, consider using an array.\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run, each function is passed\n a `callback(err, result)` it must call on completion with an error `err` (which can\n be `null`) and an optional `result` value.\n* `callback(err, results)` - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all\n the result arguments passed to the `task` callbacks.\n\n__Example__\n\n```js\nasync.series([\n function(callback){\n // do some stuff ...\n callback(null, 'one');\n },\n function(callback){\n // do some more stuff ...\n callback(null, 'two');\n }\n],\n// optional callback\nfunction(err, results){\n // results is now equal to ['one', 'two']\n});\n\n\n// an example using an object instead of an array\nasync.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n\n### parallel(tasks, [callback])\n\nRun the `tasks` array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main `callback` is immediately called with the value of the error.\nOnce the `tasks` have completed, the results are passed to the final `callback` as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final `callback` as an object\ninstead of an array. This can be a more readable way of handling results from\n[`parallel`](#parallel).\n\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run. Each function is passed\n a `callback(err, result)` which it must call on completion with an error `err`\n (which can be `null`) and an optional `result` value.\n* `callback(err, results)` - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all\n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, 'one');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, 'two');\n }, 100);\n }\n],\n// optional callback\nfunction(err, results){\n // the results array will equal ['one','two'] even though\n // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n\n### parallelLimit(tasks, limit, [callback])\n\nThe same as [`parallel`](#parallel), only `tasks` are executed in parallel\nwith a maximum of `limit` tasks executing at any time.\n\nNote that the `tasks` are not executed in batches, so there is no guarantee that\nthe first `limit` tasks will complete before any others are started.\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run, each function is passed\n a `callback(err, result)` it must call on completion with an error `err` (which can\n be `null`) and an optional `result` value.\n* `limit` - The maximum number of `tasks` to run at any time.\n* `callback(err, results)` - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all\n the result arguments passed to the `task` callbacks.\n\n---------------------------------------\n\n\n### whilst(test, fn, callback)\n\nRepeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped,\nor an error occurs.\n\n__Arguments__\n\n* `test()` - synchronous truth test to perform before each execution of `fn`.\n* `fn(callback)` - A function which is called each time `test` passes. The function is\n passed a `callback(err)`, which must be called once it has completed with an\n optional `err` argument.\n* `callback(err)` - A callback which is called after the test fails and repeated\n execution of `fn` has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n);\n```\n\n---------------------------------------\n\n\n### doWhilst(fn, test, callback)\n\nThe post-check version of [`whilst`](#whilst). To reflect the difference in\nthe order of operations, the arguments `test` and `fn` are switched.\n\n`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n\n### until(test, fn, callback)\n\nRepeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped,\nor an error occurs.\n\nThe inverse of [`whilst`](#whilst).\n\n---------------------------------------\n\n\n### doUntil(fn, test, callback)\n\nLike [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n\n### during(test, fn, callback)\n\nLike [`whilst`](#whilst), except the `test` is an asynchronous function that is passed a callback in the form of `function (err, truth)`. If error is passed to `test` or `fn`, the main callback is immediately called with the value of the error.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.during(\n function (callback) { \n return callback(null, count < 5); \n },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n);\n```\n\n---------------------------------------\n\n\n### doDuring(fn, test, callback)\n\nThe post-check version of [`during`](#during). To reflect the difference in\nthe order of operations, the arguments `test` and `fn` are switched.\n\nAlso a version of [`doWhilst`](#doWhilst) with asynchronous `test` function.\n\n---------------------------------------\n\n\n### forever(fn, [errback])\n\nCalls the asynchronous function `fn` with a callback parameter that allows it to\ncall itself again, in series, indefinitely.\n\nIf an error is passed to the callback then `errback` is called with the\nerror, and execution stops, otherwise it will never be called.\n\n```js\nasync.forever(\n function(next) {\n // next is suitable for passing to things that need a callback(err [, whatever]);\n // it will result in this function being called again.\n },\n function(err) {\n // if next is called with a value in its first parameter, it will appear\n // in here as 'err', and execution will stop.\n }\n);\n```\n\n---------------------------------------\n\n\n### waterfall(tasks, [callback])\n\nRuns the `tasks` array of functions in series, each passing their results to the next in\nthe array. However, if any of the `tasks` pass an error to their own callback, the\nnext function is not executed, and the main `callback` is immediately called with\nthe error.\n\n__Arguments__\n\n* `tasks` - An array of functions to run, each function is passed a\n `callback(err, result1, result2, ...)` it must call on completion. The first\n argument is an error (which can be `null`) and any further arguments will be\n passed as arguments in order to the next task.\n* `callback(err, [results])` - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([\n function(callback) {\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback) {\n // arg1 now equals 'one' and arg2 now equals 'two'\n callback(null, 'three');\n },\n function(arg1, callback) {\n // arg1 now equals 'three'\n callback(null, 'done');\n }\n], function (err, result) {\n // result now equals 'done'\n});\n```\n\n---------------------------------------\n\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions `f()`, `g()`, and `h()` would produce the result of\n`f(g(h()))`, only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* `functions...` - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n setTimeout(function () {\n callback(null, n + 1);\n }, 10);\n}\n\nfunction mul3(n, callback) {\n setTimeout(function () {\n callback(null, n * 3);\n }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n // result now equals 15\n});\n```\n\n---------------------------------------\n\n### seq(fn1, fn2...)\n\nVersion of the compose function that is more natural to read.\nEach function consumes the return value of the previous function.\nIt is the equivalent of [`compose`](#compose) with the arguments reversed.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* `functions...` - the asynchronous functions to compose\n\n\n__Example__\n\n```js\n// Requires lodash (or underscore), express3 and dresende's orm2.\n// Part of an app, that fetches cats of the logged user.\n// This example uses `seq` function to avoid overnesting and error\n// handling clutter.\napp.get('/cats', function(request, response) {\n var User = request.models.User;\n async.seq(\n _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data))\n function(user, fn) {\n user.getCats(fn); // 'getCats' has signature (callback(err, data))\n }\n )(req.session.user_id, function (err, cats) {\n if (err) {\n console.error(err);\n response.json({ status: 'error', message: err.message });\n } else {\n response.json({ status: 'ok', message: 'Cats found', data: cats });\n }\n });\n});\n```\n\n---------------------------------------\n\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling\n`callback` after all functions have completed. If you only provide the first\nargument, then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* `fns` - the asynchronous functions to all call with the same arguments\n* `args...` - any number of separate arguments to pass to the function\n* `callback` - the final argument should be the callback, called when all\n functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// partial application example:\nasync.each(\n buckets,\n async.applyEach([enableSearch, updateSchema]),\n callback\n);\n```\n\n---------------------------------------\n\n\n### applyEachSeries(arr, args..., callback)\n\nThe same as [`applyEach`](#applyEach) only the functions are applied in series.\n\n---------------------------------------\n\n\n### queue(worker, [concurrency])\n\nCreates a `queue` object with the specified `concurrency`. Tasks added to the\n`queue` are processed in parallel (up to the `concurrency` limit). If all\n`worker`s are in progress, the task is queued until one becomes available.\nOnce a `worker` completes a `task`, that `task`'s callback is called.\n\n__Arguments__\n\n* `worker(task, callback)` - An asynchronous function for processing a queued\n task, which must call its `callback(err)` argument when finished, with an\n optional `error` as an argument. If you want to handle errors from an individual task, pass a callback to `q.push()`.\n* `concurrency` - An `integer` for determining how many `worker` functions should be\n run in parallel. If omitted, the concurrency defaults to `1`. If the concurrency is `0`, an error is thrown.\n\n__Queue objects__\n\nThe `queue` object returned by this function has the following properties and\nmethods:\n\n* `length()` - a function returning the number of items waiting to be processed.\n* `started` - a function returning whether or not any items have been pushed and processed by the queue\n* `running()` - a function returning the number of items currently being processed.\n* `idle()` - a function returning false if there are items waiting or being processed, or true if not.\n* `concurrency` - an integer for determining how many `worker` functions should be\n run in parallel. This property can be changed after a `queue` is created to\n alter the concurrency on-the-fly.\n* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once\n the `worker` has finished processing the task. Instead of a single task, a `tasks` array\n can be submitted. The respective callback is used for every task in the list.\n* `unshift(task, [callback])` - add a new task to the front of the `queue`.\n* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit,\n and further tasks will be queued.\n* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`.\n* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`.\n* `paused` - a boolean for determining whether the queue is in a paused state\n* `pause()` - a function that pauses the processing of tasks until `resume()` is called.\n* `resume()` - a function that resumes the processing of queued tasks when the queue is paused.\n* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle.\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing item');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n```\n\n\n---------------------------------------\n\n\n### priorityQueue(worker, concurrency)\n\nThe same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects:\n\n* `push(task, priority, [callback])` - `priority` should be a number. If an array of\n `tasks` is given, all tasks will be assigned the same priority.\n* The `unshift` method was removed.\n\n---------------------------------------\n\n\n### cargo(worker, [payload])\n\nCreates a `cargo` object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the `payload` limit). If the\n`worker` is in progress, the task is queued until it becomes available. Once\nthe `worker` has completed some tasks, each callback of those tasks is called.\nCheck out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work.\n\nWhile [queue](#queue) passes only one task to one of a group of workers\nat a time, cargo passes an array of tasks to a single worker, repeating\nwhen the worker is finished.\n\n__Arguments__\n\n* `worker(tasks, callback)` - An asynchronous function for processing an array of\n queued tasks, which must call its `callback(err)` argument when finished, with\n an optional `err` argument.\n* `payload` - An optional `integer` for determining how many tasks should be\n processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe `cargo` object returned by this function has the following properties and\nmethods:\n\n* `length()` - A function returning the number of items waiting to be processed.\n* `payload` - An `integer` for determining how many tasks should be\n process per round. This property can be changed after a `cargo` is created to\n alter the payload on-the-fly.\n* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called\n once the `worker` has finished processing the task. Instead of a single task, an array of `tasks`\n can be submitted. The respective callback is used for every task in the list.\n* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued.\n* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`.\n* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`.\n* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue)\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n for(var i=0; i\n### auto(tasks, [callback])\n\nDetermines the best order for running the functions in `tasks`, based on their\nrequirements. Each function can optionally depend on other functions being completed\nfirst, and each function is run as soon as its requirements are satisfied.\n\nIf any of the functions pass an error to their callback, it will not\ncomplete (so any other functions depending on it will not run), and the main\n`callback` is immediately called with the error. Functions also receive an\nobject containing the results of functions which have completed so far.\n\nNote, all functions are called with a `results` object as a second argument,\nso it is unsafe to pass functions in the `tasks` object which cannot handle the\nextra argument.\n\nFor example, this snippet of code:\n\n```js\nasync.auto({\n readData: async.apply(fs.readFile, 'data.txt', 'utf-8')\n}, callback);\n```\n\nwill have the effect of calling `readFile` with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to `readFile` in a function which does not forward the\n`results` object:\n\n```js\nasync.auto({\n readData: function(cb, results){\n fs.readFile('data.txt', 'utf-8', cb);\n }\n}, callback);\n```\n\n__Arguments__\n\n* `tasks` - An object. Each of its properties is either a function or an array of\n requirements, with the function itself the last item in the array. The object's key\n of a property serves as the name of the task defined by that property,\n i.e. can be used when specifying requirements for other tasks.\n The function receives two arguments: (1) a `callback(err, result)` which must be\n called when finished, passing an `error` (which can be `null`) and the result of\n the function's execution, and (2) a `results` object, containing the results of\n the previously executed functions.\n* `callback(err, results)` - An optional callback which is called when all the\n tasks have been completed. It receives the `err` argument if any `tasks`\n pass an error to their callback. Results are always returned; however, if\n an error occurs, no further `tasks` will be performed, and the results\n object will only contain partial results.\n\n\n__Example__\n\n```js\nasync.auto({\n get_data: function(callback){\n console.log('in get_data');\n // async code to get some data\n callback(null, 'data', 'converted to array');\n },\n make_folder: function(callback){\n console.log('in make_folder');\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n callback(null, 'folder');\n },\n write_file: ['get_data', 'make_folder', function(callback, results){\n console.log('in write_file', JSON.stringify(results));\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, 'filename');\n }],\n email_link: ['write_file', function(callback, results){\n console.log('in email_link', JSON.stringify(results));\n // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\n callback(null, {'file':results.write_file, 'email':'user@example.com'});\n }]\n}, function(err, results) {\n console.log('err = ', err);\n console.log('results = ', results);\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n function(callback){\n console.log('in get_data');\n // async code to get some data\n callback(null, 'data', 'converted to array');\n },\n function(callback){\n console.log('in make_folder');\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n callback(null, 'folder');\n }\n],\nfunction(err, results){\n async.series([\n function(callback){\n console.log('in write_file', JSON.stringify(results));\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n results.push('filename');\n callback(null);\n },\n function(callback){\n console.log('in email_link', JSON.stringify(results));\n // once the file is written let's email a link to it...\n callback(null, {'file':results.pop(), 'email':'user@example.com'});\n }\n ]);\n});\n```\n\nFor a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding\nnew tasks much easier (and the code more readable).\n\n\n---------------------------------------\n\n\n### retry([opts = {times: 5, interval: 0}| 5], task, [callback])\n\nAttempts to get a successful response from `task` no more than `times` times before\nreturning an error. If the task is successful, the `callback` will be passed the result\nof the successful task. If all attempts fail, the callback will be passed the error and\nresult (if any) of the final attempt.\n\n__Arguments__\n\n* `opts` - Can be either an object with `times` and `interval` or a number. `times` is how many attempts should be made before giving up. `interval` is how long to wait inbetween attempts. Defaults to {times: 5, interval: 0}\n * if a number is passed in it sets `times` only (with `interval` defaulting to 0).\n* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)`\n which must be called when finished, passing `err` (which can be `null`) and the `result` of\n the function's execution, and (2) a `results` object, containing the results of\n the previously executed functions (if nested inside another control flow).\n* `callback(err, results)` - An optional callback which is called when the\n task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`.\n\nThe [`retry`](#retry) function can be used as a stand-alone control flow by passing a\ncallback, as shown below:\n\n```js\nasync.retry(3, apiMethod, function(err, result) {\n // do something with the result\n});\n```\n\n```js\nasync.retry({times: 3, interval: 200}, apiMethod, function(err, result) {\n // do something with the result\n});\n```\n\nIt can also be embeded within other control flow functions to retry individual methods\nthat are not as reliable, like this:\n\n```js\nasync.auto({\n users: api.getUsers.bind(api),\n payments: async.retry(3, api.getPayments.bind(api))\n}, function(err, results) {\n // do something with the results\n});\n```\n\n\n---------------------------------------\n\n\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the `tasks` array,\nreturning a continuation to call the next one after that. It's also possible to\n“peek” at the next iterator with `iterator.next()`.\n\nThis function is used internally by the `async` module, but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* `tasks` - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied.\n\nUseful as a shorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n async.apply(fs.writeFile, 'testfile1', 'test1'),\n async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n\n\n### nextTick(callback), setImmediate(callback)\n\nCalls `callback` on a later loop around the event loop. In Node.js this just\ncalls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`\nif available, otherwise `setTimeout(callback, 0)`, which means other higher priority\nevents may precede the execution of `callback`.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* `callback` - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n\n### times(n, iterator, [callback])\n\nCalls the `iterator` function `n` times, and accumulates results in the same manner\nyou would use with [`map`](#map).\n\n__Arguments__\n\n* `n` - The number of times to run the function.\n* `iterator` - The function to call `n` times.\n* `callback` - see [`map`](#map)\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n callback(null, {\n id: 'user' + id\n })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n createUser(n, function(err, user) {\n next(err, user)\n })\n}, function(err, users) {\n // we should now have 5 users\n});\n```\n\n\n### timesSeries(n, iterator, [callback])\n\nThe same as [`times`](#times), only the iterator is applied in series.\nThe next `iterator` is only called once the current one has completed.\nThe results array will be in the same order as the original.\n\n\n### timesLimit(n, limit, iterator, [callback])\n\nThe same as [`times`](#times), except a maximum of `limit` iterators are run at a given time, similar to [`mapLimit`](#mapLimit).\n\n\n## Utils\n\n\n### memoize(fn, [hasher])\n\nCaches the results of an `async` function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nIf no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* `fn` - The function to proxy and cache results from.\n* `hasher` - An optional function for generating a custom hash for storing\n results. It has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n // callback\n});\n```\n\n\n### unmemoize(fn)\n\nUndoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized\nform. Handy for testing.\n\n__Arguments__\n\n* `fn` - the memoized function\n\n---------------------------------------\n\n\n### ensureAsync(fn)\n\nWrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows (`RangeError: Maximum call stack size exceeded`) and generally keeping [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) contained.\n\n__Arguments__\n\n* `fn` - an async function, one that expects a node-style callback as its last argument\n\nReturns a wrapped function with the exact same call signature as the function passed in.\n\n__Example__\n\n```js\nfunction sometimesAsync(arg, callback) {\n if (cache[arg]) {\n return callback(null, cache[arg]); // this would be synchronous!!\n } else {\n doSomeIO(arg, callback); // this IO would be asynchronous\n }\n}\n\n// this has a risk of stack overflows if many results are cached in a row\nasync.mapSeries(args, sometimesAsync, done);\n\n// this will defer sometimesAsync's callback if necessary,\n// preventing stack overflows\nasync.mapSeries(args, async.ensureAsync(sometimesAsync), done);\n\n```\n\n---------------------------------------\n\n\n### constant(values...)\n\nReturns a function that when called, calls-back with the values provided. Useful as the first function in a `waterfall`, or for plugging values in to `auto`.\n\n__Example__\n\n```js\nasync.waterfall([\n async.constant(42),\n function (value, next) {\n // value === 42\n },\n //...\n], callback);\n\nasync.waterfall([\n async.constant(filename, \"utf8\"),\n fs.readFile,\n function (fileData, next) {\n //...\n }\n //...\n], callback);\n\nasync.auto({\n hostname: async.constant(\"https://server.net/\"),\n port: findFreePort,\n launchServer: [\"hostname\", \"port\", function (cb, options) {\n startServer(options, cb);\n }],\n //...\n}, callback);\n\n```\n\n---------------------------------------\n\n\n\n### asyncify(func)\n\n*Alias: wrapSync*\n\nTake a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback.\n\n__Example__\n\n```js\nasync.waterfall([\n async.apply(fs.readFile, filename, \"utf8\"),\n async.asyncify(JSON.parse),\n function (data, next) {\n // data is the result of parsing the text.\n // If there was a parsing error, it would have been caught.\n }\n], callback)\n```\n\n---------------------------------------\n\n\n### log(function, arguments)\n\nLogs the result of an `async` function to the `console`. Only works in Node.js or\nin browsers that support `console.log` and `console.error` (such as FF and Chrome).\nIf multiple arguments are returned from the async function, `console.log` is\ncalled on each argument in order.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n\n### dir(function, arguments)\n\nLogs the result of an `async` function to the `console` using `console.dir` to\ndisplay the properties of the resulting object. Only works in Node.js or\nin browsers that support `console.dir` and `console.error` (such as FF and Chrome).\nIf multiple arguments are returned from the async function, `console.dir` is\ncalled on each argument in order.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n\n### noConflict()\n\nChanges the value of `async` back to its original value, returning a reference to the\n`async` object.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/caolan/async/issues"},"homepage":"https://github.com/caolan/async#readme","keywords":["async","callback","utility","module"],"license":"MIT","_attachments":{},"_etag":"\"4L77IB3G4SJ394L9NKAE5R51R\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/atom-space-pen-views/.cache.json b/atom/.apm/registry.npmjs.org/atom-space-pen-views/.cache.json new file mode 100644 index 0000000..9ce4b39 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/atom-space-pen-views/.cache.json @@ -0,0 +1 @@ +{"_id":"atom-space-pen-views","_rev":"58-a2a86ef86272134f513b8fdbc16ef677","name":"atom-space-pen-views","description":"Atom SpacePen views that used to live in core.","dist-tags":{"latest":"2.0.5"},"versions":{"0.1.0":{"name":"atom-space-pen-views","version":"0.1.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"29922807a4258c6d557e467f34058c096bb2eb60","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.1.0","_shasum":"6a8541ac5611342fe3bd01470d0cabc939393681","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"6a8541ac5611342fe3bd01470d0cabc939393681","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.1.0.tgz"},"directories":{}},"0.2.0":{"name":"atom-space-pen-views","version":"0.2.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"035792c8593c2f706b310b6d955e18768417ae44","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.2.0","_shasum":"773624b339095a9c863456fbcf4cae178c4d4c2d","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"773624b339095a9c863456fbcf4cae178c4d4c2d","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.2.0.tgz"},"directories":{}},"0.3.0":{"name":"atom-space-pen-views","version":"0.3.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"5e3aba1b73fd45dc3e6f6c1acb0fad06b9331e6e","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.3.0","_shasum":"2263070c26f7915aa52fd874a2283e328597e624","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"2263070c26f7915aa52fd874a2283e328597e624","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.3.0.tgz"},"directories":{}},"0.4.0":{"name":"atom-space-pen-views","version":"0.4.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"d0aa5125bfa38cce2c2d8fad86a48c80ad2bdd07","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.4.0","_shasum":"9693e927fe2e0ab7ff07322d0ee78b9b57d6fc03","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"9693e927fe2e0ab7ff07322d0ee78b9b57d6fc03","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.4.0.tgz"},"directories":{}},"0.5.0":{"name":"atom-space-pen-views","version":"0.5.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"4ce324415be18d81c2f06958abd98a659e018ac9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.5.0","_shasum":"dda2aca056bf103fda54627788a63142ccffed62","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"dda2aca056bf103fda54627788a63142ccffed62","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.5.0.tgz"},"directories":{}},"0.6.0":{"name":"atom-space-pen-views","version":"0.6.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"4d61d5ce459a7ba072f02974d1d148080363969d","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.6.0","_shasum":"d931e3c683a9b0e157a693df3dde537d8f8c1b06","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"d931e3c683a9b0e157a693df3dde537d8f8c1b06","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.6.0.tgz"},"directories":{}},"0.7.0":{"name":"atom-space-pen-views","version":"0.7.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"331cf48490a698e265686ac10031ee9f34f29742","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.7.0","_shasum":"1f2a948d7e942bd0a53d9d60cf59a10d2f7a9b32","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"1f2a948d7e942bd0a53d9d60cf59a10d2f7a9b32","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.7.0.tgz"},"directories":{}},"0.8.0":{"name":"atom-space-pen-views","version":"0.8.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.0.2"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"776c0eb0f9b960e1bba4b2ba66f0a4dcfab401b9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.8.0","_shasum":"7cfa29e38bef0390c70d9fb6e87939fa2b43d9e7","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"7cfa29e38bef0390c70d9fb6e87939fa2b43d9e7","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.8.0.tgz"},"directories":{}},"0.9.0":{"name":"atom-space-pen-views","version":"0.9.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"9aa6450e515b1c2aeffc459156e9a08073cbd288","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.9.0","_shasum":"5a99ee4ac1608db8d92787e591199b2d5a4fa39d","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"5a99ee4ac1608db8d92787e591199b2d5a4fa39d","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.9.0.tgz"},"directories":{}},"0.10.0":{"name":"atom-space-pen-views","version":"0.10.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"bf496a8fa1ba7e88a7c590f4790c148bd861db29","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.10.0","_shasum":"3efed9951f8e27ecd9da4b7c6a53d3f1e47f654e","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"3efed9951f8e27ecd9da4b7c6a53d3f1e47f654e","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.10.0.tgz"},"directories":{}},"0.11.0":{"name":"atom-space-pen-views","version":"0.11.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"d3244a2a9f39031a73e70372ecd2fd64a200f11f","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.11.0","_shasum":"4963b92de3a13fc8172bb5ac5437e31e24346b6f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"4963b92de3a13fc8172bb5ac5437e31e24346b6f","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.11.0.tgz"},"directories":{}},"0.13.0":{"name":"atom-space-pen-views","version":"0.13.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"742768be175def710419462b7b7d1785bb99055f","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.13.0","_shasum":"264c63d3667fa39bbeff5b354dae8da4a6f1fa17","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"264c63d3667fa39bbeff5b354dae8da4a6f1fa17","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.13.0.tgz"},"directories":{}},"0.14.0":{"name":"atom-space-pen-views","version":"0.14.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"be449b1435bafa5ed458d6517de5c5f28c97fbcb","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.14.0","_shasum":"55251cfee4611949a976f0bcae75b2fc89064d11","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"55251cfee4611949a976f0bcae75b2fc89064d11","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.14.0.tgz"},"directories":{}},"0.15.0":{"name":"atom-space-pen-views","version":"0.15.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"38d1b933d8c287f429e25494e2f82d790443a2a3","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.15.0","_shasum":"594a656d4593c1af2062a97f1219005d8d311021","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"594a656d4593c1af2062a97f1219005d8d311021","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.15.0.tgz"},"directories":{}},"0.16.0":{"name":"atom-space-pen-views","version":"0.16.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"65ba384aa1094c0ac07a89f524ae0daa40dc1a87","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.16.0","_shasum":"73ce03fb582e9af608c47499ba84e63a9ce844e3","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"73ce03fb582e9af608c47499ba84e63a9ce844e3","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.16.0.tgz"},"directories":{}},"0.17.0":{"name":"atom-space-pen-views","version":"0.17.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"50a16d5424f6564146957e84e4a66d8465ff345c","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.17.0","_shasum":"575acc87821cf55b0584f4cec0e44f1323f49cf2","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"575acc87821cf55b0584f4cec0e44f1323f49cf2","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.17.0.tgz"},"directories":{}},"0.18.0":{"name":"atom-space-pen-views","version":"0.18.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.2.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c4dcae1e5c0591665a99a453ced1a215acf0d878","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.18.0","_shasum":"d7e372e1c327bb35ef5496c8adddfa8a242d71eb","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"d7e372e1c327bb35ef5496c8adddfa8a242d71eb","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.18.0.tgz"},"directories":{}},"0.19.0":{"name":"atom-space-pen-views","version":"0.19.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.2.2"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"8da5806990d2c6fce6e1d02b4842ec38c2767c0c","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.19.0","_shasum":"31ddba42745fa63ddc6f23cefc3bd1aae281bc8f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"31ddba42745fa63ddc6f23cefc3bd1aae281bc8f","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.19.0.tgz"},"directories":{}},"0.20.0":{"name":"atom-space-pen-views","version":"0.20.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.2.2"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"cbb2f0d2e1b3295f5a56388fdd61850ccf1b531f","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.20.0","_shasum":"552401bc4324a85772b20e96aac0a4650be937de","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"552401bc4324a85772b20e96aac0a4650be937de","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.20.0.tgz"},"directories":{}},"0.21.0":{"name":"atom-space-pen-views","version":"0.21.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.3.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c9d2dff2aa5d3acc89b5ab16ad2b69721c6d0034","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.21.0","_shasum":"4a281b0c795e4e06c9728fb7470d2e5314a50424","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"4a281b0c795e4e06c9728fb7470d2e5314a50424","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.21.0.tgz"},"directories":{}},"1.0.0":{"name":"atom-space-pen-views","version":"1.0.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^4.3.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"728ed56a53c322336e8f9ca0953863057d3c46e6","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@1.0.0","_shasum":"3bc6d101155c155cf5699b08a792c0521cee03cb","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"3bc6d101155c155cf5699b08a792c0521cee03cb","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-1.0.0.tgz"},"directories":{}},"2.0.0":{"name":"atom-space-pen-views","version":"2.0.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"f2cebf47e493a22cc1f7041f13ec305978e35719","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.0","_shasum":"d77f43d9e136a207a7c4f19e1fe5a3e80c671826","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"d77f43d9e136a207a7c4f19e1fe5a3e80c671826","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.0.tgz"},"directories":{}},"2.0.1":{"name":"atom-space-pen-views","version":"2.0.1","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dd6e395ec8352ecd21aca8e36ac19f3dfff15ada","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.1","_shasum":"0a86e99d434c38ceaf7c35bb9036e8119b926f9a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"0a86e99d434c38ceaf7c35bb9036e8119b926f9a","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.1.tgz"},"directories":{}},"2.0.2":{"name":"atom-space-pen-views","version":"2.0.2","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c02b4aa42e8ebb0146ec6bb9c2808d21ea5afa93","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.2","_shasum":"b1fc5ec4e73964fad126df153980c15223a4b6ea","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"b1fc5ec4e73964fad126df153980c15223a4b6ea","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.2.tgz"},"directories":{}},"2.0.3":{"name":"atom-space-pen-views","version":"2.0.3","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dc797a4547ca94429bdec8fd1ad3f573ae179f80","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.3","_shasum":"1310bd62459d7694a5939ff5ec3c62b060bae587","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"1310bd62459d7694a5939ff5ec3c62b060bae587","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.3.tgz"},"directories":{}},"2.0.4":{"name":"atom-space-pen-views","version":"2.0.4","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c05388fe0988421c3400180a1df7b73ddc055ffa","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.4","_shasum":"9ce135c57fd762d39c1afcd1540a59f6947a25c7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"9ce135c57fd762d39c1afcd1540a59f6947a25c7","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.4.tgz"},"directories":{}},"2.0.5":{"name":"atom-space-pen-views","version":"2.0.5","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"0e5fc262cc62d453bbd6dce9ecaec5caddc553f9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.5","_shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"},"directories":{}}},"readme":"# Atom SpacePen Views [![Build Status](https://travis-ci.org/atom/atom-space-pen-views.svg?branch=master)](https://travis-ci.org/atom/atom-space-pen-views)\n\nThis library contains SpacePen views that used to be provided as part of Atom\nCore. `TextEditorView`, `SelectListView`, and `ScrollView` exports from the\n`atom` module are now deprecated will soon be removed, but can still be used in\npackages by depending on this library in your `package.json`.\n\n## TextEditorView\n\nA text editor can now be created in Atom by inserting an ``\ntag in any location you want an editor. However, if you still want to use the\nSpacePen view in order to conveniently convert packages off the deprecated\nexport, you can use this class.\n\n### Example\n\n```coffee\n{View} = require 'space-pen'\n{TextEditorView} = require 'atom-space-pen-views'\n\nclass MyView extends View\n @content: ->\n @div =>\n @div \"Type your answer:\"\n @subview 'answer', new TextEditorView(mini: true)\n```\n\n### Constructor Params\n\nPass an optional params object to the constructor with the following keys:\n\n* `mini` If `true`, will construct a single-line editor for use as an input\n field.\n* `placeholderText` A string of placeholder text to appear in the editor when\n empty\n\n### Methods\n\n#### `::getModel`\n\nReturns the underlying `TextEditor` model instance.\n\n## ScrollView\n\n Handles several core events to update scroll position:\n\n * `core:move-up` Scrolls the view up\n * `core:move-down` Scrolls the view down\n * `core:page-up` Scrolls the view up by the height of the page\n * `core:page-down` Scrolls the view down by the height of the page\n * `core:move-to-top` Scrolls the editor to the top\n * `core:move-to-bottom` Scroll the editor to the bottom\n\n Subclasses must call `super` if overriding the `initialize` method.\n\n### Example\n\n ```coffee\n {ScrollView} = require 'atom-space-pen-views'\n\n class MyView extends ScrollView\n @content: ->\n @div()\n\n initialize: ->\n super\n @text('super long content that will scroll')\n ```\n\n## SelectListView\n\nEssential: Provides a view that renders a list of items with an editor that\nfilters the items. Used by many packages such as the fuzzy-finder,\ncommand-palette, symbols-view and autocomplete.\n\n\n### Example\n\n```coffee\n{SelectListView} = require 'atom-space-pen-views'\n\nclass MySelectListView extends SelectListView\n initialize: ->\n super\n @addClass('overlay from-top')\n @setItems(['Hello', 'World'])\n atom.workspaceView.append(this)\n @focusFilterEditor()\n\n viewForItem: (item) ->\n \"
  • #{item}
  • \"\n\n confirmed: (item) ->\n console.log(\"#{item} was selected\")\n```\n\n## Methods\n\n### Subclasses Must Implement\n\n#### `::viewForItem`\n\nCreate a view for the given model item. This method must be overridden by\nsubclasses. Called when the item is about to appended to the list view.\n\n* `item` The model item being rendered. This will always be one of the items\n previously passed to `::setItems`.\n\nReturns a String of HTML, DOM element, jQuery object, or View.\n\n#### `::confirmed`\n\nCallback function for when an item is selected. This method must\nbe overridden by subclasses.\n\n* `item` The selected model item. This will always be one of the items\n previously passed to `::setItems`.\n\nReturns a DOM element, jQuery object, or {View}.\n\n### Managing the list of items\n\n#### `::setItems`\n\nSet the array of items to display in the list. This should be\nmodel items, not actual views. `::viewForItem` will be called to render the\nitem when it is being appended to the list view.\n\n* `items` The array of model items to display in the list (default: []).\n\n#### `::getSelectedItem`\n\nGet the model item that is currently selected in the list view.\n\n#### `::getFilterKey`\n\nGet the property name to use when filtering items.\n\nThis method may be overridden by classes to allow fuzzy filtering based\non a specific property of the item objects.\n\nFor example if the objects you pass to {::setItems} are of the type\n`{\"id\": 3, \"name\": \"Atom\"}` then you would return `\"name\"` from this method\nto fuzzy filter by that property when text is entered into this view's\neditor.\n\n\n#### `::getFilterQuery`\n\nGet the filter query to use when fuzzy filtering the visible elements.\n\nBy default this method returns the text in the mini editor but it can be\noverridden by subclasses if needed.\n\nReturns a {String} to use when fuzzy filtering the elements to display.\n\n\n#### `::setMaxItems`\n\nSet the maximum numbers of items to display in the list.\n\nThis should be called before `setItems` is called or else the first time the\nlist displays it will include all the items.\n\n* `maxItems` The maximum {Number} of items to display.\n\n#### `::populateList`\n\nExtended: Populate the list view with the model items previously set by calling\n{::setItems}.\n\nSubclasses may override this method but should always call `super`.\n\n### Messages\n\n#### `::setError`\n\nSet the error message to display.\n\n* `message` A string with an error message (default: '').\n\n#### `::setLoading`\n\nSet the loading message to display.\n\n* `message` A string with a loading message (default: '').\n\n#### `::getEmptyMessage`\n\nGet the message to display when there are no items.\n\nSubclasses may override this method to customize the message.\n\n* `itemCount` The {Number} of items in the array specified to {::setItems}\n* `filteredItemCount` The {Number} of items that pass the fuzzy filter test.\n\nReturns a {String} message (default: 'No matches found').\n\n### View Actions\n\n#### `::cancel`\n\nCancel and close this select list view.\n\nThis restores focus to the previously focused element if `::storeFocusedElement`\nwas called prior to this view being attached.\n\n#### `::focusFilterEditor`\n\nFocus the fuzzy filter editor view.\n\n#### `::storeFocusedElement`\n\nStore the currently focused element. This element will be given back focus when\n`::cancel` is called.\n","maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"time":{"modified":"2015-03-31T00:04:41.621Z","created":"2014-10-30T23:24:27.236Z","0.1.0":"2014-10-30T23:24:27.236Z","0.2.0":"2014-10-30T23:29:35.034Z","0.3.0":"2014-10-30T23:39:12.785Z","0.4.0":"2014-10-30T23:56:59.961Z","0.5.0":"2014-11-03T18:31:14.337Z","0.6.0":"2014-11-03T18:41:23.043Z","0.7.0":"2014-11-03T20:42:13.644Z","0.8.0":"2014-11-04T00:24:02.201Z","0.9.0":"2014-11-04T00:37:49.282Z","0.10.0":"2014-11-04T00:47:57.304Z","0.11.0":"2014-11-04T01:03:56.279Z","0.13.0":"2014-11-06T21:13:16.872Z","0.14.0":"2014-11-10T15:31:09.171Z","0.15.0":"2014-11-10T16:41:57.875Z","0.16.0":"2014-11-25T15:32:18.949Z","0.17.0":"2014-11-25T15:39:19.263Z","0.18.0":"2014-11-25T16:10:56.727Z","0.19.0":"2014-11-25T16:55:01.824Z","0.20.0":"2014-11-25T17:23:07.572Z","0.21.0":"2014-12-10T02:57:37.281Z","1.0.0":"2015-01-02T19:36:56.106Z","2.0.0":"2015-01-05T18:09:18.374Z","2.0.1":"2015-01-06T19:16:25.450Z","2.0.2":"2015-01-06T19:28:01.724Z","2.0.3":"2015-01-07T19:09:21.297Z","2.0.4":"2015-02-13T00:43:59.838Z","2.0.5":"2015-03-31T00:04:41.621Z"},"homepage":"https://github.com/atom/atom-space-pen-views","repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"readmeFilename":"README.md","users":{},"_attachments":{},"_etag":"\"XF3LP3NYB5YFNCOS8DOQ6RF9\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/coffee-script/.cache.json b/atom/.apm/registry.npmjs.org/coffee-script/.cache.json new file mode 100644 index 0000000..0378eb1 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/coffee-script/.cache.json @@ -0,0 +1 @@ +{"_id":"coffee-script","_rev":"341-6ec827b454a5c4f4b4d7f915aefbaaca","name":"coffee-script","description":"Unfancy JavaScript","dist-tags":{"latest":"1.9.3","stable":"1.9.3"},"versions":{"0.7.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language"],"author":{"name":"Jeremy Ashkenas"},"version":"0.7.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"scripts":{"install":"sudo bin/cake install"},"_id":"coffee-script@0.7.0","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.7.0.tgz","shasum":"4a13189bb859740956d758ea3ed23c159bfa0a40"},"directories":{}},"0.7.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language"],"author":{"name":"Jeremy Ashkenas"},"version":"0.7.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"scripts":{"install":"sudo bin/cake install"},"_id":"coffee-script@0.7.1","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.7.1.tgz","shasum":"dd488ec141a03048a20bc23bd03b2e865650e34d"},"directories":{}},"0.7.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language"],"author":{"name":"Jeremy Ashkenas"},"version":"0.7.2","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"scripts":{"install":"bin/cake install"},"_id":"coffee-script@0.7.2","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.7.2.tgz","shasum":"3fb2401120a3d90198102cfd540b243c5302bf85"},"directories":{}},"0.9.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.0","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.0.tgz","shasum":"ff24152d6083e4cf8c2b6887e63a78fb02efd5f3"},"directories":{}},"0.9.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.1","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.1.tgz","shasum":"fc01d881e2e82dd0813afdc9124aea117dafca03"},"directories":{}},"0.9.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.2","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.2","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.2.tgz","shasum":"16b99eac4f137b7550b4e50438d00b84b545c3d4"}},"0.9.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.3","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.3","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.3.tgz","shasum":"09c4b206647adc5230fba2985208567aaeff8ba0"}},"0.9.4":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.4","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.4","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.4.tgz","shasum":"98241e7caad360886920ec3bccc98b7799dfee06"}},"0.9.5":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.5","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.5","_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.5.tgz","shasum":"936ad50eca576c30edde477d9ce5c1f8138eac2f"}},"0.9.6":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.6","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.6","_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.6.tgz","shasum":"76a5a34e958bfaf8e25e83c48cbe0a96fdbc9804"}},"1.0.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.0.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@1.0.0","_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.0.0.tgz","shasum":"dc6b102c80f045e4dc02931fcee6dc4ab92c9dc1"}},"1.0.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.0.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@1.0.1","_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.7","modules":{"browser.js":"lib/browser.js","cake.js":"lib/cake.js","coffee-script.js":"lib/coffee-script.js","command.js":"lib/command.js","grammar.js":"lib/grammar.js","helpers.js":"lib/helpers.js","index.js":"lib/index.js","lexer.js":"lib/lexer.js","nodes.js":"lib/nodes.js","optparse.js":"lib/optparse.js","parser.js":"lib/parser.js","repl.js":"lib/repl.js","rewriter.js":"lib/rewriter.js","scope.js":"lib/scope.js"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"4fa0049d48208951bc9122b362f8107a560c975c","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.0.1.tgz"}},"1.1.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"_id":"coffee-script@1.1.0","_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.7","dist":{"shasum":"6b4e18b4f9e254723d379d860dfdbea663f460c7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.0.tgz"}},"1.1.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"dependencies":{},"devDependencies":{},"_id":"coffee-script@1.1.1","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"b3961915e4f547354dd6178378b3073999526224","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.1.tgz"},"scripts":{}},"1.1.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.2","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"_npmJsonOpts":{"file":"/Users/jashkenas/.npm/coffee-script/1.1.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"coffee-script@1.1.2","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"a530a19d050c37054d83ae6c8041fba0fcd61ed3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.2.tgz"},"scripts":{},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.3","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"1.0.6","jison":"0.2.11"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.1.3","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"04cb82e59653fcad6ae6050900c81adf3af6d798","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.3.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.2.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.2.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.2.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"b5e61e55f1ca8c4a9eb87d53aa0657ea43125b91","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.2.0.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"08fc0bc4f6f1e24c076e7f332ffa5d445a3f8b64","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.0.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4da0f14eb44e809e8c1d598f5513d7302a91afd7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.1.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.2","licenses":[{"type":"MIT","url":"https://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","bugs":{"name":"https://github.com/jashkenas/coffee-script/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"2e0d2b823422077b0f5cb0ca5c9b924d4cad0758","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.2.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.3","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","bugs":{"name":"https://github.com/jashkenas/coffee-script/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"150d6b4cb522894369efed6a2101c20bc7f4a4f4","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.4.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.4.0","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":"https://github.com/jashkenas/coffee-script/issues","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_id":"coffee-script@1.4.0","dist":{"shasum":"5e3bc8aac26c01a8e27bf107722c5655f5ad7d36","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.5.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.5.0","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":"https://github.com/jashkenas/coffee-script/issues","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0"},"_id":"coffee-script@1.5.0","dist":{"shasum":"18a66a0b68679eb1be000e50dfd0398d793f9e15","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.5.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.6.0","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":"https://github.com/jashkenas/coffee-script/issues","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0"},"_id":"coffee-script@1.6.0","dist":{"shasum":"808b396e110f53d021a19a4ef1f65be0e8e35fa3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.6.1","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":"https://github.com/jashkenas/coffee-script/issues","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0"},"_id":"coffee-script@1.6.1","dist":{"shasum":"34b55dedb09cef36d1b1e2908302e057f1e26068","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.1.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.6.2","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":"https://github.com/jashkenas/coffee-script/issues","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0"},"_id":"coffee-script@1.6.2","dist":{"shasum":"fd9c88369c1e41e3307a0a160d713f22513c93b3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.2.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.6.3","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffee-script/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0"},"_id":"coffee-script@1.6.3","dist":{"shasum":"6355d32cf1b04cdff6b484e5e711782b2f0c39be","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.3.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}]},"1.7.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.7.0","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffee-script/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.7.0","dist":{"shasum":"dcc5fc92e45e9f5546bdb3259f9fa85b38618b1d","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.7.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.7.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.7.1","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffee-script/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.7.1","dist":{"shasum":"62996a861780c75e6d5069d13822723b73404bfc","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz"},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"michaelficarra","email":"npm@michael.ficarra.me"},"maintainers":[{"name":"michaelficarra","email":"npm@michael.ficarra.me"}]},"1.8.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.8.0","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.6.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.8.0","dist":{"shasum":"9c9f1d2b4a52a000ded15b659791703648263c1d","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}]},"1.9.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.0","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.6.2"},"gitHead":"f7692c92ce61c277a3f9a38c6bdbe712730d040a","_id":"coffee-script@1.9.0","_shasum":"7492cbbc3f0361cc5d8865aff7237552ff33e1f7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"7492cbbc3f0361cc5d8865aff7237552ff33e1f7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.0.tgz"}},"1.9.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.1","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.7.0"},"gitHead":"533ad8afe920b2dbf64ffb00efda45648242cc24","_id":"coffee-script@1.9.1","_shasum":"c458d02200f460d064a79cb6ab1ee6e2c9ca1c31","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"c458d02200f460d064a79cb6ab1ee6e2c9ca1c31","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.1.tgz"}},"1.9.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.2","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.7.0"},"gitHead":"46d16b5c4970c6e4d8a8d08caaed16d488a5577d","_id":"coffee-script@1.9.2","_shasum":"2da4b663c61c6d1d851788aa31f941fc7b63edf3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"2da4b663c61c6d1d851788aa31f941fc7b63edf3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.2.tgz"}},"1.9.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.3","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.7.0"},"gitHead":"c37f284771e10b36239c714dcc40827510a6df5f","_id":"coffee-script@1.9.3","_shasum":"596e6e83fcfcb67c5964ab70d444beff0ac04ac7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"596e6e83fcfcb67c5964ab70d444beff0ac04ac7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.3.tgz"}}},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"author":{"name":"Jeremy Ashkenas"},"time":{"modified":"2015-05-27T15:58:07.551Z","created":"2010-12-24T19:03:36.215Z","0.7.0":"2010-12-24T19:03:36.215Z","0.7.1":"2010-12-24T19:03:36.215Z","0.7.2":"2010-12-24T19:03:36.215Z","0.9.0":"2010-12-24T19:03:36.215Z","0.9.1":"2010-12-24T19:03:36.215Z","0.9.2":"2010-12-24T19:03:36.215Z","0.9.3":"2010-12-24T19:03:36.215Z","0.9.4":"2010-12-24T19:03:36.215Z","0.9.5":"2010-12-24T19:03:36.215Z","0.9.6":"2010-12-24T19:03:36.215Z","1.0.0":"2010-12-24T19:03:36.215Z","1.1.0-pre":"2011-02-01T03:40:06.654Z","1.0.1":"2011-02-01T03:42:04.611Z","1.1.0":"2011-05-01T16:09:17.054Z","1.1.1":"2011-05-10T13:28:00.633Z","1.1.2":"2011-08-05T03:18:50.703Z","1.1.3":"2011-11-08T23:05:16.149Z","1.2.0":"2011-12-18T20:29:34.507Z","1.3.0":"2012-04-10T18:59:43.592Z","1.3.1":"2012-04-10T21:26:52.615Z","1.3.2":"2012-05-14T18:46:02.541Z","1.3.3":"2012-05-15T16:36:07.179Z","1.4.0":"2012-10-23T20:46:30.811Z","1.5.0":"2013-02-25T08:14:10.760Z","1.6.0":"2013-03-04T20:25:15.726Z","1.6.1":"2013-03-04T22:08:53.302Z","1.6.2":"2013-03-18T05:11:22.175Z","1.6.3":"2013-06-02T05:39:20.652Z","1.7.0":"2014-01-28T19:08:17.607Z","1.7.1":"2014-01-30T05:20:53.053Z","1.8.0":"2014-08-26T16:24:25.075Z","1.9.0":"2015-01-29T17:29:06.940Z","1.9.1":"2015-02-18T20:47:50.237Z","1.9.2":"2015-04-15T15:49:36.001Z","1.9.3":"2015-05-27T15:58:07.551Z"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"users":{"thejh":true,"pekim":true,"linus":true,"ilikefm":true,"dodo":true,"dmalam":true,"moonpyk":true,"yazgazan":true,"kislitsyn":true,"poulejapon":true,"vrtak-cz":true,"pwnall":true,"coiscir":true,"fgribreau":true,"xenomuta":true,"sergeych":true,"m42am":true,"strathausen":true,"bencevans":true,"Scryptonite":true,"ivanvotti":true,"freethenation":true,"meryn":true,"stid":true,"zonetti":true,"cparker15":true,"nicohman":true,"bigluck":true,"shanewholloway":true,"fibo":true,"ajumell":true,"denisix":true,"chrisoei":true,"aniketpant":true,"mhaidarh":true,"mpinteractiv":true,"t3chnoboy":true,"piroma":true,"karudo":true,"takethefire":true,"jacques":true,"ourai":true,"green_goo":true,"mabotech":true,"tcarlsen":true,"thom_nic":true,"slang800":true,"gabeio":true,"loguncov":true,"saschamayr":true,"ericlondon":true,"s4g6":true,"kossnocorp":true,"lubelski":true,"funroll":true,"cocopas":true,"davidwbradford":true,"jasonw":true,"jkcpr":true,"dmitriiabramov":true,"chaowi":true,"oliboy50":true,"edalorzo":true,"josephdavisco":true,"davidrlee":true,"janez89":true,"onuma1004":true,"frk1705":true,"shatting":true,"sposmen":true,"maschs":true,"leighakin":true,"ryanthejuggler":true,"mswanson1524":true,"knight-of-design":true,"yourhoneysky":true,"bmpvieira":true,"jits":true,"nornalbion":true,"frdarryl":true,"henryfour":true,"louxiaojian":true,"adagio":true,"xueweijie":true,"andreaspizsa":true,"kgust":true,"smiledawgg":true,"faraday":true,"windhamdavid":true,"kewin":true,"torkristensen":true,"jhabdas":true,"nfd":true,"ivangaravito":true,"swak":true,"kuzhelov":true,"thorsson":true,"devonoel":true,"akarzim":true,"tophsic":true,"themiddleman":true,"aloesch":true,"octod":true,"pcac":true,"elliotchong":true,"nmrony":true,"mahoutsuk.ai":true,"dudley":true,"wzlikai":true,"liujiajia":true,"willhoag":true,"xavierharrell":true,"goblindegook":true,"haeck":true,"pnevares":true,"lenage":true,"pughpugh":true,"eins78":true,"jerzerak":true,"dmnsgn":true,"anmol1771":true,"rebugger":true,"msmiley":true,"jirka8":true,"goodseller":true,"walkah":true,"jimkropa":true,"jimrobs":true,"jaa":true,"pedrofelipe":true,"safinalexey":true,"cannobbio":true,"marianboda":true,"adambyrne":true,"phoenix-xsy":true,"keeyanajones":true,"austinkeeley":true,"monsterkodi":true,"arahnoid":true,"leonardorb":true,"gsholtz":true,"itonyyo":true,"crowbar":true,"kilpiban":true,"avil13":true,"moonavw":true,"makediff":true,"giovannif23":true,"leyyinad":true,"joemdavis":true,"yeltsin":true,"dolymood":true,"pomutemu":true,"xieranmaya":true,"uniquerockrz":true,"deiga":true,"flayks":true,"nwinant":true,"buzuli":true,"aliemre":true,"thepanuto":true,"enhou518":true,"mauperruolo":true,"jyounce":true,"gableroux":true,"nournia":true,"jmelanson-balihoo":true,"donkanee":true,"markthethomas":true,"mattms":true,"tamer1an":true,"slang":true,"gabriel.engel":true,"wkaifang":true,"theuves":true,"fvcproductions":true,"isyara":true,"eneepo":true,"brentlintner":true},"readme":" {\n } } {\n { { } }\n } }{ {\n { }{ } } _____ __ __\n { }{ }{ { } / ____| / _|/ _|\n .- { { } { }} -. | | ___ | |_| |_ ___ ___\n ( { } { } { } } ) | | / _ \\| _| _/ _ \\/ _ \\\n |`-..________ ..-'| | |___| (_) | | | || __/ __/\n | | \\_____\\___/|_| |_| \\___|\\___|\n | ;--.\n | (__ \\ _____ _ _\n | | ) ) / ____| (_) | |\n | |/ / | (___ ___ _ __ _ _ __ | |_\n | ( / \\___ \\ / __| '__| | '_ \\| __|\n | |/ ____) | (__| | | | |_) | |_\n | | |_____/ \\___|_| |_| .__/ \\__|\n `-.._________..-' | |\n |_|\n\nCoffeeScript is a little language that compiles into JavaScript.\n\n## Installation\n\nIf you have the node package manager, npm, installed:\n\n```shell\nnpm install -g coffee-script\n```\n\nLeave off the `-g` if you don't wish to install globally. If you don't wish to use npm:\n\n```shell\ngit clone https://github.com/jashkenas/coffeescript.git\nsudo coffeescript/bin/cake install\n```\n\n## Getting Started\n\nExecute a script:\n\n```shell\ncoffee /path/to/script.coffee\n```\n\nCompile a script:\n\n```shell\ncoffee -c /path/to/script.coffee\n```\n\nFor documentation, usage, and examples, see: http://coffeescript.org/\n\nTo suggest a feature or report a bug: http://github.com/jashkenas/coffeescript/issues\n\nIf you'd like to chat, drop by #coffeescript on Freenode IRC.\n\nThe source repository: https://github.com/jashkenas/coffeescript.git\n\nChangelog: http://coffeescript.org/#changelog\n\nOur lovely and talented contributors are listed here: http://github.com/jashkenas/coffeescript/contributors\n","readmeFilename":"README.md","homepage":"http://coffeescript.org","keywords":["javascript","language","coffeescript","compiler"],"bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"license":"MIT","_attachments":{},"_etag":"\"6RERMWTHQM2Z9MEZAX1T7HIRU\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/coffeestack/.cache.json b/atom/.apm/registry.npmjs.org/coffeestack/.cache.json new file mode 100644 index 0000000..740d2eb --- /dev/null +++ b/atom/.apm/registry.npmjs.org/coffeestack/.cache.json @@ -0,0 +1 @@ +{"_id":"coffeestack","_rev":"24-094ffb1432f49fb0f6c3b05bee06352c","name":"coffeestack","description":"CoffeeScript stack trace converter","dist-tags":{"latest":"1.1.2"},"versions":{"0.1.0":{"name":"coffeestack","version":"0.1.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.1.0","dist":{"shasum":"5556244fc0889315330b733147d55d6a7136bbad","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.1.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.2.0":{"name":"coffeestack","version":"0.2.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.2.0","dist":{"shasum":"c1ad2239050fa3e5de60f2dfcccb99d141ff271e","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.2.0.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.3.0":{"name":"coffeestack","version":"0.3.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.3.0","dist":{"shasum":"0fc827326c060a57c6458c7454874e23552df256","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.3.0.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.4.0":{"name":"coffeestack","version":"0.4.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.4.0","dist":{"shasum":"e21bff7632c51d910389939806ac5e7d11bcfc47","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.4.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.5.0":{"name":"coffeestack","version":"0.5.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.5.0","dist":{"shasum":"95c40719ffc29d0a4c9a1ac9e87bc2f9e8bab23b","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.5.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.6.0":{"name":"coffeestack","version":"0.6.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.12.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.6.0","dist":{"shasum":"25ede538b5d5f7df97be21074dbb0a9c9902713d","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.6.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"coffeestack","version":"0.7.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.7.0","source-map":"~0.1.31"},"devDependencies":{"jasmine-focused":"1.x","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.7.0","dist":{"shasum":"7ea4b801c43a04237db22cee7bc2bd7670f12171","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.8.0":{"name":"coffeestack","version":"0.8.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","source-map":"~0.1.43"},"devDependencies":{"jasmine-focused":"1.x","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"gitHead":"1d36b101e28823218c63b98c9efbccad5b4ca4c2","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@0.8.0","_shasum":"1249f83a93b14e917efe09945c39ae574bf7bf16","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"1249f83a93b14e917efe09945c39ae574bf7bf16","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.8.0.tgz"},"directories":{}},"1.0.0":{"name":"coffeestack","version":"1.0.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"4970f49bcc204b2e746310013d6fdfbe7535e214","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.0.0","_shasum":"63849bee94d4cda8d45326ac8b089883a0976fbe","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"63849bee94d4cda8d45326ac8b089883a0976fbe","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.0.0.tgz"},"directories":{}},"1.1.0":{"name":"coffeestack","version":"1.1.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"d5289da6eef83111b942b27712cc56c148cb8aad","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.0","_shasum":"0455f808ae3e436dd9d560f440c28a1a667bb7ea","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"0455f808ae3e436dd9d560f440c28a1a667bb7ea","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.0.tgz"},"directories":{}},"1.1.1":{"name":"coffeestack","version":"1.1.1","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"c8994ed485d825b422bb654dccad21655f049f7c","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.1","_shasum":"3db97e23fffb81c4ec067ee61ce35f28f59c2a16","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"3db97e23fffb81c4ec067ee61ce35f28f59c2a16","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.1.tgz"},"directories":{}},"1.1.2":{"name":"coffeestack","version":"1.1.2","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"8484218a00e59526d9f064b64441df788526fa04","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.2","_shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"},"directories":{}}},"readme":"# CoffeeStack [![Build Status](https://travis-ci.org/kevinsawicki/coffeestack.png)](https://travis-ci.org/kevinsawicki/coffeestack)\n\nModule to convert JavaScript stack traces to CoffeeScript stack traces.\n\n## Installing\n\n```sh\nnpm install coffeestack\n```\n\n## Using\n\n```coffeescript\n{convertStackTrace} = require 'coffeestack'\n\ntry\n throw new Error('this is an error')\ncatch error\n console.error(convertStackTrace(error.stack))\n```\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"time":{"modified":"2015-04-30T00:28:46.868Z","created":"2013-07-06T03:39:03.986Z","0.1.0":"2013-07-06T03:39:05.266Z","0.2.0":"2013-07-06T04:15:51.167Z","0.3.0":"2013-07-06T04:31:44.700Z","0.4.0":"2013-07-06T17:01:35.738Z","0.5.0":"2013-07-15T16:15:54.233Z","0.6.0":"2013-08-17T03:44:54.298Z","0.7.0":"2014-01-31T21:27:57.768Z","0.8.0":"2015-01-12T17:31:04.865Z","1.0.0":"2015-02-12T18:43:18.593Z","1.1.0":"2015-02-12T19:35:14.683Z","1.1.1":"2015-02-13T00:06:12.665Z","1.1.2":"2015-04-30T00:28:46.868Z"},"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"readmeFilename":"README.md","homepage":"https://github.com/kevinsawicki/coffeestack","keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"license":"BSD","_attachments":{},"_etag":"\"CGXR22S3G35GNE15PEC9JA0YF\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/d/.cache.json b/atom/.apm/registry.npmjs.org/d/.cache.json new file mode 100644 index 0000000..5ed5efc --- /dev/null +++ b/atom/.apm/registry.npmjs.org/d/.cache.json @@ -0,0 +1 @@ +{"_id":"d","_rev":"8-309ca157fbef23ba35bf2e290da3adf2","name":"d","description":"Property descriptor factory","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"d","version":"0.1.0","description":"Property descriptor factory","main":"index.js","scripts":{"test":"node node_modules/tad/bin/tad"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"dependencies":{"es5-ext":"~0.9.2"},"devDependencies":{"tad":"~0.1.16"},"author":{"name":"Mariusz Nowak","email":"medikoo+d@medikoo.com","url":"http://www.medikoo.com/"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/d/issues"},"_id":"d@0.1.0","dist":{"shasum":"2dfac58b2a6c152361e933ed4c7f59115ff353e6","tarball":"http://registry.npmjs.org/d/-/d-0.1.0.tgz"},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"d","version":"0.1.1","description":"Property descriptor factory","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"scripts":{"test":"node node_modules/tad/bin/tad"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"dependencies":{"es5-ext":"~0.10.2"},"devDependencies":{"tad":"~0.1.21"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/d/issues"},"homepage":"https://github.com/medikoo/d","_id":"d@0.1.1","dist":{"shasum":"da184c535d18d8ee7ba2aa229b914009fae11309","tarball":"http://registry.npmjs.org/d/-/d-0.1.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}}},"readme":"# D - Property descriptor factory\n\n_Originally derived from [es5-ext](https://github.com/medikoo/es5-ext) package._\n\nDefining properties with descriptors is very verbose:\n\n```javascript\nvar Account = function () {};\nObject.defineProperties(Account.prototype, {\n deposit: { value: function () {\n /* ... */\n }, configurable: true, enumerable: false, writable: true },\n whithdraw: { value: function () {\n /* ... */\n }, configurable: true, enumerable: false, writable: true },\n balance: { get: function () {\n /* ... */\n }, configurable: true, enumerable: false }\n});\n```\n\nD cuts that to:\n\n```javascript\nvar d = require('d');\n\nvar Account = function () {};\nObject.defineProperties(Account.prototype, {\n deposit: d(function () {\n /* ... */\n }),\n whithdraw: d(function () {\n /* ... */\n }),\n balance: d.gs(function () {\n /* ... */\n })\n});\n```\n\nBy default, created descriptor follow characteristics of native ES5 properties, and defines values as:\n\n```javascript\n{ configurable: true, enumerable: false, writable: true }\n```\n\nYou can overwrite it by preceding _value_ argument with instruction:\n```javascript\nd('c', value); // { configurable: true, enumerable: false, writable: false }\nd('ce', value); // { configurable: true, enumerable: true, writable: false }\nd('e', value); // { configurable: false, enumerable: true, writable: false }\n\n// Same way for get/set:\nd.gs('e', value); // { configurable: false, enumerable: true }\n```\n\n### Other utilities\n\n#### autoBind(obj, props) _(d/auto-bind)_\n\nDefine methods which will be automatically bound to its instances\n\n```javascript\nvar d = require('d');\nvar autoBind = require('d/auto-bind');\n\nvar Foo = function () { this._count = 0; };\nautoBind(Foo.prototype, {\n increment: d(function () { ++this._count; });\n});\n\nvar foo = new Foo();\n\n// Increment foo counter on each domEl click\ndomEl.addEventListener('click', foo.increment, false);\n```\n\n#### lazy(obj, props) _(d/lazy)_\n\nDefine lazy properties, which will be resolved on first access\n\n```javascript\nvar d = require('d');\nvar lazy = require('d/lazy');\n\nvar Foo = function () {};\nlazy(Foo.prototype, {\n items: d(function () { return []; })\n});\n\nvar foo = new Foo();\nfoo.items.push(1, 2); // foo.items array created\n```\n\n## Installation\n### NPM\n\nIn your project path:\n\n\t$ npm install d\n\n### Browser\n\nYou can easily bundle _D_ for browser with [modules-webmake](https://github.com/medikoo/modules-webmake)\n\n## Tests [![Build Status](https://travis-ci.org/medikoo/d.png)](https://travis-ci.org/medikoo/d)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2014-07-18T08:32:08.676Z","created":"2013-06-20T11:13:43.686Z","0.1.0":"2013-06-20T11:13:46.851Z","0.1.1":"2014-04-24T15:41:11.066Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"homepage":"https://github.com/medikoo/d","keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"bugs":{"url":"https://github.com/medikoo/d/issues"},"license":"MIT","readmeFilename":"README.md","users":{"julien-f":true,"goldenboy":true,"program247365":true},"_attachments":{},"_etag":"\"5WN889VUHFNNR4OEANKORJNV7\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/emissary/.cache.json b/atom/.apm/registry.npmjs.org/emissary/.cache.json new file mode 100644 index 0000000..dbc8f05 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/emissary/.cache.json @@ -0,0 +1 @@ +{"_id":"emissary","_rev":"101-4e5c2dbfd44d61f76e115d685fa9d42a","name":"emissary","description":"Utility mixins for subscribing to and emitting events.","dist-tags":{"latest":"1.3.3"},"versions":{"0.1.0":{"name":"emissary","version":"0.1.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.1.0","dist":{"shasum":"0da09cf5aaad66ba997e2e6a4d1f48f4c6872535","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.1.1":{"name":"emissary","version":"0.1.1","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.1.1","dist":{"shasum":"bbeda1a1af0ad318721e8286578a672d1934010a","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.1.1.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.2.0":{"name":"emissary","version":"0.2.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0"},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.2.0","dist":{"shasum":"50885178d524f99b440d45cd23e4f7019c3bb89c","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.3.0":{"name":"emissary","version":"0.3.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0"},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.3.0","dist":{"shasum":"aaa59ea713cf798c7a75f623bf9a999232ac45d8","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.4.0":{"name":"emissary","version":"0.4.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0"},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.4.0","dist":{"shasum":"97844847d826a0074b2cedf96eee9dc74dc1b0e3","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.5.0":{"name":"emissary","version":"0.5.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.5.0","dist":{"shasum":"340f9d7da9d1fdb7e51ec3fede41bc4bfadd52f1","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.6.0":{"name":"emissary","version":"0.6.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.6.0","dist":{"shasum":"d491540368e854030f6ce1561f56f85ad4cc8e02","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"emissary","version":"0.7.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.7.0","dist":{"shasum":"83610c424b9afc16f588e51a6a2dece9e4829875","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.8.0":{"name":"emissary","version":"0.8.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.8.0","dist":{"shasum":"fea62f2f0fa9b073e8035562fce483dd28fa7dd9","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.8.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.9.0":{"name":"emissary","version":"0.9.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.9.0","dist":{"shasum":"60ecc4da3aad4f2228aff030112e834758f66564","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.9.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.10.0":{"name":"emissary","version":"0.10.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.10.0","dist":{"shasum":"3c3815e5f39b61e0d63f9ab137234d668120b8da","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.10.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.11.0":{"name":"emissary","version":"0.11.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.11.0","dist":{"shasum":"d817651f9d75832fafe28cda83c041c54545cf87","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.11.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.12.0":{"name":"emissary","version":"0.12.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.12.0","dist":{"shasum":"ac231b2b452f303e2822d71e258eaf2bed6e1429","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.12.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.13.0":{"name":"emissary","version":"0.13.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.13.0","dist":{"shasum":"9f4f726fc5f3cccc86c9c36a9147f8121e3d2795","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.13.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.14.0":{"name":"emissary","version":"0.14.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.14.0","dist":{"shasum":"7311417f9bdf135effbb82dae69d5d5a2080155c","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.14.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.15.0":{"name":"emissary","version":"0.15.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.15.0","dist":{"shasum":"5a8978cc85cb2aab20d477c60416972fdc8901ba","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.15.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.16.0":{"name":"emissary","version":"0.16.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.16.0","dist":{"shasum":"9d7964abde5e68e9fc6954bc3c6c8a980dcb68a5","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.16.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.17.0":{"name":"emissary","version":"0.17.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.17.0","dist":{"shasum":"bb078fd4f44500f4b8750f4a329988f11a3d8657","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.17.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.18.0":{"name":"emissary","version":"0.18.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.18.0","dist":{"shasum":"892afa74f730e45868b1a7799e65ea02edceb325","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.18.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.19.0":{"name":"emissary","version":"0.19.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.19.0","dist":{"shasum":"ba07227ebb3433846036f7e4b0e0634e35b27f56","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.19.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.20.0":{"name":"emissary","version":"0.20.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.20.0","dist":{"shasum":"e07c56bee84f969d903f70e95900860854991ec3","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.20.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.21.0":{"name":"emissary","version":"0.21.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.21.0","dist":{"shasum":"e8c73c7b81a5f681bcf036e0ce53ce66217b76fd","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.21.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.22.0":{"name":"emissary","version":"0.22.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.22.0","dist":{"shasum":"79d470b1396f4db2d37727fe05344840501a31bf","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.22.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.24.0":{"name":"emissary","version":"0.24.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.24.0","dist":{"shasum":"d656bbe96915418596874cc2d0dafb6ea59ccb08","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.24.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.25.0":{"name":"emissary","version":"0.25.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.25.0","dist":{"shasum":"f5da0d67be0e1242b3302aa0afa46b9006e075f4","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.25.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.26.0":{"name":"emissary","version":"0.26.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.26.0","dist":{"shasum":"d6cf86c7d54ae5a606182bb6d7ef1cf24cc44952","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.26.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.27.0":{"name":"emissary","version":"0.27.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.27.0","dist":{"shasum":"1f1d2eeaa309a4e5bfc33781eec27e4506927c89","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.27.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.28.0":{"name":"emissary","version":"0.28.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.28.0","dist":{"shasum":"af48e2cc3d233c449ce3b5f587320e20482540aa","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.28.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.29.0":{"name":"emissary","version":"0.29.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.29.0","dist":{"shasum":"30314f0eff58efa43927c30f0c6d5b4c2db1df92","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.29.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.30.0":{"name":"emissary","version":"0.30.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.30.0","dist":{"shasum":"94dca2d2cab107eb256ed0eb1c650d0736302ac7","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.30.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.31.0":{"name":"emissary","version":"0.31.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.31.0","dist":{"shasum":"bf9b6f4af2f3ac59a1e6222b1fea29a4a9536a63","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.31.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.0.0":{"name":"emissary","version":"1.0.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"1.x"},"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.0.0","dist":{"shasum":"47bb514d222dc3c578ef6a72e47b87999fae50ec","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.0":{"name":"emissary","version":"1.1.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"1.x"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.1.0","dist":{"shasum":"31b40f201242a2ac0243f0f66d2c782155f0d20f","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.0":{"name":"emissary","version":"1.2.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.2.0","dist":{"shasum":"26b973f901c183a94cd12d0dbce211dbfeb55bcd","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.2.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.1":{"name":"emissary","version":"1.2.1","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.2.1","dist":{"shasum":"a00fc2bbe75c93b27832ec01b85f8f886e707227","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.2.1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.2":{"name":"emissary","version":"1.2.2","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.2.2","dist":{"shasum":"3c4c057ca7fd09d6434ed6decd0328bae2d7b7db","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.2.2.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.3.0":{"name":"emissary","version":"1.3.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"81d5c308e100a7d9356b723da72b9a8719f1590e","_id":"emissary@1.3.0","_shasum":"db80ee7ffad2cc4d26326759be0ec6a473debe4f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"db80ee7ffad2cc4d26326759be0ec6a473debe4f","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.0.tgz"},"directories":{}},"1.3.1":{"name":"emissary","version":"1.3.1","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"708a91a85bdec2f21757e6c06ef2fbb9d15477cc","_id":"emissary@1.3.1","_shasum":"8de1cf811462a5974ec5dce39e6e4cbc7412f06f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"8de1cf811462a5974ec5dce39e6e4cbc7412f06f","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.1.tgz"},"directories":{}},"1.3.2":{"name":"emissary","version":"1.3.2","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"83df4e56a3b35a5d2108fe8274fd9ab440f6131d","_id":"emissary@1.3.2","_shasum":"96c362f064f340f318110b3cfa9bf6885c95fa24","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"96c362f064f340f318110b3cfa9bf6885c95fa24","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.2.tgz"},"directories":{}},"1.3.3":{"name":"emissary","version":"1.3.3","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"13170d3e1f8b1cd4396d6dceb3c3bccf0887dae2","_id":"emissary@1.3.3","_shasum":"a618d92d682b232d31111dc3625a5df661799606","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"a618d92d682b232d31111dc3625a5df661799606","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"},"directories":{}}},"readme":"# Emissary – Mixins for Events [![Build Status](https://travis-ci.org/atom/emissary.svg?branch=master)](https://travis-ci.org/atom/emissary)\n\n**Achtung!** This library is currently used in Atom and various Atom dependencies, but our long-term plan is to transition away from it in favor of the simpler [event-kit](https://github.com/atom/event-kit) library. Don't depend on supporting this library forever.\n\n**Achtung Again!** The Subscriber mixin requires ES6 Harmony WeakMaps. To enable them, run your program with the `node --harmony_collections` flag. If you're using it in a node framework such as jasmine, run its script with the flag enabled as follows: `node --harmony-collections .bin/jasmine-node specs`.\n\n## Emitter\n\nEmitter is backward-compatible with Node's event emitter, but offers more functionality. You can construct standalone `Emitter` instances or use it as a mixin.\n\n* `Emitter.extend(object)`\n Turns the given object into an emitter by adding the appropriate methods.\n\n* `Emitter.includeInto(class)`\n Turns the class into an emitter by extending its prototype.\n\n* `::on(eventNames, handler)`\n Subscribe to one or more events. Events names are separated by spaces, and can optionally be namespaced with a dot-suffix. E.g. `event1 event2.namespace`.\n\n* `::once(eventName, handler)`\n Like `::on`, but only fires the handler once before unsubscribing automatically.\n\n* `::off(eventNames[, handler])`\n Unsubscribe to one or more events. Event names are separated by spaces. Passing a non-namespaced event name unsubscribes from every namespace for that event. Passing only a namespace unsubscribes from that entire namespace. Passing a handler removes only a subscription corresponding to the given event name(s) and that handler.\n\n* `::emit(eventName[, data...])`\n Emit an event with the given name. If the event name is namespaced, only calls handlers for the event associated with the namespace, otherwise it fires all handlers. Handlers are called with zero or more data arguments provided after the event name.\n\n* `::pauseEvents()`\n Buffers events instead of emitting them until `::resumeEvents` is called.\n\n* `::resumeEvents()`\n Emits all events buffered since pausing and resumes normal emitting behavior.\n\n* `::getSubscriptionCount()`\n Get the total number of handlers registered on the emitter.\n\n## Subscriber\n\nSubscriber works in partnership with an emitter or any object supporting subscription cancellation with `.off`. This includes standard Node event emitters and jQuery objects.\n\n* `::subscribe(object, eventNames, handler)`\n Subscribe to the given event name(s) on the given object.\n\n* `::subscribeWith(object, methodName, eventNames, handler)`\n Subscribe to the given object with a method other than `.on`.\n\n* `::unsubscribe([object])`\n Cancel subscriptions previously registered with `::subscribe`. If an object is given, only unsubscribe from that object. If called without an object, unsubscribe from everything.\n","maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2015-02-13T17:26:02.834Z","created":"2013-09-18T13:17:37.326Z","0.1.0":"2013-09-18T13:17:38.073Z","0.1.1":"2013-09-18T13:38:58.533Z","0.2.0":"2013-09-28T02:24:03.732Z","0.3.0":"2013-09-29T02:29:51.927Z","0.4.0":"2013-09-29T02:49:58.413Z","0.5.0":"2013-10-09T16:05:55.027Z","0.6.0":"2013-10-14T22:22:17.852Z","0.7.0":"2013-10-29T20:21:44.805Z","0.8.0":"2013-10-29T21:49:26.764Z","0.9.0":"2013-10-30T00:56:10.356Z","0.10.0":"2013-11-08T01:21:33.597Z","0.11.0":"2013-11-08T01:46:05.428Z","0.12.0":"2013-11-08T03:20:42.614Z","0.13.0":"2013-11-12T01:12:30.693Z","0.14.0":"2013-11-12T04:58:54.724Z","0.15.0":"2013-11-12T18:47:39.403Z","0.16.0":"2013-11-12T22:16:45.924Z","0.17.0":"2013-11-14T20:04:53.963Z","0.18.0":"2013-11-18T18:18:39.064Z","0.19.0":"2013-11-19T20:52:24.520Z","0.20.0":"2013-11-20T18:53:39.729Z","0.21.0":"2013-11-25T21:04:20.702Z","0.22.0":"2013-11-26T19:04:10.254Z","0.24.0":"2013-11-28T18:09:29.960Z","0.25.0":"2013-12-02T04:56:13.486Z","0.26.0":"2013-12-02T20:19:54.072Z","0.27.0":"2013-12-03T21:20:08.694Z","0.28.0":"2013-12-07T05:19:50.073Z","0.29.0":"2014-01-09T19:17:15.432Z","0.30.0":"2014-01-10T01:52:27.102Z","0.31.0":"2014-01-11T18:14:16.574Z","1.0.0":"2014-01-16T23:57:13.801Z","1.1.0":"2014-03-14T02:03:03.440Z","1.2.0":"2014-03-18T16:57:43.108Z","1.2.1":"2014-04-03T15:17:55.751Z","1.2.2":"2014-07-31T04:43:09.347Z","1.3.0":"2014-08-27T21:34:29.163Z","1.3.1":"2014-09-03T20:10:37.769Z","1.3.2":"2015-02-11T16:34:05.806Z","1.3.3":"2015-02-13T17:26:02.834Z"},"author":{"name":"Nathan Sobo"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"bugs":{"url":"https://github.com/atom/emissary/issues"},"readmeFilename":"README.md","_attachments":{},"_etag":"\"69VZDMIYNOBRCJYG1B7R3WCAB\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/es5-ext/.cache.json b/atom/.apm/registry.npmjs.org/es5-ext/.cache.json new file mode 100644 index 0000000..5102d0c --- /dev/null +++ b/atom/.apm/registry.npmjs.org/es5-ext/.cache.json @@ -0,0 +1 @@ +{"_id":"es5-ext","_rev":"66-7cace43d11221b496de0d689b9a76c11","name":"es5-ext","description":"ECMAScript 5 extensions and ES6 shims","dist-tags":{"latest":"0.10.7"},"versions":{"0.1.0":{"name":"es5-ext","version":"0.1.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extension","extensions"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"scripts":{"test":"node test/run"},"dependencies":{},"devDependencies":{},"_id":"es5-ext@0.1.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.5","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"16b216b0699c3249c3c62382b350d46611eea0eb","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.1.0.tgz"},"directories":{}},"0.2.0":{"name":"es5-ext","version":"0.2.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"scripts":{"test":"node test/run"},"devDependencies":{"test":"0.1.x","expresso":"0.7.x","jslint":"0.1.x"},"dependencies":{},"_id":"es5-ext@0.2.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"18a7e403db4127b77f0a724ef196ff4edd860856","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.2.0.tgz"},"directories":{}},"0.2.1":{"name":"es5-ext","version":"0.2.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"scripts":{"test":"node test/run"},"devDependencies":{"test":"0.1.x","expresso":"0.7.x","jslint":"0.1.x"},"dependencies":{},"_id":"es5-ext@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"8ba548d826fc81c858e4f71997f6164b4f7eb8fb","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.2.1.tgz"},"directories":{}},"0.3.0":{"name":"es5-ext","version":"0.3.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"dependencies":{},"devDependencies":{},"_id":"es5-ext@0.3.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"4920dd1cec7b4e98cf67d28077cdf3d56adc0581","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.3.0.tgz"},"scripts":{},"directories":{}},"0.4.0":{"name":"es5-ext","version":"0.4.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.4.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.4.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"69dc1d57e2c97485fe58ab662828f7a45a86476f","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.4.0.tgz"},"scripts":{},"directories":{}},"0.5.0":{"name":"es5-ext","version":"0.5.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.5.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.5.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"7ef8c2135c1bfc992882d7a6e28b73c58442c225","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.5.0.tgz"},"scripts":{},"directories":{}},"0.5.1":{"name":"es5-ext","version":"0.5.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.5.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.5.1","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"5331943d7aee72dd69b90a8c363119945d54e98f","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.5.1.tgz"},"scripts":{},"directories":{}},"0.6.0":{"name":"es5-ext","version":"0.6.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.6.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.6.0","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"25aefc7c7261f6f38a62d2364bdd1ac9f677faa4","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.0.tgz"},"scripts":{},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.6.1":{"name":"es5-ext","version":"0.6.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.6.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.6.1","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.5.4-pre","_defaultsLoaded":true,"dist":{"shasum":"80c91f3e9dc08e17e155b8de452e5dab8d45b566","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.1.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.6.2":{"name":"es5-ext","version":"0.6.2","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.6.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.6.2","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"65dfed8b36214e177c83316cc0e6742af2c8c589","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.2.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.6.3":{"name":"es5-ext","version":"0.6.3","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.6.3","dependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"53c14283b92a81474088bd856c021fe186380ba0","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.3.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.7.0":{"name":"es5-ext","version":"0.7.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.7.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"1c91f569b16d6667edbb405f6076c2c970635817","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.7.0.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.7.1":{"name":"es5-ext","version":"0.7.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.7.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a66028700ac031842ad55300bcc792abe6c240fe","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.7.1.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.8.0":{"name":"es5-ext","version":"0.8.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.8.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"954d7794f6e2f6fb9ec9b4a62e4c8bfd567c93ac","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.8.0.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.8.1":{"name":"es5-ext","version":"0.8.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.8.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"5083533c4926afee59f5b71e561d2db5954272a9","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.8.1.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.8.2":{"name":"es5-ext","version":"0.8.2","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.8.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"aba8d9e1943a895ac96837a62a39b3f55ecd94ab","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.8.2.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.9.0":{"name":"es5-ext","version":"0.9.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_id":"es5-ext@0.9.0","dist":{"shasum":"b0abf436fb7c87b7e7806d787cf46ed59a7baff3","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.9.0.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.9.1":{"name":"es5-ext","version":"0.9.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_id":"es5-ext@0.9.1","dist":{"shasum":"02d7f637c07347a12414645c876e98ba1b1904b9","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.9.1.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.9.2":{"name":"es5-ext","version":"0.9.2","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_id":"es5-ext@0.9.2","dist":{"shasum":"d2e309d1f223b0718648835acf5b8823a8061f8a","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.9.2.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.1":{"name":"es5-ext","version":"0.10.1","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"devDependencies":{"tad":"~0.1.21"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.1","dist":{"shasum":"8eb6d0eb516b3d652d44c431bb1927e2dd5ee77b","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.2":{"name":"es5-ext","version":"0.10.2","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"devDependencies":{"tad":"~0.1.21"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.2","dist":{"shasum":"1cb2b0aefe700151c17d08db49e480a85c565568","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.2.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.3":{"name":"es5-ext","version":"0.10.3","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.1","es6-symbol":"0.1.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.3","dist":{"shasum":"a1c9484880ea9023e110b429f803acb491898b83","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.3.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.4":{"name":"es5-ext","version":"0.10.4","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.1","es6-symbol":"0.1.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.4","dist":{"shasum":"f4d7d85d45acfbe93379d4c0948fbae6466ec876","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.4.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.5":{"name":"es5-ext","version":"0.10.5","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.2","es6-symbol":"~0.1.1"},"devDependencies":{"tad":"0.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"7cb71f45a4499e2426393a762f952158c3f0d50e","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.5","_shasum":"8393db0e26248dd4fbb16777cae6c51b012564fd","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"8393db0e26248dd4fbb16777cae6c51b012564fd","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.5.tgz"},"directories":{}},"0.10.6":{"name":"es5-ext","version":"0.10.6","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"fd4ef2f9f4a4bb23e4479a1fb56701f49623d469","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.6","_shasum":"e27d5750401a11c08259e3b9b5d3bdd3281df00a","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e27d5750401a11c08259e3b9b5d3bdd3281df00a","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.6.tgz"},"directories":{}},"0.10.7":{"name":"es5-ext","version":"0.10.7","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"5b63ee02f50dfbc70dc1f62bc66b8718af443f83","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.7","_shasum":"dfaea50721301042e2d89c1719d43493fa821656","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"dfaea50721301042e2d89c1719d43493fa821656","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"},"directories":{}}},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-04-22T09:29:59.033Z","created":"2011-05-24T12:08:10.946Z","0.1.0":"2011-05-24T12:08:13.301Z","0.2.0":"2011-05-28T19:45:11.317Z","0.2.1":"2011-05-28T19:52:12.161Z","0.3.0":"2011-06-24T16:26:12.203Z","0.4.0":"2011-07-05T19:40:10.112Z","0.5.0":"2011-07-07T19:46:31.289Z","0.5.1":"2011-07-11T19:15:11.351Z","0.6.0":"2011-08-07T13:47:11.437Z","0.6.1":"2011-08-08T14:46:02.854Z","0.6.2":"2011-08-12T11:31:10.048Z","0.6.3":"2011-12-12T13:54:08.164Z","0.7.0":"2011-12-27T12:18:08.711Z","0.7.1":"2012-05-02T20:23:44.289Z","0.8.0":"2012-05-28T14:50:28.942Z","0.8.1":"2012-06-13T13:19:03.016Z","0.8.2":"2012-06-22T11:05:51.478Z","0.9.0":"2012-09-13T12:46:16.805Z","0.9.1":"2012-09-17T11:06:05.818Z","0.9.2":"2013-03-11T15:07:30.376Z","0.10.0":"2014-02-21T17:00:15.761Z","0.10.1":"2014-04-13T13:11:02.845Z","0.10.2":"2014-04-24T15:02:40.426Z","0.10.3":"2014-04-29T18:18:10.716Z","0.10.4":"2014-04-30T20:34:00.095Z","0.10.5":"2015-01-20T09:51:46.358Z","0.10.6":"2015-02-02T12:03:48.011Z","0.10.7":"2015-04-22T09:29:59.033Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"readme":"# es5-ext\n## ECMAScript 5 extensions\n### (with respect to ECMAScript 6 standard)\n\nShims for upcoming ES6 standard and other goodies implemented strictly with ECMAScript conventions in mind.\n\nIt's designed to be used in compliant ECMAScript 5 or ECMAScript 6 environments. Older environments are not supported, although most of the features should work with correct ECMAScript 5 shim on board.\n\nWhen used in ECMAScript 6 environment, native implementation (if valid) takes precedence over shims.\n\n### Installation\n\n\t$ npm install es5-ext\n\t\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n### Usage\n\n#### ECMAScript 6 features\n\nYou can force ES6 features to be implemented in your environment, e.g. following will assign `from` function to `Array` (only if it's not implemented already).\n\n```javascript\nrequire('es5-ext/array/from/implement');\nArray.from('foo'); // ['f', 'o', 'o']\n```\n\nYou can also access shims directly, without fixing native objects. Following will return native `Array.from` if it's available and fallback to shim if it's not.\n\n```javascript\nvar aFrom = require('es5-ext/array/from');\naFrom('foo'); // ['f', 'o', 'o']\n```\n\nIf you want to use shim unconditionally (even if native implementation exists) do:\n\n```javascript\nvar aFrom = require('es5-ext/array/from/shim');\naFrom('foo'); // ['f', 'o', 'o']\n```\n\n##### List of ES6 shims\n\nIt's about properties introduced with ES6 and those that have been updated in new spec.\n\n- `Array.from` -> `require('es5-ext/array/from')`\n- `Array.of` -> `require('es5-ext/array/of')`\n- `Array.prototype.concat` -> `require('es5-ext/array/#/concat')`\n- `Array.prototype.copyWithin` -> `require('es5-ext/array/#/copy-within')`\n- `Array.prototype.entries` -> `require('es5-ext/array/#/entries')`\n- `Array.prototype.fill` -> `require('es5-ext/array/#/fill')`\n- `Array.prototype.filter` -> `require('es5-ext/array/#/filter')`\n- `Array.prototype.find` -> `require('es5-ext/array/#/find')`\n- `Array.prototype.findIndex` -> `require('es5-ext/array/#/find-index')`\n- `Array.prototype.keys` -> `require('es5-ext/array/#/keys')`\n- `Array.prototype.map` -> `require('es5-ext/array/#/map')`\n- `Array.prototype.slice` -> `require('es5-ext/array/#/slice')`\n- `Array.prototype.splice` -> `require('es5-ext/array/#/splice')`\n- `Array.prototype.values` -> `require('es5-ext/array/#/values')`\n- `Array.prototype[@@iterator]` -> `require('es5-ext/array/#/@@iterator')`\n- `Math.acosh` -> `require('es5-ext/math/acosh')`\n- `Math.asinh` -> `require('es5-ext/math/asinh')`\n- `Math.atanh` -> `require('es5-ext/math/atanh')`\n- `Math.cbrt` -> `require('es5-ext/math/cbrt')`\n- `Math.clz32` -> `require('es5-ext/math/clz32')`\n- `Math.cosh` -> `require('es5-ext/math/cosh')`\n- `Math.exmp1` -> `require('es5-ext/math/expm1')`\n- `Math.fround` -> `require('es5-ext/math/fround')`\n- `Math.hypot` -> `require('es5-ext/math/hypot')`\n- `Math.imul` -> `require('es5-ext/math/imul')`\n- `Math.log1p` -> `require('es5-ext/math/log1p')`\n- `Math.log2` -> `require('es5-ext/math/log2')`\n- `Math.log10` -> `require('es5-ext/math/log10')`\n- `Math.sign` -> `require('es5-ext/math/sign')`\n- `Math.signh` -> `require('es5-ext/math/signh')`\n- `Math.tanh` -> `require('es5-ext/math/tanh')`\n- `Math.trunc` -> `require('es5-ext/math/trunc')`\n- `Number.EPSILON` -> `require('es5-ext/number/epsilon')`\n- `Number.MAX_SAFE_INTEGER` -> `require('es5-ext/number/max-safe-integer')`\n- `Number.MIN_SAFE_INTEGER` -> `require('es5-ext/number/min-safe-integer')`\n- `Number.isFinite` -> `require('es5-ext/number/is-finite')`\n- `Number.isInteger` -> `require('es5-ext/number/is-integer')`\n- `Number.isNaN` -> `require('es5-ext/number/is-nan')`\n- `Number.isSafeInteger` -> `require('es5-ext/number/is-safe-integer')`\n- `Object.assign` -> `require('es5-ext/object/assign')`\n- `Object.keys` -> `require('es5-ext/object/keys')`\n- `Object.setPrototypeOf` -> `require('es5-ext/object/set-prototype-of')`\n- `RegExp.prototype.match` -> `require('es5-ext/reg-exp/#/match')`\n- `RegExp.prototype.replace` -> `require('es5-ext/reg-exp/#/replace')`\n- `RegExp.prototype.search` -> `require('es5-ext/reg-exp/#/search')`\n- `RegExp.prototype.split` -> `require('es5-ext/reg-exp/#/split')`\n- `RegExp.prototype.sticky` -> Implement with `require('es5-ext/reg-exp/#/sticky/implement')`, use as function with `require('es5-ext/reg-exp/#/is-sticky')`\n- `RegExp.prototype.unicode` -> Implement with `require('es5-ext/reg-exp/#/unicode/implement')`, use as function with `require('es5-ext/reg-exp/#/is-unicode')`\n- `String.fromCodePoint` -> `require('es5-ext/string/from-code-point')`\n- `String.raw` -> `require('es5-ext/string/raw')`\n- `String.prototype.codePointAt` -> `require('es5-ext/string/#/code-point-at')`\n- `String.prototype.contains` -> `require('es5-ext/string/#/contains')`\n- `String.prototype.endsWith` -> `require('es5-ext/string/#/ends-with')`\n- `String.prototype.normalize` -> `require('es5-ext/string/#/normalize')`\n- `String.prototype.repeat` -> `require('es5-ext/string/#/repeat')`\n- `String.prototype.startsWith` -> `require('es5-ext/string/#/starts-with')`\n- `String.prototype[@@iterator]` -> `require('es5-ext/string/#/@@iterator')`\n\n#### Non ECMAScript standard features\n\n__es5-ext__ provides also other utils, and implements them as if they were proposed for a standard. It mostly offers methods (not functions) which can directly be assigned to native prototypes:\n\n```javascript\nObject.defineProperty(Function.prototype, 'partial', { value: require('es5-ext/function/#/partial'),\n configurable: true, enumerable: false, writable: true });\nObject.defineProperty(Array.prototype, 'flatten', { value: require('es5-ext/array/#/flatten'),\n configurable: true, enumerable: false, writable: true });\nObject.defineProperty(String.prototype, 'capitalize', { value: require('es5-ext/string/#/capitalize'),\n configurable: true, enumerable: false, writable: true });\n```\n\nSee [es5-extend](https://github.com/wookieb/es5-extend#es5-extend), a great utility that automatically will extend natives for you. \n\n__Important:__ Remember to __not__ extend natives in scope of generic reusable packages (e.g. ones you intend to publish to npm). Extending natives is fine __only__ if you're the _owner_ of the global scope, so e.g. in final project you lead development of.\n\nWhen you're in situation when native extensions are not good idea, then you should use methods indirectly:\n\n\n```javascript\nvar flatten = require('es5-ext/array/#/flatten');\n\nflatten.call([1, [2, [3, 4]]]); // [1, 2, 3, 4]\n```\n\nfor better convenience you can turn methods into functions:\n\n\n```javascript\nvar call = Function.prototype.call\nvar flatten = call.bind(require('es5-ext/array/#/flatten'));\n\nflatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]\n```\n\nYou can configure custom toolkit (like [underscorejs](http://underscorejs.org/)), and use it throughout your application\n\n```javascript\nvar util = {};\nutil.partial = call.bind(require('es5-ext/function/#/partial'));\nutil.flatten = call.bind(require('es5-ext/array/#/flatten'));\nutil.startsWith = call.bind(require('es5-ext/string/#/starts-with'));\n\nutil.flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]\n```\n\nAs with native ones most methods are generic and can be run on any type of object.\n\n## API\n\n### Global extensions\n\n#### global _(es5-ext/global)_\n\nObject that represents global scope\n\n### Array Constructor extensions\n\n#### from(arrayLike[, mapFn[, thisArg]]) _(es5-ext/array/from)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from). \nReturns array representation of _iterable_ or _arrayLike_. If _arrayLike_ is an instance of array, its copy is returned.\n\n#### generate([length[, …fill]]) _(es5-ext/array/generate)_\n\nGenerate an array of pre-given _length_ built of repeated arguments.\n\n#### isPlainArray(x) _(es5-ext/array/is-plain-array)_\n\nReturns true if object is plain array (not instance of one of the Array's extensions).\n\n#### of([…items]) _(es5-ext/array/of)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.of). \nCreate an array from given arguments.\n\n#### toArray(obj) _(es5-ext/array/to-array)_\n\nReturns array representation of `obj`. If `obj` is already an array, `obj` is returned back.\n\n#### validArray(obj) _(es5-ext/array/valid-array)_\n\nReturns `obj` if it's an array, otherwise throws `TypeError`\n\n### Array Prototype extensions\n\n#### arr.binarySearch(compareFn) _(es5-ext/array/#/binary-search)_\n\nIn __sorted__ list search for index of item for which _compareFn_ returns value closest to _0_. \nIt's variant of binary search algorithm\n\n#### arr.clear() _(es5-ext/array/#/clear)_\n\nClears the array\n\n#### arr.compact() _(es5-ext/array/#/compact)_\n\nReturns a copy of the context with all non-values (`null` or `undefined`) removed.\n\n#### arr.concat() _(es5-ext/array/#/concat)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.concat). \nES6's version of `concat`. Supports `isConcatSpreadable` symbol, and returns array of same type as the context.\n\n#### arr.contains(searchElement[, position]) _(es5-ext/array/#/contains)_\n\nWhether list contains the given value.\n\n#### arr.copyWithin(target, start[, end]) _(es5-ext/array/#/copy-within)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.copywithin). \n\n#### arr.diff(other) _(es5-ext/array/#/diff)_\n\nReturns the array of elements that are present in context list but not present in other list.\n\n#### arr.eIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-index-of)_\n\n_egal_ version of `indexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision\n\n#### arr.eLastIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-last-index-of)_\n\n_egal_ version of `lastIndexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision\n\n#### arr.entries() _(es5-ext/array/#/entries)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.entries). \nReturns iterator object, which traverses the array. Each value is represented with an array, where first value is an index and second is corresponding to index value.\n\n#### arr.exclusion([…lists]]) _(es5-ext/array/#/exclusion)_\n\nReturns the array of elements that are found only in one of the lists (either context list or list provided in arguments).\n\n#### arr.fill(value[, start, end]) _(es5-ext/array/#/fill)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.fill). \n\n#### arr.filter(callback[, thisArg]) _(es5-ext/array/#/filter)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.filter). \nES6's version of `filter`, returns array of same type as the context.\n\n#### arr.find(predicate[, thisArg]) _(es5-ext/array/#/find)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.find). \nReturn first element for which given function returns true\n\n#### arr.findIndex(predicate[, thisArg]) _(es5-ext/array/#/find-index)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.findindex). \nReturn first index for which given function returns true\n\n#### arr.first() _(es5-ext/array/#/first)_\n\nReturns value for first defined index\n\n#### arr.firstIndex() _(es5-ext/array/#/first-index)_\n\nReturns first declared index of the array\n\n#### arr.flatten() _(es5-ext/array/#/flatten)_\n\nReturns flattened version of the array\n\n#### arr.forEachRight(cb[, thisArg]) _(es5-ext/array/#/for-each-right)_\n\n`forEach` starting from last element\n\n#### arr.group(cb[, thisArg]) _(es5-ext/array/#/group)_\n\nGroup list elements by value returned by _cb_ function\n\n#### arr.indexesOf(searchElement[, fromIndex]) _(es5-ext/array/#/indexes-of)_\n\nReturns array of all indexes of given value\n\n#### arr.intersection([…lists]) _(es5-ext/array/#/intersection)_\n\nComputes the array of values that are the intersection of all lists (context list and lists given in arguments)\n\n#### arr.isCopy(other) _(es5-ext/array/#/is-copy)_\n\nReturns true if both context and _other_ lists have same content\n\n#### arr.isUniq() _(es5-ext/array/#/is-uniq)_\n\nReturns true if all values in array are unique\n\n#### arr.keys() _(es5-ext/array/#/keys)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.keys). \nReturns iterator object, which traverses all array indexes.\n\n#### arr.last() _(es5-ext/array/#/last)_\n\nReturns value of last defined index\n\n#### arr.lastIndex() _(es5-ext/array/#/last)_\n\nReturns last defined index of the array\n\n#### arr.map(callback[, thisArg]) _(es5-ext/array/#/map)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.map). \nES6's version of `map`, returns array of same type as the context.\n\n#### arr.remove(value[, …valuen]) _(es5-ext/array/#/remove)_\n\nRemove values from the array\n\n#### arr.separate(sep) _(es5-ext/array/#/separate)_\n\nReturns array with items separated with `sep` value\n\n#### arr.slice(callback[, thisArg]) _(es5-ext/array/#/slice)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.slice). \nES6's version of `slice`, returns array of same type as the context.\n\n#### arr.someRight(cb[, thisArg]) _(es5-ext/array/#/someRight)_\n\n`some` starting from last element\n\n#### arr.splice(callback[, thisArg]) _(es5-ext/array/#/splice)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.splice). \nES6's version of `splice`, returns array of same type as the context.\n\n#### arr.uniq() _(es5-ext/array/#/uniq)_\n\nReturns duplicate-free version of the array\n\n#### arr.values() _(es5-ext/array/#/values)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.values). \nReturns iterator object which traverses all array values.\n\n#### arr[@@iterator] _(es5-ext/array/#/@@iterator)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype-@@iterator). \nReturns iterator object which traverses all array values.\n\n### Boolean Constructor extensions\n\n#### isBoolean(x) _(es5-ext/boolean/is-boolean)_\n\nWhether value is boolean\n\n### Date Constructor extensions\n\n#### isDate(x) _(es5-ext/date/is-date)_\n\nWhether value is date instance\n\n#### validDate(x) _(es5-ext/date/valid-date)_\n\nIf given object is not date throw TypeError in other case return it.\n\n### Date Prototype extensions\n\n#### date.copy(date) _(es5-ext/date/#/copy)_\n\nReturns a copy of the date object\n\n#### date.daysInMonth() _(es5-ext/date/#/days-in-month)_\n\nReturns number of days of date's month\n\n#### date.floorDay() _(es5-ext/date/#/floor-day)_\n\nSets the date time to 00:00:00.000\n\n#### date.floorMonth() _(es5-ext/date/#/floor-month)_\n\nSets date day to 1 and date time to 00:00:00.000\n\n#### date.floorYear() _(es5-ext/date/#/floor-year)_\n\nSets date month to 0, day to 1 and date time to 00:00:00.000\n\n#### date.format(pattern) _(es5-ext/date/#/format)_\n\nFormats date up to given string. Supported patterns:\n\n* `%Y` - Year with century, 1999, 2003\n* `%y` - Year without century, 99, 03\n* `%m` - Month, 01..12\n* `%d` - Day of the month 01..31\n* `%H` - Hour (24-hour clock), 00..23\n* `%M` - Minute, 00..59\n* `%S` - Second, 00..59\n* `%L` - Milliseconds, 000..999\n\n### Error Constructor extensions\n\n#### custom(message/*, code, ext*/) _(es5-ext/error/custom)_\n\nCreates custom error object, optinally extended with `code` and other extension properties (provided with `ext` object) \n\n#### isError(x) _(es5-ext/error/is-error)_\n\nWhether value is an error (instance of `Error`). \n\n#### validError(x) _(es5-ext/error/valid-error)_\n\nIf given object is not error throw TypeError in other case return it.\n\n### Error Prototype extensions\n\n#### err.throw() _(es5-ext/error/#/throw)_\n\nThrows error\n\n### Function Constructor extensions\n\nSome of the functions were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele\n\n#### constant(x) _(es5-ext/function/constant)_\n\nReturns a constant function that returns pregiven argument\n\n_k(x)(y) =def x_\n\n#### identity(x) _(es5-ext/function/identity)_\n\nIdentity function. Returns first argument\n\n_i(x) =def x_\n\n#### invoke(name[, …args]) _(es5-ext/function/invoke)_\n\nReturns a function that takes an object as an argument, and applies object's\n_name_ method to arguments. \n_name_ can be name of the method or method itself.\n\n_invoke(name, …args)(object, …args2) =def object\\[name\\]\\(…args, …args2\\)_\n\n#### isArguments(x) _(es5-ext/function/is-arguments)_\n\nWhether value is arguments object\n\n#### isFunction(arg) _(es5-ext/function/is-function)_\n\nWether value is instance of function\n\n#### noop() _(es5-ext/function/noop)_\n\nNo operation function\n\n#### pluck(name) _(es5-ext/function/pluck)_\n\nReturns a function that takes an object, and returns the value of its _name_\nproperty\n\n_pluck(name)(obj) =def obj[name]_\n\n#### validFunction(arg) _(es5-ext/function/valid-function)_\n\nIf given object is not function throw TypeError in other case return it.\n\n### Function Prototype extensions\n\nSome of the methods were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele\n\n#### fn.compose([…fns]) _(es5-ext/function/#/compose)_\n\nApplies the functions in reverse argument-list order.\n\n_f1.compose(f2, f3, f4)(…args) =def f1(f2(f3(f4(…arg))))_\n\n#### fn.copy() _(es5-ext/function/#/copy)_\n\nProduces copy of given function\n\n#### fn.curry([n]) _(es5-ext/function/#/curry)_\n\nInvoking the function returned by this function only _n_ arguments are passed to the underlying function. If the underlying function is not saturated, the result is a function that passes all its arguments to the underlying function. \nIf _n_ is not provided then it defaults to context function length\n\n_f.curry(4)(arg1, arg2)(arg3)(arg4) =def f(arg1, args2, arg3, arg4)_\n\n#### fn.lock([…args]) _(es5-ext/function/#/lock)_\n\nReturns a function that applies the underlying function to _args_, and ignores its own arguments.\n\n_f.lock(…args)(…args2) =def f(…args)_\n\n_Named after it's counterpart in Google Closure_\n\n#### fn.not() _(es5-ext/function/#/not)_\n\nReturns a function that returns boolean negation of value returned by underlying function.\n\n_f.not()(…args) =def !f(…args)_\n\n#### fn.partial([…args]) _(es5-ext/function/#/partial)_\n\nReturns a function that when called will behave like context function called with initially passed arguments. If more arguments are suplilied, they are appended to initial args.\n\n_f.partial(…args1)(…args2) =def f(…args1, …args2)_\n\n#### fn.spread() _(es5-ext/function/#/spread)_\n\nReturns a function that applies underlying function with first list argument\n\n_f.match()(args) =def f.apply(null, args)_\n\n#### fn.toStringTokens() _(es5-ext/function/#/to-string-tokens)_\n\nSerializes function into two (arguments and body) string tokens. Result is plain object with `args` and `body` properties.\n\n### Math extensions\n\n#### acosh(x) _(es5-ext/math/acosh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.acosh). \n\n#### asinh(x) _(es5-ext/math/asinh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.asinh). \n\n#### atanh(x) _(es5-ext/math/atanh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.atanh). \n\n#### cbrt(x) _(es5-ext/math/cbrt)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cbrt). \n\n#### clz32(x) _(es5-ext/math/clz32)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.clz32). \n\n#### cosh(x) _(es5-ext/math/cosh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cosh). \n\n#### expm1(x) _(es5-ext/math/expm1)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.expm1). \n\n#### fround(x) _(es5-ext/math/fround)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.fround). \n\n#### hypot([…values]) _(es5-ext/math/hypot)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.hypot). \n\n#### imul(x, y) _(es5-ext/math/imul)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.imul). \n\n#### log1p(x) _(es5-ext/math/log1p)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log1p). \n\n#### log2(x) _(es5-ext/math/log2)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log2). \n\n#### log10(x) _(es5-ext/math/log10)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log10). \n\n#### sign(x) _(es5-ext/math/sign)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sign). \n\n#### sinh(x) _(es5-ext/math/sinh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sinh). \n\n#### tanh(x) _(es5-ext/math/tanh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.tanh). \n\n#### trunc(x) _(es5-ext/math/trunc)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.trunc). \n\n### Number Constructor extensions\n\n#### EPSILON _(es5-ext/number/epsilon)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.epsilon). \n\nThe difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.\n\n#### isFinite(x) _(es5-ext/number/is-finite)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite). \nWhether value is finite. Differs from global isNaN that it doesn't do type coercion.\n\n#### isInteger(x) _(es5-ext/number/is-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger). \nWhether value is integer.\n\n#### isNaN(x) _(es5-ext/number/is-nan)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan). \nWhether value is NaN. Differs from global isNaN that it doesn't do type coercion.\n\n#### isNumber(x) _(es5-ext/number/is-number)_\n\nWhether given value is number\n\n#### isSafeInteger(x) _(es5-ext/number/is-safe-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.issafeinteger). \n\n#### MAX_SAFE_INTEGER _(es5-ext/number/max-safe-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.maxsafeinteger). \nThe value of Number.MAX_SAFE_INTEGER is 9007199254740991.\n\n#### MIN_SAFE_INTEGER _(es5-ext/number/min-safe-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.minsafeinteger). \nThe value of Number.MIN_SAFE_INTEGER is -9007199254740991 (253-1).\n\n#### toInteger(x) _(es5-ext/number/to-integer)_\n\nConverts value to integer\n\n#### toPosInteger(x) _(es5-ext/number/to-pos-integer)_\n\nConverts value to positive integer. If provided value is less than 0, then 0 is returned\n\n#### toUint32(x) _(es5-ext/number/to-uint32)_\n\nConverts value to unsigned 32 bit integer. This type is used for array lengths.\nSee: http://www.2ality.com/2012/02/js-integers.html\n\n### Number Prototype extensions\n\n#### num.pad(length[, precision]) _(es5-ext/number/#/pad)_\n\nPad given number with zeros. Returns string\n\n### Object Constructor extensions\n\n#### assign(target, source[, …sourcen]) _(es5-ext/object/assign)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign). \nExtend _target_ by enumerable own properties of other objects. If properties are already set on target object, they will be overwritten.\n\n#### clear(obj) _(es5-ext/object/clear)_\n\nRemove all enumerable own properties of the object\n\n#### compact(obj) _(es5-ext/object/compact)_\n\nReturns copy of the object with all enumerable properties that have no falsy values\n\n#### compare(obj1, obj2) _(es5-ext/object/compare)_\n\nUniversal cross-type compare function. To be used for e.g. array sort.\n\n#### copy(obj) _(es5-ext/object/copy)_\n\nReturns copy of the object with all enumerable properties.\n\n#### copyDeep(obj) _(es5-ext/object/copy-deep)_\n\nReturns deep copy of the object with all enumerable properties.\n\n#### count(obj) _(es5-ext/object/count)_\n\nCounts number of enumerable own properties on object\n\n#### create(obj[, properties]) _(es5-ext/object/create)_\n\n`Object.create` alternative that provides workaround for [V8 issue](http://code.google.com/p/v8/issues/detail?id=2804).\n\nWhen `null` is provided as a prototype, it's substituted with specially prepared object that derives from Object.prototype but has all Object.prototype properties shadowed with undefined.\n\nIt's quirky solution that allows us to have plain objects with no truthy properties but with turnable prototype.\n\nUse only for objects that you plan to switch prototypes of and be aware of limitations of this workaround.\n\n#### eq(x, y) _(es5-ext/object/eq)_\n\nWhether two values are equal, using [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.\n\n#### every(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/every)_\n\nAnalogous to Array.prototype.every. Returns true if every key-value pair in this object satisfies the provided testing function. \nOptionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### filter(obj, cb[, thisArg]) _(es5-ext/object/filter)_\n\nAnalogous to Array.prototype.filter. Returns new object with properites for which _cb_ function returned truthy value.\n\n#### firstKey(obj) _(es5-ext/object/first-key)_\n\nReturns first enumerable key of the object, as keys are unordered by specification, it can be any key of an object.\n\n#### flatten(obj) _(es5-ext/object/flatten)_\n\nReturns new object, with flatten properties of input object\n\n_flatten({ a: { b: 1 }, c: { d: 1 } }) =def { b: 1, d: 1 }_\n\n#### forEach(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/for-each)_\n\nAnalogous to Array.prototype.forEach. Calls a function for each key-value pair found in object\nOptionally _compareFn_ can be provided which assures that properties are iterated in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### getPropertyNames() _(es5-ext/object/get-property-names)_\n\nGet all (not just own) property names of the object\n\n#### is(x, y) _(es5-ext/object/is)_\n\nWhether two values are equal, using [_SameValue_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.\n\n#### isArrayLike(x) _(es5-ext/object/is-array-like)_\n\nWhether object is array-like object\n\n#### isCopy(x, y) _(es5-ext/object/is-copy)_\n\nTwo values are considered a copy of same value when all of their own enumerable properties have same values.\n\n#### isCopyDeep(x, y) _(es5-ext/object/is-copy-deep)_\n\nDeep comparision of objects\n\n#### isEmpty(obj) _(es5-ext/object/is-empty)_\n\nTrue if object doesn't have any own enumerable property\n\n#### isObject(arg) _(es5-ext/object/is-object)_\n\nWhether value is not primitive\n\n#### isPlainObject(arg) _(es5-ext/object/is-plain-object)_\n\nWhether object is plain object, its protototype should be Object.prototype and it cannot be host object.\n\n#### keyOf(obj, searchValue) _(es5-ext/object/key-of)_\n\nSearch object for value\n\n#### keys(obj) _(es5-ext/object/keys)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys). \nES6's version of `keys`, doesn't throw on primitive input\n\n#### map(obj, cb[, thisArg]) _(es5-ext/object/map)_\n\nAnalogous to Array.prototype.map. Creates a new object with properties which values are results of calling a provided function on every key-value pair in this object.\n\n#### mapKeys(obj, cb[, thisArg]) _(es5-ext/object/map-keys)_\n\nCreate new object with same values, but remapped keys\n\n#### mixin(target, source) _(es5-ext/object/mixin)_\n\nExtend _target_ by all own properties of other objects. Properties found in both objects will be overwritten (unless they're not configurable and cannot be overwritten).\n_It was for a moment part of ECMAScript 6 draft._\n\n#### mixinPrototypes(target, …source]) _(es5-ext/object/mixin-prototypes)_\n\nExtends _target_, with all source and source's prototype properties.\nUseful as an alternative for `setPrototypeOf` in environments in which it cannot be shimmed (no `__proto__` support).\n\n#### normalizeOptions(options) _(es5-ext/object/normalize-options)_\n\nNormalizes options object into flat plain object. \n\nUseful for functions in which we either need to keep options object for future reference or need to modify it for internal use.\n\n- It never returns input `options` object back (always a copy is created)\n- `options` can be undefined in such case empty plain object is returned.\n- Copies all enumerable properties found down prototype chain.\n\n#### primitiveSet([…names]) _(es5-ext/object/primitive-set)_\n\nCreates `null` prototype based plain object, and sets on it all property names provided in arguments to true.\n\n#### safeTraverse(obj[, …names]) _(es5-ext/object/safe-traverse)_\n\nSafe navigation of object properties. See http://wiki.ecmascript.org/doku.php?id=strawman:existential_operator\n\n#### serialize(value) _(es5-ext/object/serialize)_\n\nSerialize value into string. Differs from [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that it serializes also dates, functions and regular expresssions.\n\n#### setPrototypeOf(object, proto) _(es5-ext/object/set-prototype-of)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.setprototypeof). \nIf native version is not provided, it depends on existence of `__proto__` functionality, if it's missing, `null` instead of function is exposed.\n\n#### some(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/some)_\n\nAnalogous to Array.prototype.some Returns true if any key-value pair satisfies the provided\ntesting function. \nOptionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### toArray(obj[, cb[, thisArg[, compareFn]]]) _(es5-ext/object/to-array)_\n\nCreates an array of results of calling a provided function on every key-value pair in this object. \nOptionally _compareFn_ can be provided which assures that results are added in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### unserialize(str) _(es5-ext/object/unserialize)_\n\nUserializes value previously serialized with [serialize](#serializevalue-es5-extobjectserialize)\n\n#### validCallable(x) _(es5-ext/object/valid-callable)_\n\nIf given object is not callable throw TypeError in other case return it.\n\n#### validObject(x) _(es5-ext/object/valid-object)_\n\nThrows error if given value is not an object, otherwise it is returned.\n\n#### validValue(x) _(es5-ext/object/valid-value)_\n\nThrows error if given value is `null` or `undefined`, otherwise returns value.\n\n### RegExp Constructor extensions\n\n#### escape(str) _(es5-ext/reg-exp/escape)_\n\nEscapes string to be used in regular expression\n\n#### isRegExp(x) _(es5-ext/reg-exp/is-reg-exp)_\n\nWhether object is regular expression\n\n#### validRegExp(x) _(es5-ext/reg-exp/valid-reg-exp)_\n\nIf object is regular expression it is returned, otherwise TypeError is thrown.\n\n### RegExp Prototype extensions\n\n#### re.isSticky(x) _(es5-ext/reg-exp/#/is-sticky)_\n\nWhether regular expression has `sticky` flag.\n\nIt's to be used as counterpart to [regExp.sticky](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.sticky) if it's not implemented.\n\n#### re.isUnicode(x) _(es5-ext/reg-exp/#/is-unicode)_\n\nWhether regular expression has `unicode` flag.\n\nIt's to be used as counterpart to [regExp.unicode](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.unicode) if it's not implemented.\n\n#### re.match(string) _(es5-ext/reg-exp/#/match)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.match). \n\n#### re.replace(string, replaceValue) _(es5-ext/reg-exp/#/replace)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.replace). \n\n#### re.search(string) _(es5-ext/reg-exp/#/search)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.search). \n\n#### re.split(string) _(es5-ext/reg-exp/#/search)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.split). \n\n#### re.sticky _(es5-ext/reg-exp/#/sticky/implement)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.sticky). \nIt's a getter, so only `implement` and `is-implemented` modules are provided.\n\n#### re.unicode _(es5-ext/reg-exp/#/unicode/implement)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.unicode). \nIt's a getter, so only `implement` and `is-implemented` modules are provided.\n\n### String Constructor extensions\n\n#### formatMethod(fMap) _(es5-ext/string/format-method)_\n\nCreates format method. It's used e.g. to create `Date.prototype.format` method\n\n#### fromCodePoint([…codePoints]) _(es5-ext/string/from-code-point)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.fromcodepoint)\n\n#### isString(x) _(es5-ext/string/is-string)_\n\nWhether object is string\n\n#### randomUniq() _(es5-ext/string/random-uniq)_\n\nReturns randomly generated id, with guarantee of local uniqueness (no same id will be returned twice)\n\n#### raw(callSite[, …substitutions]) _(es5-ext/string/raw)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.raw)\n\n### String Prototype extensions\n\n#### str.at(pos) _(es5-ext/string/#/at)_\n\n_Proposed for ECMAScript 6/7 standard, but not (yet) in a draft_\n\nReturns a string at given position in Unicode-safe manner.\nBased on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.at).\n\n#### str.camelToHyphen() _(es5-ext/string/#/camel-to-hyphen)_\n\nConvert camelCase string to hyphen separated, e.g. one-two-three -> oneTwoThree.\nUseful when converting names from js property convention into filename convention.\n\n#### str.capitalize() _(es5-ext/string/#/capitalize)_\n\nCapitalize first character of a string\n\n#### str.caseInsensitiveCompare(str) _(es5-ext/string/#/case-insensitive-compare)_\n\nCase insensitive compare\n\n#### str.codePointAt(pos) _(es5-ext/string/#/code-point-at)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.codepointat)\n\nBased on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.codePointAt).\n\n#### str.contains(searchString[, position]) _(es5-ext/string/#/contains)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.contains)\n\nWhether string contains given string.\n\n#### str.endsWith(searchString[, endPosition]) _(es5-ext/string/#/ends-with)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.endswith). \nWhether strings ends with given string\n\n#### str.hyphenToCamel() _(es5-ext/string/#/hyphen-to-camel)_\n\nConvert hyphen separated string to camelCase, e.g. one-two-three -> oneTwoThree.\nUseful when converting names from filename convention to js property name convention.\n\n#### str.indent(str[, count]) _(es5-ext/string/#/indent)_\n\nIndents each line with provided _str_ (if _count_ given then _str_ is repeated _count_ times).\n\n#### str.last() _(es5-ext/string/#/last)_\n\nReturn last character\n\n#### str.normalize([form]) _(es5-ext/string/#/normalize)_\n\n[_Introduced with ECMAScript 6_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize). \nReturns the Unicode Normalization Form of a given string. \nBased on Matsuza's version. Code used for integrated shim can be found at [github.com/walling/unorm](https://github.com/walling/unorm/blob/master/lib/unorm.js)\n\n#### str.pad(fill[, length]) _(es5-ext/string/#/pad)_\n\nPad string with _fill_.\nIf _length_ si given than _fill_ is reapated _length_ times.\nIf _length_ is negative then pad is applied from right.\n\n#### str.repeat(n) _(es5-ext/string/#/repeat)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.repeat). \nRepeat given string _n_ times\n\n#### str.plainReplace(search, replace) _(es5-ext/string/#/plain-replace)_\n\nSimple `replace` version. Doesn't support regular expressions. Replaces just first occurrence of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).\n\n#### str.plainReplaceAll(search, replace) _(es5-ext/string/#/plain-replace-all)_\n\nSimple `replace` version. Doesn't support regular expressions. Replaces all occurrences of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).\n\n#### str.startsWith(searchString[, position]) _(es5-ext/string/#/starts-with)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.startswith). \nWhether strings starts with given string\n\n#### str[@@iterator] _(es5-ext/string/#/@@iterator)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator). \nReturns iterator object which traverses all string characters (with respect to unicode symbols)\n\n### Tests [![Build Status](https://travis-ci.org/medikoo/es5-ext.png)](https://travis-ci.org/medikoo/es5-ext)\n\n\t$ npm test\n","readmeFilename":"README.md","keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","users":{"mcharytoniuk":true,"goldenboy":true,"fgvutn":true,"ruchirgodura":true,"jonatasnona":true},"license":"MIT","_attachments":{},"_etag":"\"CXF8M5X8HKQ0AHC7EZ2R94WVX\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/es6-iterator/.cache.json b/atom/.apm/registry.npmjs.org/es6-iterator/.cache.json new file mode 100644 index 0000000..3639514 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/es6-iterator/.cache.json @@ -0,0 +1 @@ +{"_id":"es6-iterator","_rev":"13-31ea75fe958c00c6c8c7c5483f4b0e7d","name":"es6-iterator","description":"Iterator abstraction based on ES6 specification","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.0":{"name":"es6-iterator","version":"0.0.0","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"dependencies":{"d":"git://github.com/medikoo/d.git","es5-ext":"git://github.com/medikoo/es5-ext.git"},"devDependencies":{"event-emitter":"git://github.com/medikoo/event-emitter.git","tad":"~0.1.19"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"_id":"es6-iterator@0.0.0","dist":{"shasum":"b3180d6bddd322f6f3f3b1ed3bc60b6b8947c8c9","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.0":{"name":"es6-iterator","version":"0.1.0","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2","es6-symbol":"~0.1.1"},"devDependencies":{"event-emitter":"~0.3.1","tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.0","dist":{"shasum":"67df1a08d2bf1b921a09f18cf5a6ba3cd4041a39","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"es6-iterator","version":"0.1.1","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2","es6-symbol":"0.1.x"},"devDependencies":{"event-emitter":"~0.3.1","tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.1","dist":{"shasum":"5e136c899aa1c26296414f90859b73934812d275","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.2":{"name":"es6-iterator","version":"0.1.2","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4","es6-symbol":"~0.1.1"},"devDependencies":{"event-emitter":"~0.3.1","tad":"0.2","xlint":"~0.2.1","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"3a7a93d1e20af6d3acba8e4b68fc95107c9c6613","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.2","_shasum":"a37429ead74e5c9ed95068b0dc904c568d9a9b6a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"a37429ead74e5c9ed95068b0dc904c568d9a9b6a","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.2.tgz"},"directories":{}},"0.1.3":{"name":"es6-iterator","version":"0.1.3","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5","es6-symbol":"~2.0.1"},"devDependencies":{"event-emitter":"~0.3.3","tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"2addc362c6f139e4941cf4726eeb59e5960c5cef","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.3","_shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"},"directories":{}},"1.0.0":{"name":"es6-iterator","version":"1.0.0","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.7","es6-symbol":"^2.0.1"},"devDependencies":{"event-emitter":"^0.3.3","tad":"^0.2.3","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.3"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"bab50dcd623d51d9e5568fe3aa2ac01f6053c066","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator#readme","_id":"es6-iterator@1.0.0","_shasum":"dc3fb5d4c4aa14e4d36daa79fe4e95c27d4b32d1","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.5","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"dist":{"shasum":"dc3fb5d4c4aa14e4d36daa79fe4e95c27d4b32d1","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-1.0.0.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}}},"readme":"# es6-iterator\n## ECMAScript 6 Iterator interface\n\n### Installation\n\n\t$ npm install es6-iterator\n\t\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n## API\n\n### Constructors\n\n#### Iterator(list) _(es6-iterator)_\n\nAbstract Iterator interface. Meant for extensions and not to be used on its own.\n\nAccepts any _list_ object (technically object with numeric _length_ property).\n\n_Mind it doesn't iterate strings properly, for that use dedicated [StringIterator](#string-iterator)_\n\n```javascript\nvar Iterator = require('es6-iterator')\nvar iterator = new Iterator([1, 2, 3]);\n\niterator.next(); // { value: 1, done: false }\niterator.next(); // { value: 2, done: false }\niterator.next(); // { value: 3, done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\n\n#### ArrayIterator(arrayLike[, kind]) _(es6-iterator/array)_\n\nDedicated for arrays and array-likes. Supports three iteration kinds:\n* __value__ _(default)_ - Iterates values\n* __key__ - Iterates indexes\n* __key+value__ - Iterates keys and indexes, each iteration value is in _[key, value]_ form.\n\n\n```javascript\nvar ArrayIterator = require('es6-iterator/array')\nvar iterator = new ArrayIterator([1, 2, 3], 'key+value');\n\niterator.next(); // { value: [0, 1], done: false }\niterator.next(); // { value: [1, 2], done: false }\niterator.next(); // { value: [2, 3], done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\nMay also be used for _arguments_ objects:\n\n```javascript\n(function () {\n var iterator = new ArrayIterator(arguments);\n\n iterator.next(); // { value: 1, done: false }\n iterator.next(); // { value: 2, done: false }\n iterator.next(); // { value: 3, done: false }\n iterator.next(); // { value: undefined, done: true }\n}(1, 2, 3));\n```\n\n#### StringIterator(str) _(es6-iterator/string)_\n\nAssures proper iteration over unicode symbols. \nSee: http://mathiasbynens.be/notes/javascript-unicode\n\n```javascript\nvar StringIterator = require('es6-iterator/string');\nvar iterator = new StringIterator('f🙈o🙉o🙊');\n\niterator.next(); // { value: 'f', done: false }\niterator.next(); // { value: '🙈', done: false }\niterator.next(); // { value: 'o', done: false }\niterator.next(); // { value: '🙉', done: false }\niterator.next(); // { value: 'o', done: false }\niterator.next(); // { value: '🙊', done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\n### Function utilities\n\n#### forOf(iterable, callback[, thisArg]) _(es6-iterator/for-of)_\n\nPolyfill for ECMAScript 6 [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) statement.\n\n```\nvar forOf = require('es6-iterator/for-of');\nvar result = [];\n\nforOf('🙈🙉🙊', function (monkey) { result.push(monkey); });\nconsole.log(result); // ['🙈', '🙉', '🙊'];\n```\n\nOptionally you can break iteration at any point:\n\n```javascript\nvar result = [];\n\nforOf([1,2,3,4]', function (val, doBreak) {\n result.push(monkey);\n if (val >= 3) doBreak();\n});\nconsole.log(result); // [1, 2, 3];\n```\n\n#### get(obj) _(es6-iterator/get)_\n\nReturn iterator for any iterable object.\n\n```javascript\nvar getIterator = require('es6-iterator/get');\nvar iterator = get([1,2,3]);\n\niterator.next(); // { value: 1, done: false }\niterator.next(); // { value: 2, done: false }\niterator.next(); // { value: 3, done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\n#### isIterable(obj) _(es6-iterator/is-iterable)_\n\nWhether _obj_ is iterable\n\n```javascript\nvar isIterable = require('es6-iterator/is-iterable');\n\nisIterable(null); // false\nisIterable(true); // false\nisIterable('str'); // true\nisIterable(['a', 'r', 'r']); // true\nisIterable(new ArrayIterator([])); // true\n```\n\n#### validIterable(obj) _(es6-iterator/valid-iterable)_\n\nIf _obj_ is an iterable it is returned. Otherwise _TypeError_ is thrown.\n\n### Method extensions\n\n#### iterator.chain(iterator1[, …iteratorn]) _(es6-iterator/#/chain)_\n\nChain multiple iterators into one.\n\n### Tests [![Build Status](https://travis-ci.org/medikoo/es6-iterator.png)](https://travis-ci.org/medikoo/es6-iterator)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-06-23T15:03:49.041Z","created":"2013-10-12T09:58:13.545Z","0.0.0":"2013-10-12T09:58:21.924Z","0.1.0":"2014-04-29T11:27:36.995Z","0.1.1":"2014-04-29T11:32:11.236Z","0.1.2":"2014-11-19T14:11:17.077Z","0.1.3":"2015-02-02T12:02:06.350Z","1.0.0":"2015-06-23T15:03:49.041Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"homepage":"https://github.com/medikoo/es6-iterator#readme","keywords":["iterator","array","list","set","map","generator"],"bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"license":"MIT","readmeFilename":"README.md","users":{"mcharytoniuk":true},"_attachments":{},"_etag":"\"24IGKV4VVOG1371ZS8BVIN3HV\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/es6-symbol/.cache.json b/atom/.apm/registry.npmjs.org/es6-symbol/.cache.json new file mode 100644 index 0000000..e9318b6 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/es6-symbol/.cache.json @@ -0,0 +1 @@ +{"_id":"es6-symbol","_rev":"15-7a225a8c37241b4509e630dc3b0533a3","name":"es6-symbol","description":"ECMAScript6 Symbol polyfill","dist-tags":{"latest":"2.0.1"},"versions":{"0.0.0":{"name":"es6-symbol","version":"0.0.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"dependencies":{"d":"git://github.com/medikoo/d.git","es5-ext":"git://github.com/medikoo/es5-ext.git"},"devDependencies":{"tad":"~0.1.20"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@0.0.0","dist":{"shasum":"eefb0875ccab201addb68f7a75efcf1b6dac9e14","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.0":{"name":"es6-symbol","version":"0.1.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@0.1.0","dist":{"shasum":"ba5878f37a652f6c713244716fc7b24d61d2dc39","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"es6-symbol","version":"0.1.1","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"2ca76a05feafaa14c838337722562625fb5072b4","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@0.1.1","_shasum":"9cf7fab2edaff1b1da8fe8e68bfe3f5aca6ca218","_from":".","_npmVersion":"2.0.0","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"9cf7fab2edaff1b1da8fe8e68bfe3f5aca6ca218","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-0.1.1.tgz"},"directories":{}},"1.0.0":{"name":"es6-symbol","version":"1.0.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"6b33e3239fbbd2d948122691f06362df46044445","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@1.0.0","_shasum":"6213213537fc260f4688ce0f2be855b96391aaf1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"6213213537fc260f4688ce0f2be855b96391aaf1","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-1.0.0.tgz"},"directories":{}},"2.0.0":{"name":"es6-symbol","version":"2.0.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"9cd705f8a864b220721383fac6e0a9bff44803c1","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@2.0.0","_shasum":"e22d7e04596b7f0881fc274c37c20e84f7bf33a0","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e22d7e04596b7f0881fc274c37c20e84f7bf33a0","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.0.tgz"},"directories":{}},"2.0.1":{"name":"es6-symbol","version":"2.0.1","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"51f6938d7830269fefa38f02eb912f5472b3ccd7","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@2.0.1","_shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"},"directories":{}}},"readme":"# es6-symbol\n## ECMAScript 6 Symbol polyfill\n\nFor more information about symbols see following links\n- [Symbols in ECMAScript 6 by Axel Rauschmayer](http://www.2ality.com/2014/12/es6-symbols.html)\n- [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)\n- [Specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor)\n\n### Limitations\n\nUnderneath it uses real string property names which can easily be retrieved, however accidental collision with other property names is unlikely.\n\n### Usage\n\nIf you'd like to use native version when it exists and fallback to polyfill if it doesn't (but without implementing `Symbol` on global scope), do:\n\n```javascript\nvar Symbol = require('es6-symbol');\n```\n\nIf you want to make sure your environment implements `Symbol`, do:\n\n```javascript\nrequire('es6-symbol/implement');\n```\n\nIf you strictly want to use polyfill even if native `Symbol` exists (hard to find a good reason for that), do:\n\n```javascript\nvar Symbol = require('es6-symbol/polyfill');\n```\n\n#### API\n\nBest is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects). Still if you want quick look, follow examples:\n\n```javascript\nvar Symbol = require('es6-symbol');\n\nvar symbol = Symbol('My custom symbol');\nvar x = {};\n\nx[symbol] = 'foo';\nconsole.log(x[symbol]); 'foo'\n\n// Detect iterable:\nvar iterator, result;\nif (possiblyIterable[Symbol.iterator]) {\n iterator = possiblyIterable[Symbol.iterator]();\n result = iterator.next();\n while(!result.done) {\n console.log(result.value);\n result = iterator.next();\n }\n}\n```\n\n### Installation\n#### NPM\n\nIn your project path:\n\n\t$ npm install es6-symbol\n\n##### Browser\n\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n## Tests [![Build Status](https://travis-ci.org/medikoo/es6-symbol.png)](https://travis-ci.org/medikoo/es6-symbol)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-01-28T14:38:19.554Z","created":"2013-11-15T12:11:25.866Z","0.0.0":"2013-11-15T12:11:29.632Z","0.1.0":"2014-04-28T11:49:45.925Z","0.1.1":"2014-10-07T15:35:14.524Z","1.0.0":"2015-01-26T16:12:39.514Z","2.0.0":"2015-01-28T12:21:25.862Z","2.0.1":"2015-01-28T14:38:19.554Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"homepage":"https://github.com/medikoo/es6-symbol","keywords":["symbol","private","property","es6","ecmascript","harmony"],"bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"license":"MIT","readmeFilename":"README.md","users":{"mcharytoniuk":true,"monolithed":true},"_attachments":{},"_etag":"\"C49SUP0NX7S7SKH7HYI3L4L4Z\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/es6-weak-map/.cache.json b/atom/.apm/registry.npmjs.org/es6-weak-map/.cache.json new file mode 100644 index 0000000..fac9055 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/es6-weak-map/.cache.json @@ -0,0 +1 @@ +{"_id":"es6-weak-map","_rev":"15-5b44f564c5df0da0d4b7738ae0e0733c","name":"es6-weak-map","description":"ECMAScript6 WeakMap polyfill","dist-tags":{"latest":"1.0.2"},"versions":{"0.0.0":{"name":"es6-weak-map","version":"0.0.0","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"dependencies":{"d":"git://github.com/medikoo/d.git","es5-ext":"git://github.com/medikoo/es5-ext.git","es6-iterator":"git://github.com/medikoo/es6-iterator.git","time-uuid":"git://github.com/medikoo/time-uuid.git"},"devDependencies":{"tad":"~0.1.19"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"_id":"es6-weak-map@0.0.0","dist":{"shasum":"7d265054c646afc718dd8604a530fd6d1841e2ab","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.0":{"name":"es6-weak-map","version":"0.1.0","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2","es6-iterator":"~0.1.1","es6-symbol":"0.1.x","time-uuid":"0.2.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.0","dist":{"shasum":"c8084318cc9aec498a9af3f62dbb74dc67b61c1f","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"es6-weak-map","version":"0.1.1","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4","es6-iterator":"~0.1.1","es6-symbol":"0.1.x","time-uuid":"~0.2.1"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.1","_shasum":"e5215968ba23c59c57559058d5350453dc2f46f6","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e5215968ba23c59c57559058d5350453dc2f46f6","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.1.tgz"},"directories":{}},"0.1.2":{"name":"es6-weak-map","version":"0.1.2","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4","es6-iterator":"~0.1.1","es6-symbol":"0.1.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"f533102fc6d79889bda099fb94f1158cff2b6517","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.2","_shasum":"bc5b5fab73f68f6f77a6b39c481fce3d7856d385","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"bc5b5fab73f68f6f77a6b39c481fce3d7856d385","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.2.tgz"},"directories":{}},"0.1.3":{"name":"es6-weak-map","version":"0.1.3","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.6","es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"426b350ff12e90741cf0c42a0c09edc460d6f825","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.3","_shasum":"5d3f509d2a422a309504ea00620b01095b67b6d7","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"5d3f509d2a422a309504ea00620b01095b67b6d7","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.3.tgz"},"directories":{}},"0.1.4":{"name":"es6-weak-map","version":"0.1.4","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.6","es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"e68802395b82a700257374c379cfaafe84ee8552","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.4","_shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"},"directories":{}},"1.0.0":{"name":"es6-weak-map","version":"1.0.0","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.6","es6-iterator":"^0.1.3","es6-symbol":"^2.0.1"},"devDependencies":{"tad":"^0.2.2","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"45275c27e25ecff3348557962537ea88532fb021","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@1.0.0","_shasum":"e73486473278e4041fbf65e5517768cfedf300d3","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e73486473278e4041fbf65e5517768cfedf300d3","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-1.0.0.tgz"},"directories":{}},"1.0.1":{"name":"es6-weak-map","version":"1.0.1","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.6","es6-iterator":"^0.1.3","es6-symbol":"^2.0.1"},"devDependencies":{"tad":"^0.2.2","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"9cba09eac70d69c70e25af5490501e8d69bcf23d","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@1.0.1","_shasum":"c68cd1cf5ab76011d6e4210c685c064eeea37b38","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"c68cd1cf5ab76011d6e4210c685c064eeea37b38","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-1.0.1.tgz"},"directories":{}},"1.0.2":{"name":"es6-weak-map","version":"1.0.2","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc","ponyfill"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.6","es6-iterator":"^0.1.3","es6-symbol":"^2.0.1"},"devDependencies":{"tad":"^0.2.2","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"8ebc1ccea67efc57081ac66024e4e28a88e64558","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@1.0.2","_shasum":"769cbb261cc54bc70841536d136121f1bacb00cf","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"769cbb261cc54bc70841536d136121f1bacb00cf","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-1.0.2.tgz"},"directories":{}}},"readme":"# es6-weak-map\n## WeakMap collection as specified in ECMAScript6\n\n_Roughly inspired by Mark Miller's and Kris Kowal's [WeakMap implementation](https://github.com/drses/weak-map)_.\n\nDifferences are:\n- Assumes compliant ES5 environment (no weird ES3 workarounds or hacks)\n- Well modularized CJS style\n- Based on one solution.\n\n### Limitations\n\n- Will fail on non extensible objects provided as keys\n\n### Installation\n\n\t$ npm install es6-weak-map\n\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n### Usage\n\nIf you want to make sure your environment implements `WeakMap`, do:\n\n```javascript\nrequire('es6-weak-map/implement');\n```\n\nIf you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing `WeakMap` on global scope, do:\n\n```javascript\nvar WeakMap = require('es6-weak-map');\n```\n\nIf you strictly want to use polyfill even if native `WeakMap` exists, do:\n\n```javascript\nvar WeakMap = require('es6-weak-map/polyfill');\n```\n\n#### API\n\nBest is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-weakmap-objects). Still if you want quick look, follow example:\n\n```javascript\nvar WeakMap = require('es6-weak-map');\n\nvar map = new WeakMap();\nvar obj = {};\n\nmap.set(obj, 'foo'); // map\nmap.get(obj); // 'foo'\nmap.has(obj); // true\nmap.delete(obj); // true\nmap.get(obj); // undefined\nmap.has(obj); // false\nmap.set(obj, 'bar'); // map\nmap.has(obj); // false\n```\n\n## Tests [![Build Status](https://travis-ci.org/medikoo/es6-weak-map.svg)](https://travis-ci.org/medikoo/es6-weak-map)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-05-07T13:25:24.481Z","created":"2013-10-24T15:10:27.843Z","0.0.0":"2013-10-24T15:10:31.650Z","0.1.0":"2014-04-29T13:05:23.545Z","0.1.1":"2014-05-15T16:33:38.587Z","0.1.2":"2014-09-01T10:34:10.151Z","0.1.3":"2015-04-12T09:45:43.893Z","0.1.4":"2015-04-13T07:46:32.212Z","1.0.0":"2015-04-13T07:58:36.318Z","1.0.1":"2015-04-14T06:44:19.767Z","1.0.2":"2015-05-07T13:25:24.481Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"homepage":"https://github.com/medikoo/es6-weak-map","keywords":["map","weakmap","collection","es6","harmony","list","hash","gc","ponyfill"],"bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"license":"MIT","readmeFilename":"README.md","users":{"fgribreau":true},"_attachments":{},"_etag":"\"DX7CQ4149DHD339E3GPIVH9W8\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/event-kit/.cache.json b/atom/.apm/registry.npmjs.org/event-kit/.cache.json new file mode 100644 index 0000000..06da726 --- /dev/null +++ b/atom/.apm/registry.npmjs.org/event-kit/.cache.json @@ -0,0 +1 @@ +{"_id":"event-kit","_rev":"41-46d98195d1a63b49c9fa080db43f6cd4","name":"event-kit","description":"Simple library for implementing and consuming evented APIs","dist-tags":{"latest":"1.2.0"},"versions":{"0.0.0":{"name":"event-kit","version":"0.0.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"9deb3fb67c6effa82ad9d2543243fc20746e69a8","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.0.0","_shasum":"7a2facb4b703f15644b43f131230c9ef6bd8b6db","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"7a2facb4b703f15644b43f131230c9ef6bd8b6db","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.0.0.tgz"},"directories":{}},"0.1.0":{"name":"event-kit","version":"0.1.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"af7d266963eaab44186504eb09ac3a294e46848a","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.1.0","_shasum":"e39468e66ff6dc7d9c19f1e7483d419c6ca4c0ea","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"e39468e66ff6dc7d9c19f1e7483d419c6ca4c0ea","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.1.0.tgz"},"directories":{}},"0.2.0":{"name":"event-kit","version":"0.2.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"39289d78ef39f44b7b783f086de2333c1c1d6915","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.2.0","_shasum":"8a34cb3405bb47da1e67d14e6dc011a384e39eef","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"8a34cb3405bb47da1e67d14e6dc011a384e39eef","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.2.0.tgz"},"directories":{}},"0.3.0":{"name":"event-kit","version":"0.3.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"7eb7dc828564d43333cdad54733e28945da2c224","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.3.0","_shasum":"7b6f523157057a4a64ad022ecaea74abbde4eb0b","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"7b6f523157057a4a64ad022ecaea74abbde4eb0b","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.3.0.tgz"},"directories":{}},"0.4.0":{"name":"event-kit","version":"0.4.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"a20f24d3ed8397d2a63b40cb7e061dc1620d8381","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.4.0","_shasum":"4b8178e357cd54988427b6ad3b2e5a0456e9a56e","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"4b8178e357cd54988427b6ad3b2e5a0456e9a56e","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.4.0.tgz"},"directories":{}},"0.5.0":{"name":"event-kit","version":"0.5.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"eae882ea014f06d3099cc644415a51b3de960193","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.5.0","_shasum":"4f2e097a37c4300c38821ef6edaceb67ae1fb888","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"4f2e097a37c4300c38821ef6edaceb67ae1fb888","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.5.0.tgz"},"directories":{}},"0.6.0":{"name":"event-kit","version":"0.6.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"36338e69f9af7f6dfc60be17e57b03e02fac08b7","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.6.0","_shasum":"d5de873e45c760c18db519a1d2c0239e827dcaf8","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"d5de873e45c760c18db519a1d2c0239e827dcaf8","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.6.0.tgz"},"directories":{}},"0.7.0":{"name":"event-kit","version":"0.7.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"bc40f84bc446d2c6bc94d11bccaf2232c6d98fd1","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.0","_shasum":"fc742c70961803b3a16688e330e02727fdab9423","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"fc742c70961803b3a16688e330e02727fdab9423","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.0.tgz"},"directories":{}},"0.7.1":{"name":"event-kit","version":"0.7.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"9399f796aac571113df6e6a0d796d02850c04e66","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.1","_shasum":"7226f0594fa07121e7202eb711a7021cd4d79a30","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"7226f0594fa07121e7202eb711a7021cd4d79a30","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.1.tgz"},"directories":{}},"0.7.2":{"name":"event-kit","version":"0.7.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"997b618b19566d5740c77507492528c52b5edb6a","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.2","_shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz"},"directories":{}},"0.8.0":{"name":"event-kit","version":"0.8.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"119be0ff697c9e2d9ce49696c7b83c7f2fa4c3a9","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.8.0","_shasum":"9af3466e3d47043a6d252631355a05c58f877c9e","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"9af3466e3d47043a6d252631355a05c58f877c9e","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.8.0.tgz"},"directories":{}},"0.8.1":{"name":"event-kit","version":"0.8.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"956e354c35a606d9611fa44432bceee1e2c7d9e9","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.8.1","_shasum":"7ce2497d7084935d5f9cdcab6c2e9032106812f8","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"7ce2497d7084935d5f9cdcab6c2e9032106812f8","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.8.1.tgz"},"directories":{}},"0.8.2":{"name":"event-kit","version":"0.8.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"7b15e2855d2d69b9e310aa6202378d6a7f9f785c","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.8.2","_shasum":"42f327fb7fa16fa93a6b893c753cf5b5476a5fca","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"42f327fb7fa16fa93a6b893c753cf5b5476a5fca","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.8.2.tgz"},"directories":{}},"1.0.0":{"name":"event-kit","version":"1.0.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"3cbfe07e3d15811971c50bc78de72b9fd727b941","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.0","_shasum":"627a0215dd869a5952cb45728159bb93d9554d8b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"627a0215dd869a5952cb45728159bb93d9554d8b","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.0.tgz"},"directories":{}},"1.0.1":{"name":"event-kit","version":"1.0.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"58c64c76bd2de0fe258784d5731182d8a1cbd1ba","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.1","_shasum":"e0fea9c6ec56b8d49ca758aec351a62ed7a90ed7","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"e0fea9c6ec56b8d49ca758aec351a62ed7a90ed7","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.1.tgz"},"directories":{}},"1.0.2":{"name":"event-kit","version":"1.0.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"e0802b1961d659dc075e10b632f5aebf19f271e7","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.2","_shasum":"20ab5dd4f637830b0f4e77c38a86de2754dc37d1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"20ab5dd4f637830b0f4e77c38a86de2754dc37d1","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.2.tgz"},"directories":{}},"1.0.3":{"name":"event-kit","version":"1.0.3","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"83ee968ad75469ad56ae96148a2d1fca4e505b56","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.3","_shasum":"a1fbd42a7fcc1e84eedf86604958df7afbaf0925","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"a1fbd42a7fcc1e84eedf86604958df7afbaf0925","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.3.tgz"},"directories":{}},"1.1.0":{"name":"event-kit","version":"1.1.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.2.1"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"e01229ed9610366330e7572c35ee0f9fd8864ff8","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.1.0","_shasum":"2d3eb6cbe5b762d531bdd5719b444028e1f1a15f","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"2d3eb6cbe5b762d531bdd5719b444028e1f1a15f","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.1.0.tgz"},"directories":{}},"1.1.1":{"name":"event-kit","version":"1.1.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.2.1"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"d3c1df2d5064b9ec86a91f9afe1f1b4847e87abb","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.1.1","_shasum":"b35cf109bf5edf4ff2fa55e52a256496fb5df168","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"b35cf109bf5edf4ff2fa55e52a256496fb5df168","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.1.1.tgz"},"directories":{}},"1.2.0":{"name":"event-kit","version":"1.2.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.2.1"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"9fded8baac57a5d8f76ea3cef7c154ad05228fb7","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.2.0","_shasum":"6cc0a99d46ce86aaa2b3a64ccf3462a9f1519619","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"6cc0a99d46ce86aaa2b3a64ccf3462a9f1519619","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.2.0.tgz"},"directories":{}}},"readme":"# event-kit [![Build Status](https://travis-ci.org/atom/event-kit.svg?branch=master)](https://travis-ci.org/atom/event-kit)\n\nThis is a simple library for implementing event subscription APIs.\n\n## Implementing Event Subscription APIs\n\n```coffee\n{Emitter} = require 'event-kit'\n\nclass User\n constructor: ->\n @emitter = new Emitter\n\n onDidChangeName: (callback) ->\n @emitter.on 'did-change-name', callback\n\n setName: (name) ->\n if name isnt @name\n @name = name\n @emitter.emit 'did-change-name', name\n @name\n\n destroy: ->\n @emitter.dispose()\n```\n\nIn the example above, we implement `::onDidChangeName` on the user object, which\nwill register callbacks to be invoked whenever the user's name changes. To do\nso, we make use of an internal `Emitter` instance. We use `::on` to subscribe\nthe given callback in `::onDidChangeName`, and `::emit` in `::setName` to notify\nsubscribers. Finally, when the `User` instance is destroyed we call `::dispose`\non the emitter to unsubscribe all subscribers.\n\n## Consuming Event Subscription APIs\n\n`Emitter::on` returns a `Disposable` instance, which has a `::dispose` method.\nTo unsubscribe, simply call dispose on the returned object.\n\n```coffee\nsubscription = user.onDidChangeName (name) -> console.log(\"My name is #{name}\")\n# Later, to unsubscribe...\nsubscription.dispose()\n```\n\nYou can also use `CompositeDisposable` to combine disposable instances together.\n\n```coffee\n{CompositeDisposable} = require 'event-kit'\n\nsubscriptions = new CompositeDisposable\nsubscriptions.add user1.onDidChangeName (name) -> console.log(\"User 1: #{name}\")\nsubscriptions.add user2.onDidChangeName (name) -> console.log(\"User 2: #{name}\")\n\n# Later, to unsubscribe from *both*...\nsubscriptions.dispose()\n```\n\n## Creating Your Own Disposables\n\nDisposables are convenient ways to represent a resource you will no longer\nneed at some point. You can instantiate a disposable with an action to take when\nno longer needed.\n\n```coffee\n{Disposable} = require 'event-kit'\n\ndisposable = new Disposable => @destroyResource()\n```\n","maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"time":{"modified":"2015-05-19T19:24:57.966Z","created":"2014-08-27T02:47:42.952Z","0.0.0":"2014-08-27T02:47:42.952Z","0.1.0":"2014-08-27T22:28:56.019Z","0.2.0":"2014-08-27T23:07:01.448Z","0.3.0":"2014-08-28T01:15:33.214Z","0.4.0":"2014-09-03T19:08:17.656Z","0.5.0":"2014-09-04T13:00:26.943Z","0.6.0":"2014-09-08T22:56:17.914Z","0.7.0":"2014-09-10T17:27:28.945Z","0.7.1":"2014-09-10T22:25:18.509Z","0.7.2":"2014-09-12T18:17:01.320Z","0.8.0":"2014-10-27T18:26:28.717Z","0.8.1":"2014-12-02T22:24:00.307Z","0.8.2":"2015-01-02T21:36:37.749Z","1.0.0":"2015-01-02T21:54:15.124Z","1.0.1":"2015-01-07T01:03:19.268Z","1.0.2":"2015-02-02T18:08:23.505Z","1.0.3":"2015-02-25T00:13:28.699Z","1.1.0":"2015-04-02T22:00:36.882Z","1.1.1":"2015-05-07T22:41:44.341Z","1.2.0":"2015-05-19T19:24:57.966Z"},"homepage":"https://github.com/atom/event-kit","repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"readmeFilename":"README.md","_attachments":{},"_etag":"\"BE900CYDT5JSKTU7MOR6EJHNV\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/fs-plus/.cache.json b/atom/.apm/registry.npmjs.org/fs-plus/.cache.json new file mode 100644 index 0000000..5b8312c --- /dev/null +++ b/atom/.apm/registry.npmjs.org/fs-plus/.cache.json @@ -0,0 +1 @@ +{"_id":"fs-plus","_rev":"87-52681f370cc3e6c8c61056a98295bc1f","name":"fs-plus","description":"node's fs with more helpers","dist-tags":{"latest":"2.8.1"},"versions":{"0.1.0":{"name":"fs-plus","version":"0.1.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"~0.4.3"},"_id":"fs-plus@0.1.0","dist":{"shasum":"d8f55c71438f6173b01095bdfcddb0b0615c0d04","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.2.0":{"name":"fs-plus","version":"0.2.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.2.0","dist":{"shasum":"aca00f533dc4711ce7bb7ca4b45108174b482183","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.3.0":{"name":"fs-plus","version":"0.3.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.3.0","dist":{"shasum":"b4d8207b1d8a008519a6fcfc8bcf4354522d2637","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.4.0":{"name":"fs-plus","version":"0.4.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.4.0","dist":{"shasum":"7d4ebd630f91d70c8f45240f5d2bcfc8f35328fe","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.5.0":{"name":"fs-plus","version":"0.5.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.5.0","dist":{"shasum":"adcfe563fea70ad22da235e0dc8b199cca94b298","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.6.0":{"name":"fs-plus","version":"0.6.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.6.0","dist":{"shasum":"56052304b577bb696487550952aa0737d0299c78","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"fs-plus","version":"0.7.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.7.0","dist":{"shasum":"0906057090a94c5c4b48ca281a116ab1148b42ba","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.9.0":{"name":"fs-plus","version":"0.9.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.9.0","dist":{"shasum":"cd8ffac9290c55c782dc2a58f36f0e67e01860f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.9.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.10.0":{"name":"fs-plus","version":"0.10.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.3.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.10.0","dist":{"shasum":"368d59d2161e89b4223b2fdd5f643d47d9caf01e","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.10.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.11.0":{"name":"fs-plus","version":"0.11.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.5.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.11.0","dist":{"shasum":"df90ba6998d4f7539691829fe6c482d82dc86b03","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.11.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.12.0":{"name":"fs-plus","version":"0.12.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.5.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.12.0","dist":{"shasum":"bc967f9b339305172599895e9b30361004d7a5f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.12.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.13.0":{"name":"fs-plus","version":"0.13.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.6.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.13.0","dist":{"shasum":"dbba27b0bb82485514e2294c209b3eb443d36ea3","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.13.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"mcolyer","email":"matt@colyer.name"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.14.0":{"name":"fs-plus","version":"0.14.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.6.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.14.0","dist":{"shasum":"0f38ad6caf09d8776635d0d4c3696b2a242778c4","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.14.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"1.0.0":{"name":"fs-plus","version":"1.0.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","season":"~0.14.0"},"_id":"fs-plus@1.0.0","dist":{"shasum":"864ced3286e0c1c3bce2e44073847dab2ff78f68","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"1.0.1":{"name":"fs-plus","version":"1.0.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","season":"~0.14.0"},"_id":"fs-plus@1.0.1","dist":{"shasum":"88c9ab8e4f5334aa5936a05f16b9d55b2bfac83d","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-1.0.1.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.0":{"name":"fs-plus","version":"2.0.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","season":"~0.14.0"},"_id":"fs-plus@2.0.0","dist":{"shasum":"8b2a094aa5eb00deb6b5cc0ef11b0f80d607f1b5","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.1":{"name":"fs-plus","version":"2.0.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.1","dist":{"shasum":"6cfb306c4f181e116745bc42c3389a95bd06b701","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.2":{"name":"fs-plus","version":"2.0.2","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.2","dist":{"shasum":"29b6160577fc17c7e38c72fefe80f04f300b5d73","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.2.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.3":{"name":"fs-plus","version":"2.0.3","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.3","dist":{"shasum":"594d062614ddf34f6b7a230f2da7706ca2dceefb","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.3.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.0.4":{"name":"fs-plus","version":"2.0.4","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.4","dist":{"shasum":"321f78e3b754e3f634e3221789d8aa6e94610ddf","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.4.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.1.0":{"name":"fs-plus","version":"2.1.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.1.0","dist":{"shasum":"5e8d62e060e723dfb1fc09cd62dc6e186457504b","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.0":{"name":"fs-plus","version":"2.2.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.0","dist":{"shasum":"0703e4eb72983b0d0cf975b533c5623c8f1a0aea","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.1":{"name":"fs-plus","version":"2.2.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.1","dist":{"shasum":"1fc0621d4b8736909f0c95e5e9b1a592caf06f68","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.2":{"name":"fs-plus","version":"2.2.2","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.2","dist":{"shasum":"501b1aa1beede2acae4c162ea8597994c7dcd194","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.2.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.3":{"name":"fs-plus","version":"2.2.3","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.3","dist":{"shasum":"7dcdb0c4ff9beba3c4dc404e2c8a3284cfbec6f0","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.3.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.4":{"name":"fs-plus","version":"2.2.4","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.4","dist":{"shasum":"4d0803af3c9822f0a48b5b699125e138202882a5","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.4.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.5":{"name":"fs-plus","version":"2.2.5","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.5","dist":{"shasum":"e390a19e56dc37cec8e5fc226209526a0adc2a1a","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.6":{"name":"fs-plus","version":"2.2.6","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.6","dist":{"shasum":"9bba59b2041f7f446567d4ae658f12e12bf6a5eb","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.6.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.3.0":{"name":"fs-plus","version":"2.3.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.3.0","dist":{"shasum":"5a69c58c45e8f8be89711d678ed714efa25c5934","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.3.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.3.1":{"name":"fs-plus","version":"2.3.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"fdea4e6b36ca3adcdddadac5ca4bb7e0608562e8","_id":"fs-plus@2.3.1","_shasum":"b9dff9e90af175bf5687beb1574b4836121aafbe","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"b9dff9e90af175bf5687beb1574b4836121aafbe","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.3.1.tgz"},"directories":{}},"2.3.2":{"name":"fs-plus","version":"2.3.2","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"9c0b7ec93a4fd04471d988b966179f6a8aa1f355","_id":"fs-plus@2.3.2","_shasum":"beea9a8295c2fad4322cd6af2934a07de7e6052d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"beea9a8295c2fad4322cd6af2934a07de7e6052d","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.3.2.tgz"},"directories":{}},"2.4.0":{"name":"fs-plus","version":"2.4.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"6ac4c265a11e44bdb85b6f494c9fcd31b7f9011c","_id":"fs-plus@2.4.0","_shasum":"28ea0e551f0afb70efc6fa92204e29b4eab7d902","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"28ea0e551f0afb70efc6fa92204e29b4eab7d902","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.4.0.tgz"},"directories":{}},"2.5.0":{"name":"fs-plus","version":"2.5.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"79f737abe6eeb126639eff7bccb92d8d40cb0b05","_id":"fs-plus@2.5.0","_shasum":"b6b1b75ce241ff730a2b7ada4225b2393053a906","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"b6b1b75ce241ff730a2b7ada4225b2393053a906","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.5.0.tgz"},"directories":{}},"2.6.0":{"name":"fs-plus","version":"2.6.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"a7ddecee34ae2e1d8d7794f3f049e2d8dbc5b962","_id":"fs-plus@2.6.0","_shasum":"f523f64fc4663bd92d3667be23674c1ad4b75c7a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"f523f64fc4663bd92d3667be23674c1ad4b75c7a","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.6.0.tgz"},"directories":{}},"2.7.0":{"name":"fs-plus","version":"2.7.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"821662d5361c829b29503ade07308434db51629a","_id":"fs-plus@2.7.0","_shasum":"32c83d6bd0292be8e8d2afc8ea39a1aa9f6380fc","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"32c83d6bd0292be8e8d2afc8ea39a1aa9f6380fc","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.7.0.tgz"},"directories":{}},"2.7.1":{"name":"fs-plus","version":"2.7.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"b1b6f3ed46c0435464bb74b00010e9019db13ec4","_id":"fs-plus@2.7.1","_shasum":"fe68dab2403cd5f6235d200aeb84d611b5d0d03c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"fe68dab2403cd5f6235d200aeb84d611b5d0d03c","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.7.1.tgz"},"directories":{}},"2.8.0":{"name":"fs-plus","version":"2.8.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"92d084b0b5a2d94b5088cb1ff257646491819ad7","_id":"fs-plus@2.8.0","_shasum":"293a12eb985eccd32796628f8c246bd769aea889","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"293a12eb985eccd32796628f8c246bd769aea889","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.8.0.tgz"},"directories":{}},"2.8.1":{"name":"fs-plus","version":"2.8.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"eb4915c02f09427b1bb002b886a9cfc34a262e1f","_id":"fs-plus@2.8.1","_shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"},"directories":{}}},"readme":"# fs plus [![Build Status](https://travis-ci.org/atom/fs-plus.svg?branch=master)](https://travis-ci.org/atom/fs-plus)\n\nYet another filesystem helper based on node's [fs](http://nodejs.org/api/fs.html)\nmodule. This library exports everything from node's fs module but with some\nextra helpers.\n\n## Using\n\n```sh\nnpm install fs-plus\n```\n\n```coffee\nfs = require 'fs-plus'\n```\n\n## Documentation\n\n### `getHomeDirectory()`\nReturns the absolute path to the home directory.\n\n### `absolute(relativePath)`\nMake the given path absolute by resolving it against the current\nworking directory.\n\n### Params\n\n - **String** `relativePath`: The string representing the relative path. If the\n path is prefixed with '~', it will be expanded to the current user's home\n directory.\n\n### Return\n\n - **String**: The absolute path or the relative path if it's unable to\n determine its real path.\n\n### `normalize(pathToNormalize)`\nNormalize the given path treating a leading `~` segment as referring to the\nhome directory. This method does not query the filesystem.\n\n#### Params\n\n - **String** `pathToNormalize`: The string containing the abnormal path. If the\n path is prefixed with '~', it will be expanded to the current user's home\n directory.\n\n#### Return\n - **String** Returns a normalized path.\n\n### `getAppDataDirectory()`\nGet path to store application specific data.\n\n#### Return\n - **String** Returns the absolute path or null if platform isn't supported\n\n - Mac: `~/Library/Application Support/`\n - Win: `%AppData%`\n - Linux: `/var/lib`\n\n### `isAbsolute(pathToCheck)`\nIs the given path absolute?\n\n#### Params\n - **String** `pathToCheck`: The relative or absolute path to check.\n\n#### Return\n - **Bolean** Returns `true` if the path is absolute, `false` otherwise.\n\n### `existsSync(pathToCheck)`\nReturns `true` if a file or folder at the specified path exists.\n\n### `isDirectorySync(directoryPath)`\nReturns `true` if the given path exists and is a directory.\n\n### `isDirectory(directoryPath)`\nAsynchronously checks that the given path exists and is a directory.\n\n### `isFileSync(filePath)`\nReturns true if the specified path exists and is a file.\n\n### `isSymbolicLinkSync(symlinkPath)`\nReturns `true` if the specified path is a symbolic link.\n\n### `isSymbolicLink(symlinkPath, callback)`\nCalls back with `true` if the specified path is a symbolic link.\n\n### `isExecutableSync(pathToCheck)`\nReturns `true` if the specified path is executable.\n\n### `getSizeSync(pathToCheck)`\nReturns the size of the specified path.\n\n### `listSync(rootPath, extensions)`\nReturns an Array with the paths of the files and directories\ncontained within the directory path. It is not recursive.\n\n## Params\n - **String** `rootPath`: The absolute path to the directory to list.\n - **Array** `extensions`: An array of extensions to filter the results by. If none are\n given, none are filtered (optional).\n\n### `list(rootPath, extensions)`\nAsynchronously lists the files and directories in the given path. The listing is not recursive.\n\n### `listTreeSync(rootPath)`\nGet all paths under the given path.\n\n#### Params\n - **String** `rootPath` The {String} path to start at.\n\n#### Return\n - **Array** Returns an array of strings under the given path.\n\n### `moveSync(source, target)`\nMoves the file or directory to the target synchronously.\n\n### `removeSync(pathToRemove)`\nRemoves the file or directory at the given path synchronously.\n\n### `writeFileSync(filePath, content, options)`\nOpen, write, flush, and close a file, writing the given content synchronously.\nIt also creates the necessary parent directories.\n\n### `writeFile(filePath, content, options, callback)`\nOpen, write, flush, and close a file, writing the given content\nasynchronously.\nIt also creates the necessary parent directories.\n\n### `copySync(sourcePath, destinationPath)`\nCopies the given path recursively and synchronously.\n\n### `makeTreeSync(directoryPath)`\nCreate a directory at the specified path including any missing\nparent directories synchronously.\n\n### `makeTree(directoryPath, callback)`\nCreate a directory at the specified path including any missing\nparent directories asynchronously.\n\n### `traverseTreeSync(rootPath, onFile, onDirectory)`\nRecursively walk the given path and execute the given functions\nsynchronously.\n\n#### Params\n - **String** `rootPath`: The string containing the directory to recurse into.\n - **Function** `onFile`: The function to execute on each file, receives a single argument\n the absolute path.\n - **Function** `onDirectory`: The function to execute on each directory, receives a single\n argument the absolute path (defaults to onFile). If this\n function returns a falsy value then the directory is not\n entered.\n\n### `traverseTree(rootPath, onFile, onDirectory, onDone)`\nPublic: Recursively walk the given path and execute the given functions\nasynchronously.\n\n### `md5ForPath(pathToDigest)`\nHashes the contents of the given file.\n\n#### Params\n - **String** `pathToDigest`: The string containing the absolute path.\n\n#### Return\n - **String** Returns a string containing the MD5 hexadecimal hash.\n\n### `resolve(loadPaths, pathToResolve, extensions)`\nFinds a relative path among the given array of paths.\n\n#### Params\n - **Array** `loadPaths`: An array of absolute and relative paths to search.\n - **String** `pathToResolve` The string containing the path to resolve.\n - **Array** `extensions` An array of extensions to pass to {resolveExtensions} in\n which case pathToResolve should not contain an extension\n (optional).\n\n#### Return\nReturns the absolute path of the file to be resolved if it's found and\nundefined otherwise.\n\n### `resolveOnLoadPath()`\nLike `.resolve` but uses node's modules paths as the load paths to\nsearch.\n\n### `resolveExtension(pathToResolve, extensions)`\nFinds the first file in the given path which matches the extension\nin the order given.\n\n#### Params\n - **String** `pathToResolve`: the string containing relative or absolute path of the\n file in question without the extension or '.'.\n - **Array** `extensions`: the ordered array of extensions to try.\n\n#### Return\nReturns the absolute path of the file if it exists with any of the given\nextensions, otherwise it's undefined.\n\n### `isCompressedExtension(ext)`\nReturns true for extensions associated with compressed files.\n\n### `isImageExtension(ext)`\nReturns true for extensions associated with image files.\n\n### `isPdfExtension(ext)`\nReturns true for extensions associated with pdf files.\n\n### `isBinaryExtension(ext)`\nReturns true for extensions associated with binary files.\n\n### `isReadmePath(readmePath)`\nReturns true for files named similarily to 'README'\n\n### `isMarkdownExtension(ext)`\nReturns true for extensions associated with Markdown files.\n\n### `isCaseInsensitive()`\nIs the filesystem case insensitive?\nReturns `true` if case insensitive, `false` otherwise.\n\n### `isCaseSensitive()`\nIs the filesystem case sensitive?\nReturns `true` if case sensitive, `false` otherwise.\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2015-05-18T16:40:58.231Z","created":"2013-10-31T18:49:50.150Z","0.1.0":"2013-10-31T18:49:51.452Z","0.2.0":"2013-10-31T20:08:02.233Z","0.3.0":"2013-10-31T20:40:51.872Z","0.4.0":"2013-10-31T21:56:14.903Z","0.5.0":"2013-11-01T00:35:52.494Z","0.6.0":"2013-11-01T16:08:26.382Z","0.7.0":"2013-11-01T18:10:18.112Z","0.9.0":"2013-11-08T22:07:39.923Z","0.10.0":"2013-11-23T18:39:45.209Z","0.11.0":"2013-12-11T18:07:35.183Z","0.12.0":"2013-12-17T17:44:40.413Z","0.13.0":"2013-12-18T00:37:32.939Z","0.14.0":"2014-01-06T17:13:56.081Z","1.0.0":"2014-01-16T23:53:09.940Z","1.0.1":"2014-01-17T02:46:49.938Z","2.0.0":"2014-02-17T23:18:09.767Z","2.0.1":"2014-02-17T23:20:01.300Z","2.0.2":"2014-03-07T17:22:02.848Z","2.0.3":"2014-03-11T17:11:13.764Z","2.0.4":"2014-03-12T16:55:11.955Z","2.1.0":"2014-03-28T17:58:56.422Z","2.2.0":"2014-03-28T19:42:19.773Z","2.2.1":"2014-04-09T17:02:49.197Z","2.2.2":"2014-04-17T20:23:41.037Z","2.2.3":"2014-05-15T19:14:01.819Z","2.2.4":"2014-07-21T20:52:58.909Z","2.2.5":"2014-07-28T23:02:00.361Z","2.2.6":"2014-07-29T00:09:23.170Z","2.3.0":"2014-08-19T01:15:57.365Z","2.3.1":"2014-10-01T15:28:48.775Z","2.3.2":"2014-11-20T19:04:41.126Z","2.4.0":"2014-12-15T21:04:05.946Z","2.5.0":"2015-02-05T00:36:11.512Z","2.6.0":"2015-03-17T23:48:14.510Z","2.7.0":"2015-04-02T23:54:01.945Z","2.7.1":"2015-04-20T22:46:56.329Z","2.8.0":"2015-05-05T15:53:02.642Z","2.8.1":"2015-05-18T16:40:58.231Z"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"readmeFilename":"README.md","homepage":"http://atom.github.io/fs-plus","keywords":["fs","filesystem"],"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"users":{"lezuse":true,"ergunozyurt":true,"thomasjo":true},"_attachments":{},"_etag":"\"A1X3DPP3ZGTI3ATWVSTVE9PEU\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/fuzzaldrin/.cache.json b/atom/.apm/registry.npmjs.org/fuzzaldrin/.cache.json new file mode 100644 index 0000000..1f23fae --- /dev/null +++ b/atom/.apm/registry.npmjs.org/fuzzaldrin/.cache.json @@ -0,0 +1 @@ +{"_id":"fuzzaldrin","_rev":"36-5a37df041e18a19506d6b46d6fe203eb","name":"fuzzaldrin","description":"Fuzzy filtering and string scoring","dist-tags":{"latest":"2.1.0"},"versions":{"0.1.0":{"name":"fuzzaldrin","version":"0.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0"},"_id":"fuzzaldrin@0.1.0","dist":{"shasum":"c8df93b7f0437dffce5faad48066d45fce360447","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.2.0":{"name":"fuzzaldrin","version":"0.2.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.2.0","dist":{"shasum":"fdb954df3bbd60dfa6ec125ff5873f11501a928c","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.3.0":{"name":"fuzzaldrin","version":"0.3.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.3.0","dist":{"shasum":"e5f62a035cebc2b17b95ab1a0fb6a33519468c10","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.4.0":{"name":"fuzzaldrin","version":"0.4.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.4.0","dist":{"shasum":"55d4a4837a793bab6ff6825b33b9915bf0ecb9a3","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.5.0":{"name":"fuzzaldrin","version":"0.5.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.5.0","dist":{"shasum":"f60ff972ad9f7061caf8020f07f90f824f27e99c","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.6.0":{"name":"fuzzaldrin","version":"0.6.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.6.0","dist":{"shasum":"98f2eb1b5febb61613a0ba897a9f03fb63bf06e5","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"fuzzaldrin","version":"0.7.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.7.0","dist":{"shasum":"8b1ca3a4795c49ed03928316b6165e29ab90ffee","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.8.0":{"name":"fuzzaldrin","version":"0.8.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.8.0","dist":{"shasum":"1d0e1cc39749cfe9c3631ee1f04951695e315dde","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.8.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.0.0":{"name":"fuzzaldrin","version":"1.0.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@1.0.0","dist":{"shasum":"1ee8d11c3eb9255d86ec860a588be7fd8dc1a38b","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.0":{"name":"fuzzaldrin","version":"1.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@1.1.0","dist":{"shasum":"6e02e76b02ddf0f0b09c64a3ab136bddf4cb6dbe","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-1.1.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.2.0":{"name":"fuzzaldrin","version":"1.2.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@1.2.0","dist":{"shasum":"0bab781e6584689fa6db42ad1e5b383582002305","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-1.2.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.0.0":{"name":"fuzzaldrin","version":"2.0.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@2.0.0","dist":{"shasum":"bcfabf4dce58bb48e963ca40ab468f294d5100a2","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.0.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.1.0":{"name":"fuzzaldrin","version":"2.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@2.1.0","dist":{"shasum":"90204c3e2fdaa6941bb28d16645d418063a90e9b","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}}},"readme":"# fuzzaldrin\n\n[![Build Status](https://travis-ci.org/atom/fuzzaldrin.svg?branch=master)](https://travis-ci.org/atom/fuzzaldrin)\n[![Build status](https://ci.appveyor.com/api/projects/status/0ig71rjdgfm7y9c1/branch/master)](https://ci.appveyor.com/project/kevinsawicki/fuzzaldrin/branch/master)\n\nFuzzy filtering and string scoring.\n\nThis library is used by [Atom](http://atom.io) and so its focus will be on\nscoring and filtering paths, methods, and other things common when writing code.\nIt therefore will specialize in handling common patterns in these types of\nstrings such as characters like `/`, `-`, and `_`, and also handling of\ncamel cased text.\n\n## Using\n\n```sh\nnpm install fuzzaldrin\n```\n\n### filter(candidates, query, [options])\n\nSort and filter the given candidates by matching them against the given query.\n\n* `candidates` - An array of strings or objects.\n* `query` - A string query to match each candidate against.\n* `options` - An optional object with the following keys:\n * `key` - The property to use for scoring if the candidates are objects.\n * `maxResults` - The maximum numbers of results to return.\n\nReturns an array of candidates sorted by best match against the query.\n\n```coffee\n{filter} = require 'fuzzaldrin'\n\n# With an array of strings\ncandidates = ['Call', 'Me', 'Maybe']\nresults = filter(candidates, 'me')\nconsole.log(results) # ['Me', 'Maybe']\n\n# With an array of objects\ncandidates = [\n {name: 'Call', id: 1}\n {name: 'Me', id: 2}\n {name: 'Maybe', id: 3}\n]\nresults = filter(candidates, 'me', key: 'name')\nconsole.log(results) # [{name: 'Me', id: 2}, {name: 'Maybe', id: 3}]\n```\n\n### score(string, query)\n\nScore the given string against the given query.\n\n* `string` - The string the score.\n* `query` - The query to score the string against.\n\n```coffee\n{score} = require 'fuzzaldrin'\n\nscore('Me', 'me') # 0.17099999999999999\nscore('Maybe', 'me') # 0.0693\n```\n\n## Developing\n\n```sh\ngit clone https://github.com/atom/fuzzaldrin.git\ncd fuzzaldrin\nnpm install\nnpm test\n```\n\nYou can run the benchmarks using:\n\n```sh\nnpm run benchmark\n```\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2014-09-03T16:43:01.593Z","created":"2013-10-17T16:40:20.873Z","0.1.0":"2013-10-17T16:40:22.251Z","0.2.0":"2014-01-08T18:59:16.212Z","0.3.0":"2014-01-08T19:52:20.324Z","0.4.0":"2014-01-08T21:59:32.641Z","0.5.0":"2014-01-08T22:11:16.930Z","0.6.0":"2014-01-10T20:53:50.725Z","0.7.0":"2014-01-25T01:55:33.514Z","0.8.0":"2014-01-30T22:54:50.060Z","1.0.0":"2014-01-30T23:00:10.576Z","1.1.0":"2014-02-27T22:44:20.097Z","1.2.0":"2014-05-28T16:29:08.415Z","2.0.0":"2014-06-13T00:45:46.236Z","2.1.0":"2014-09-03T16:43:01.593Z"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"readmeFilename":"README.md","homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"users":{"davidtsuji":true},"_attachments":{},"_etag":"\"CHYJXGTA7QS279A8EQAHGMZFV\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/grim/.cache.json b/atom/.apm/registry.npmjs.org/grim/.cache.json new file mode 100644 index 0000000..dcb0e9b --- /dev/null +++ b/atom/.apm/registry.npmjs.org/grim/.cache.json @@ -0,0 +1 @@ +{"_id":"grim","_rev":"70-e64a267956bdf50facc0ff36cd0f2cbe","name":"grim","description":"Log usage of deprecated methods","dist-tags":{"latest":"1.4.1"},"versions":{"0.0.0":{"name":"grim","version":"0.0.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.0.0","dist":{"shasum":"d915da55af58229d41bf6851dd807fe672a4f54f","tarball":"http://registry.npmjs.org/grim/-/grim-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.1.0":{"name":"grim","version":"0.1.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.1.0","dist":{"shasum":"da6ee2d7a1d1466cb2f17c3efc271a9dcfb9a213","tarball":"http://registry.npmjs.org/grim/-/grim-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.2.0":{"name":"grim","version":"0.2.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.2.0","dist":{"shasum":"a5af7d54ea2adba64c8eaead301152300aba2b10","tarball":"http://registry.npmjs.org/grim/-/grim-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.4.0":{"name":"grim","version":"0.4.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.4.0","dist":{"shasum":"4e6eafb0b62ec2fba177c3ec1447630382c1d382","tarball":"http://registry.npmjs.org/grim/-/grim-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.6.0":{"name":"grim","version":"0.6.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.6.0","dist":{"shasum":"d8c301e2dfe18ac9595bf4feedbc862249ef8465","tarball":"http://registry.npmjs.org/grim/-/grim-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.7.0":{"name":"grim","version":"0.7.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.7.0","dist":{"shasum":"c509c13902a120e8149c55138309d8fdf88ac6d6","tarball":"http://registry.npmjs.org/grim/-/grim-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.8.0":{"name":"grim","version":"0.8.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.8.0","dist":{"shasum":"9f6b2b229cf537827a8ef2c1942a98cd6df41b0d","tarball":"http://registry.npmjs.org/grim/-/grim-0.8.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.9.0":{"name":"grim","version":"0.9.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.9.0","dist":{"shasum":"8271990398c43f14601f1d5b05c8bf701db45ac9","tarball":"http://registry.npmjs.org/grim/-/grim-0.9.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.10.0":{"name":"grim","version":"0.10.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"homepage":"https://github.com/atom/grim","_id":"grim@0.10.0","dist":{"shasum":"85e6f7c51c78952761e087a55fe273fdc87c6a71","tarball":"http://registry.npmjs.org/grim/-/grim-0.10.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.11.0":{"name":"grim","version":"0.11.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"homepage":"https://github.com/atom/grim","_id":"grim@0.11.0","_shasum":"e203674bbe5fb62ae8301f191606df578e529b90","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"dist":{"shasum":"e203674bbe5fb62ae8301f191606df578e529b90","tarball":"http://registry.npmjs.org/grim/-/grim-0.11.0.tgz"},"directories":{}},"0.12.0":{"name":"grim","version":"0.12.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c24f22a7e415d5d6b695967e341f7fb7aa27d83f","homepage":"https://github.com/atom/grim","_id":"grim@0.12.0","_shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","tarball":"http://registry.npmjs.org/grim/-/grim-0.12.0.tgz"},"directories":{}},"0.13.0":{"name":"grim","version":"0.13.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.7.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"76eefa6fec31db8f573ed69f3312e4fa81d54b39","homepage":"https://github.com/atom/grim","_id":"grim@0.13.0","_shasum":"80557ca22e2294c8765eec8b349bc1da5b36c821","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"80557ca22e2294c8765eec8b349bc1da5b36c821","tarball":"http://registry.npmjs.org/grim/-/grim-0.13.0.tgz"},"directories":{}},"1.0.0":{"name":"grim","version":"1.0.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.7.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"aebdddfbc62015ed943de3e144b06eb4cd849555","homepage":"https://github.com/atom/grim","_id":"grim@1.0.0","_shasum":"70281a77942fcf217b1aac3a7db90cbe9d1ceecf","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"70281a77942fcf217b1aac3a7db90cbe9d1ceecf","tarball":"http://registry.npmjs.org/grim/-/grim-1.0.0.tgz"},"directories":{}},"1.1.0":{"name":"grim","version":"1.1.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.7.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"16c8bb826982d22801bfc56ea953c6ea7478ea1d","homepage":"https://github.com/atom/grim","_id":"grim@1.1.0","_shasum":"10d9518f9b48f73d358917dd7d21cf11d614c47c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"10d9518f9b48f73d358917dd7d21cf11d614c47c","tarball":"http://registry.npmjs.org/grim/-/grim-1.1.0.tgz"},"directories":{}},"1.1.1":{"name":"grim","version":"1.1.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.8.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"b2e0f708ed9de1470dc268f41bc0d30a698b3fbe","homepage":"https://github.com/atom/grim","_id":"grim@1.1.1","_shasum":"8f1c88789664d9f29fc5d2bef03cfa5bd5da0941","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"8f1c88789664d9f29fc5d2bef03cfa5bd5da0941","tarball":"http://registry.npmjs.org/grim/-/grim-1.1.1.tgz"},"directories":{}},"1.1.2":{"name":"grim","version":"1.1.2","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"598fdb19fbcd3dffacfaf675ff31facfa1a9cb5e","homepage":"https://github.com/atom/grim","_id":"grim@1.1.2","_shasum":"cf3ad7096654a58127262dc069073e43d54a18ed","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"cf3ad7096654a58127262dc069073e43d54a18ed","tarball":"http://registry.npmjs.org/grim/-/grim-1.1.2.tgz"},"directories":{}},"1.2.0":{"name":"grim","version":"1.2.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"fc9442cb2033f82ca18d9d52a884237ce099142d","homepage":"https://github.com/atom/grim","_id":"grim@1.2.0","_shasum":"96d33ffe723ed8146a83ee169a8f230d4508369e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"96d33ffe723ed8146a83ee169a8f230d4508369e","tarball":"http://registry.npmjs.org/grim/-/grim-1.2.0.tgz"},"directories":{}},"1.2.1":{"name":"grim","version":"1.2.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"2722002c17aa5564af195c2c458ad7f591417c59","homepage":"https://github.com/atom/grim","_id":"grim@1.2.1","_shasum":"b90d518e7e52e78ea3c35cb16efd7000046e6f18","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"b90d518e7e52e78ea3c35cb16efd7000046e6f18","tarball":"http://registry.npmjs.org/grim/-/grim-1.2.1.tgz"},"directories":{}},"1.2.2":{"name":"grim","version":"1.2.2","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"4deeda96353df9ea372986bd1e0aba24a0240df5","homepage":"https://github.com/atom/grim","_id":"grim@1.2.2","_shasum":"4af59c20cda16eb034676e2bfe64fd8be1f78450","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"4af59c20cda16eb034676e2bfe64fd8be1f78450","tarball":"http://registry.npmjs.org/grim/-/grim-1.2.2.tgz"},"directories":{}},"1.3.0":{"name":"grim","version":"1.3.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dfbd634d33cab712a39d1652a92849b10a7efb6f","homepage":"https://github.com/atom/grim","_id":"grim@1.3.0","_shasum":"263032646242f665a96778d76639cb459bf178e1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"263032646242f665a96778d76639cb459bf178e1","tarball":"http://registry.npmjs.org/grim/-/grim-1.3.0.tgz"},"directories":{}},"1.4.0":{"name":"grim","version":"1.4.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"1ad64d849598d9dbb7203d3a53d016082f895c1e","homepage":"https://github.com/atom/grim","_id":"grim@1.4.0","_shasum":"c58bbea14815bfe7939d586a1b813de6aed3a8e8","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"c58bbea14815bfe7939d586a1b813de6aed3a8e8","tarball":"http://registry.npmjs.org/grim/-/grim-1.4.0.tgz"},"directories":{}},"1.4.1":{"name":"grim","version":"1.4.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dbcb234a130aaef6af1458bfa686f65c5b97690a","homepage":"https://github.com/atom/grim","_id":"grim@1.4.1","_shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","tarball":"http://registry.npmjs.org/grim/-/grim-1.4.1.tgz"},"directories":{}}},"readme":"# Grim [![Build Status](https://travis-ci.org/atom/grim.svg)](https://travis-ci.org/atom/grim)\n\nLog deprecate calls\n\n## Installing\n\n```sh\nnpm install grim\n```\n\n## Usage\n\n```javascript\nGrim = require('grim')\n\nfunction someOldMethod() {\n Grim.deprecate(\"Use theNewMethod instead.\")\n}\n```\n\nTo view all calls to deprecated methods use `Grim.logDeprecations()` or get direct access to the deprecated calls by using `Grim.getDeprecations()`\n","maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"time":{"modified":"2015-05-13T22:26:15.557Z","created":"2014-04-01T22:38:09.263Z","0.0.0":"2014-04-01T22:38:11.466Z","0.1.0":"2014-04-01T22:39:23.387Z","0.2.0":"2014-04-01T23:56:09.004Z","0.4.0":"2014-04-02T23:52:09.489Z","0.6.0":"2014-04-03T17:15:23.781Z","0.7.0":"2014-04-11T23:28:50.618Z","0.8.0":"2014-04-14T21:41:31.900Z","0.9.0":"2014-04-18T00:33:33.285Z","0.10.0":"2014-04-23T01:29:06.673Z","0.11.0":"2014-06-11T23:18:58.911Z","0.12.0":"2014-08-13T20:47:48.254Z","0.13.0":"2014-12-30T22:34:35.933Z","1.0.0":"2015-01-02T19:25:11.250Z","1.1.0":"2015-01-09T01:43:17.541Z","1.1.1":"2015-02-11T00:56:51.763Z","1.1.2":"2015-02-12T19:05:51.899Z","1.2.0":"2015-02-19T19:19:27.810Z","1.2.1":"2015-03-30T22:34:13.870Z","1.2.2":"2015-04-21T23:20:52.692Z","1.3.0":"2015-04-28T16:51:46.374Z","1.4.0":"2015-04-29T00:12:20.333Z","1.4.1":"2015-05-13T22:26:15.557Z"},"readmeFilename":"README.md","repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"homepage":"https://github.com/atom/grim","_attachments":{},"_etag":"\"ENGXDMST6O59S4SVACS5Y4AHJ\""} \ No newline at end of file diff --git a/atom/.apm/registry.npmjs.org/jquery/.cache.json b/atom/.apm/registry.npmjs.org/jquery/.cache.json new file mode 100644 index 0000000..8c1524d --- /dev/null +++ b/atom/.apm/registry.npmjs.org/jquery/.cache.json @@ -0,0 +1 @@ +{"_id":"jquery","_rev":"227-b31f75428b97fc29a534967f39a4cc5d","name":"jquery","description":"JavaScript library for DOM operations","dist-tags":{"beta":"2.1.4","latest":"2.1.4","old":"1.9.1","compat":"1.11.3"},"versions":{"1.5.1":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library","url":"jquery.com","keywords":["util","dom","jquery"],"author":{"name":"John Resig","email":"jeresig@gmail.com"},"contributors":[],"dependencies":{"jsdom":"=0.1.20","htmlparser":">= 1.7.3"},"lib":"lib","main":"./dist/node-jquery.js","version":"1.5.1","_id":"jquery@1.5.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","directories":{"lib":"./lib"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"2ae2d661e906c1a01e044a71bb5b2743942183e5","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz"}},"1.6.2":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library","url":"jquery.com","keywords":["util","dom","jquery"],"author":{"name":"John Resig","email":"jeresig@gmail.com"},"contributors":[],"dependencies":{"jsdom":">=0.2.0","htmlparser":">= 1.7.3"},"lib":"lib","main":"./dist/node-jquery.js","version":"1.6.2","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/jquery/1.6.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jquery@1.6.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"01757a4c5beea29e8ae697527c3131abbe997a28","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz"},"scripts":{},"directories":{}},"1.6.3":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","url":"http://jquery.com","keywords":["util","dom","jquery"],"author":{"name":"John Resig","email":"jeresig@gmail.com"},"contributors":[],"dependencies":{"jsdom":">=0.2.0","htmlparser":">= 1.7.3"},"lib":".","main":"./node-jquery.js","version":"1.6.3","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/jquery/1.6.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jquery@1.6.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz"},"scripts":{},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"1.7.2":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.7.2","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":"0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.3.0"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_npmUser":{"name":"treasonx","email":"treasonx@gmail.com"},"_id":"jquery@1.7.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a93746763aca75a34df4c16395b0826310d0eaf2","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"1.7.3":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.7.3","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":">=0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.4.2","location":"0.0.1","navigator":"~1.0.1"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_id":"jquery@1.7.3","dist":{"shasum":"e3d00a71612ac7e9b554b438e0987d0272ddba94","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"1.8.2":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.8.2","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":">=0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.4.2","location":"0.0.1","navigator":"~1.0.1"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_id":"jquery@1.8.2","dist":{"shasum":"46790ae07c6de38124eda90bbf7336b43df93305","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"treasonx","email":"treasonx@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"1.8.3":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.8.3","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":">=0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.4.2","location":"0.0.1","navigator":"~1.0.1","contextify":"~0.1.3"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_id":"jquery@1.8.3","dist":{"shasum":"cfa2941c05a83d966f21347f759a6d15281c60cc","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"treasonx","email":"treasonx@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"2.1.0-beta2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0-beta2","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/master/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"~0.4.10","grunt":"~0.4.1","grunt-bower-task":"~0.3.2","grunt-cli":"~0.1.11","grunt-compare-size":"~0.4.0","grunt-contrib-jshint":"~0.7.0","grunt-contrib-uglify":"~0.2.7","grunt-contrib-watch":"~0.5.3","grunt-git-authors":"~1.2.0","grunt-jscs-checker":"~0.2.3","grunt-jsonlint":"~1.0.1","gzip-js":"0.3.2","load-grunt-tasks":"~0.2.0","testswarm":"~1.1.0","requirejs":"~2.1.9","which":"~1.0.5"},"_id":"jquery@2.1.0-beta2","dist":{"shasum":"e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"jquery","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"rwaldron","email":"waldron.rick@gmail.com"},{"name":"jquery","email":"npm@jquery.com"}],"directories":{}},"2.1.0-beta3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0-beta3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.0-beta3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.0-beta3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.4.1","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.0-beta3","dist":{"shasum":"5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"1.11.0-beta3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.0-beta3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.0-beta3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.0-beta3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.4.1","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.0-beta3","dist":{"shasum":"0464a6aba9f35f6c83a203caa23ab420909ce852","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"1.11.0-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.0-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.0-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.0-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.0-rc1","dist":{"shasum":"c2f6a4877374647b20b080c478d8dbcdfb4960ee","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz"},"_from":".","_npmVersion":"1.3.23","_npmUser":{"name":"jquery","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"jquery","email":"dave.methvin@gmail.com"}],"directories":{}},"2.1.0-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.0-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.0-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.0-rc1","dist":{"shasum":"8c9f5d9a055c2fedb3f5269617ae649497d6a3b0","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},"maintainers":[{"name":"jquery","email":"npm@jquery.com"},{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"}],"directories":{}},"1.11.0":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.0","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.0/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.0/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.0","dist":{"shasum":"c67ceee19b403650d682adcf39d5c9009814d949","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"2.1.0":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.0/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.0/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.0","dist":{"shasum":"1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"2.1.1-beta1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1-beta1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1-beta1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1-beta1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.3.2","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1-beta1","dist":{"shasum":"6306c8ea1d104775f3ef8f5c26f0a32acd710a11","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"jquery","email":"npm@jquery.com"},{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.11.1-beta1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1-beta1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1-beta1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1-beta1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.3.2","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1-beta1","dist":{"shasum":"c7eacde5e1ae06e029f1cd1b2dd444953a33e843","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"jquery","email":"npm@jquery.com"},{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"2.1.1-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1-rc1","_shasum":"95c494fdbbd0cefc305260e11ad46ae49a387c3d","_from":".","_npmVersion":"1.4.7","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"dist":{"shasum":"95c494fdbbd0cefc305260e11ad46ae49a387c3d","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz"},"directories":{}},"1.11.1-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1-rc1","_shasum":"666a7df02488b48732d96e8ab9bdd34f61dd4238","_from":".","_npmVersion":"1.4.7","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"dist":{"shasum":"666a7df02488b48732d96e8ab9bdd34f61dd4238","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz"},"directories":{}},"2.1.1-rc2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1-rc2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1-rc2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1-rc2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1-rc2","dist":{"shasum":"99833e415efa7ac8a4efecc5df6894b2f938a598","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.11.1-rc2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1-rc2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1-rc2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1-rc2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1-rc2","dist":{"shasum":"a4ef3edde0864d8524c5e72f59c459fd7a9ebd17","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"2.1.1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1","dist":{"shasum":"828fc60f50f7ee5983363ef4eb01c5f70af4bd5b","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.11.1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1","dist":{"shasum":"b6ec928590112ebed69e1e49cbfd0025ccd60ddb","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.9.1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.9.1","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/master/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt"}],"scripts":{"test":"grunt"},"dependencies":{},"devDependencies":{"grunt-compare-size":"~0.3.0","grunt-git-authors":"~1.1.0","grunt-update-submodules":"~0.2.0","grunt-contrib-watch":"~0.1.1","grunt-contrib-jshint":"~0.1.1","grunt-contrib-uglify":"~0.1.1","grunt":"~0.4.0","testswarm":"0.2.2"},"keywords":[],"gitHead":"d71f6a53927ad02d728503385d15539b73d21ac8","_id":"jquery@1.9.1","_shasum":"e4cd4835faaefbade535857613c0fc3ff2adaf34","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"e4cd4835faaefbade535857613c0fc3ff2adaf34","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz"},"directories":{}},"2.1.2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"a04f5ff9795fd6292117563623db44cf3f875868","_id":"jquery@2.1.2","_shasum":"b68f154cb2ea4731924883e9fe20ec199d1dc1e2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"b68f154cb2ea4731924883e9fe20ec199d1dc1e2","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz"},"directories":{}},"1.11.2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"9690801db01709bfbff5f977d07fb7cc14472908","_id":"jquery@1.11.2","_shasum":"30ab26857211c37caa83da0f6903155fe49bb72d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"30ab26857211c37caa83da0f6903155fe49bb72d","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz"},"directories":{}},"2.1.3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","jsdom":"1.5.0","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"8f2a9d9272d6ed7f32d3a484740ab342c02541e0","_id":"jquery@2.1.3","_shasum":"6ec55204673d505d39432c5bf5cfad10e1dbad2e","_from":".","_npmVersion":"2.1.14","_nodeVersion":"0.11.14","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"6ec55204673d505d39432c5bf5cfad10e1dbad2e","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz"},"directories":{}},"2.1.4":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.4","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","jsdom":"1.5.0","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"7751e69b615c6eca6f783a81e292a55725af6b85","_id":"jquery@2.1.4","_shasum":"228bde698a0c61431dc2630a6a154f15890d2317","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"228bde698a0c61431dc2630a6a154f15890d2317","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"},"directories":{}},"1.11.3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"1472290917f17af05e98007136096784f9051fab","_id":"jquery@1.11.3","_shasum":"dd8b74278b27102d29df63eae28308a8cfa1b583","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"dd8b74278b27102d29df63eae28308a8cfa1b583","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz"},"directories":{}}},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"time":{"modified":"2015-04-28T16:22:06.378Z","created":"2011-03-19T07:19:56.392Z","1.5.1":"2011-03-19T07:19:56.956Z","1.6.2":"2011-07-06T16:13:21.519Z","1.6.3":"2011-09-12T19:05:34.373Z","1.7.2":"2012-05-01T11:14:09.090Z","1.7.3":"2012-07-01T16:11:53.194Z","1.8.2":"2012-11-11T22:43:58.910Z","1.8.3":"2012-12-01T00:03:02.297Z","2.1.0-beta2":"2013-11-15T16:34:48.859Z","2.1.0-beta3":"2013-12-20T22:53:28.426Z","1.11.0-beta3":"2014-01-06T19:57:22.387Z","2.1.0-rc1":"2014-01-17T22:47:16.391Z","1.11.0-pre":"2014-01-16T20:38:42.912Z","1.11.0-rc1":"2014-01-16T21:08:36.924Z","1.11.0":"2014-01-23T21:07:07.184Z","2.1.0":"2014-01-23T21:12:47.772Z","2.1.1-beta1":"2014-03-24T17:05:07.581Z","1.11.1-beta1":"2014-03-24T17:25:14.236Z","2.1.1-rc1":"2014-04-18T15:29:41.423Z","1.11.1-rc1":"2014-04-18T15:40:23.931Z","2.1.1-rc2":"2014-04-21T20:52:06.866Z","1.11.1-rc2":"2014-04-21T21:12:52.817Z","2.1.1":"2014-05-01T17:15:20.164Z","1.11.1":"2014-05-01T18:05:32.863Z","1.9.1":"2014-07-17T22:01:17.886Z","2.1.2":"2014-12-17T14:14:28.184Z","1.11.2":"2014-12-17T16:07:07.647Z","2.1.3":"2014-12-18T15:18:38.205Z","2.1.4":"2015-04-28T16:17:13.648Z","1.11.3":"2015-04-28T16:22:06.378Z"},"author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt"},"users":{"dodo":true,"fgribreau":true,"parroit":true,"cedx":true,"m_gol":true,"feross":true,"bendiken":true,"funroll":true,"inancgumus":true,"jkcpr":true,"magemagic":true,"davidbaiguini":true,"shen-weizhong":true,"oroce":true,"beth_rogers465":true,"leobalter":true,"frk1705":true,"victorcastelan":true,"skinnybrit51":true,"tommyjs7":true,"xanderiel":true,"arturmuller":true,"lukecarrier":true,"bjlxj_2008":true,"kmck":true,"jesus81":true,"rpgreen":true,"vsn4ik":true,"gabrielsanterre":true,"adswebwork":true,"abuelwafa":true,"karlitowhoelse":true,"mhat":true,"tektimmy":true,"modest":true,"rgraves90":true,"alexandermac":true,"adamk":true,"nitayneeman":true,"haeck":true,"pnevares":true,"hal9zillion":true,"j3kz":true,"wambulance":true,"jostw":true,"sahilsk":true,"broxmgs":true,"jimster305":true,"csbun":true,"isis97":true,"simplyianm":true,"fatelei":true,"trotyl":true,"chengsu":true,"orlenka":true,"mr_eaze":true,"jmm23":true,"ackuser":true,"tfentonz":true,"ftornik":true,"onheiron":true,"jgreeley":true,"sedmonds":true,"cycomachead":true,"duchenerc":true,"damianof":true,"sergiodxa":true,"rhythm19":true,"piotrd":true,"buzuli":true},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"readme":"[jQuery](http://jquery.com/) - New Wave JavaScript\n==================================================\n\nContribution Guides\n--------------------------------------\n\nIn the spirit of open source software development, jQuery always encourages community code contribution. To help you get started and before you jump into writing code, be sure to read these important contribution guidelines thoroughly:\n\n1. [Getting Involved](http://contribute.jquery.org/)\n2. [Core Style Guide](http://contribute.jquery.org/style-guide/js/)\n3. [Writing Code for jQuery Foundation Projects](http://contribute.jquery.org/code/)\n\n\nEnvironments in which to use jQuery\n--------------------------------------\n\n- [Browser support](http://jquery.com/browser-support/) differs between the master (2.x) branch and the 1.x-master branch. Specifically, 2.x does not support legacy browsers such as IE6-8. The jQuery team continues to provide support for legacy browsers on the 1.x-master branch. Use the latest 1.x release if support for those browsers is required. See [browser support](http://jquery.com/browser-support/) for more info.\n- To use jQuery in Node, browser extensions, and other non-browser environments, use only **2.x** releases. 1.x does not support these environments.\n\n\nWhat you need to build your own jQuery\n--------------------------------------\n\nIn order to build jQuery, you need to have Node.js/npm latest and git 1.7 or later.\n(Earlier versions might work OK, but are not tested.)\n\nFor Windows you have to download and install [git](http://git-scm.com/downloads) and [Node.js](http://nodejs.org/download/).\n\nMac OS users should install [Homebrew](http://mxcl.github.com/homebrew/). Once Homebrew is installed, run `brew install git` to install git,\nand `brew install node` to install Node.js.\n\nLinux/BSD users should use their appropriate package managers to install git and Node.js, or build from source\nif you swing that way. Easy-peasy.\n\n\nHow to build your own jQuery\n----------------------------\n\nClone a copy of the main jQuery git repo by running:\n\n```bash\ngit clone git://github.com/jquery/jquery.git\n```\n\nEnter the jquery directory and run the build script:\n```bash\ncd jquery && npm run build\n```\nThe built version of jQuery will be put in the `dist/` subdirectory, along with the minified copy and associated map file.\n\nIf you want create custom build or help with jQuery development, it would be better to install [grunt command line interface](https://github.com/gruntjs/grunt-cli) as a global package:\n\n```\nnpm install -g grunt-cli\n```\nMake sure you have `grunt` installed by testing:\n```\ngrunt -v\n```\n\nNow by running `grunt` command, in the jquery directory, you could build full version of jQuery, just like with `npm run build` command:\n```\ngrunt\n```\n\nThere are many other tasks available for jQuery Core:\n```\ngrunt -help\n```\n\n### Modules\n\nSpecial builds can be created that exclude subsets of jQuery functionality.\nThis allows for smaller custom builds when the builder is certain that those parts of jQuery are not being used.\nFor example, an app that only used JSONP for `$.ajax()` and did not need to calculate offsets or positions of elements could exclude the offset and ajax/xhr modules.\n\nAny module may be excluded except for `core`, and `selector`. To exclude a module, pass its path relative to the `src` folder (without the `.js` extension).\n\nSome example modules that can be excluded are:\n\n- **ajax**: All AJAX functionality: `$.ajax()`, `$.get()`, `$.post()`, `$.ajaxSetup()`, `.load()`, transports, and ajax event shorthands such as `.ajaxStart()`.\n- **ajax/xhr**: The XMLHTTPRequest AJAX transport only.\n- **ajax/script**: The ` + +``` + +## Documentation + +### Collections + +* [each](#each) +* [eachSeries](#eachSeries) +* [eachLimit](#eachLimit) +* [map](#map) +* [mapSeries](#mapSeries) +* [mapLimit](#mapLimit) +* [filter](#filter) +* [filterSeries](#filterSeries) +* [reject](#reject) +* [rejectSeries](#rejectSeries) +* [reduce](#reduce) +* [reduceRight](#reduceRight) +* [detect](#detect) +* [detectSeries](#detectSeries) +* [sortBy](#sortBy) +* [some](#some) +* [every](#every) +* [concat](#concat) +* [concatSeries](#concatSeries) + +### Control Flow + +* [series](#series) +* [parallel](#parallel) +* [parallelLimit](#parallellimittasks-limit-callback) +* [whilst](#whilst) +* [doWhilst](#doWhilst) +* [until](#until) +* [doUntil](#doUntil) +* [forever](#forever) +* [waterfall](#waterfall) +* [compose](#compose) +* [applyEach](#applyEach) +* [applyEachSeries](#applyEachSeries) +* [queue](#queue) +* [cargo](#cargo) +* [auto](#auto) +* [iterator](#iterator) +* [apply](#apply) +* [nextTick](#nextTick) +* [times](#times) +* [timesSeries](#timesSeries) + +### Utils + +* [memoize](#memoize) +* [unmemoize](#unmemoize) +* [log](#log) +* [dir](#dir) +* [noConflict](#noConflict) + + +## Collections + +
    + +### each(arr, iterator, callback) + +Applies an iterator function to each item in an array, in parallel. +The iterator is called with an item from the list and a callback for when it +has finished. If the iterator passes an error to this callback, the main +callback for the each function is immediately called with the error. + +Note, that since this function applies the iterator to each item in parallel +there is no guarantee that the iterator functions will complete in order. + +__Arguments__ + +* arr - An array to iterate over. +* iterator(item, callback) - A function to apply to each item in the array. + The iterator is passed a callback(err) which must be called once it has + completed. If no error has occured, the callback should be run without + arguments or with an explicit null argument. +* callback(err) - A callback which is called after all the iterator functions + have finished, or an error has occurred. + +__Example__ + +```js +// assuming openFiles is an array of file names and saveFile is a function +// to save the modified contents of that file: + +async.each(openFiles, saveFile, function(err){ + // if any of the saves produced an error, err would equal that error +}); +``` + +--------------------------------------- + + + +### eachSeries(arr, iterator, callback) + +The same as each only the iterator is applied to each item in the array in +series. The next iterator is only called once the current one has completed +processing. This means the iterator functions will complete in order. + + +--------------------------------------- + + + +### eachLimit(arr, limit, iterator, callback) + +The same as each only no more than "limit" iterators will be simultaneously +running at any time. + +Note that the items are not processed in batches, so there is no guarantee that + the first "limit" iterator functions will complete before any others are +started. + +__Arguments__ + +* arr - An array to iterate over. +* limit - The maximum number of iterators to run at any time. +* iterator(item, callback) - A function to apply to each item in the array. + The iterator is passed a callback(err) which must be called once it has + completed. If no error has occured, the callback should be run without + arguments or with an explicit null argument. +* callback(err) - A callback which is called after all the iterator functions + have finished, or an error has occurred. + +__Example__ + +```js +// Assume documents is an array of JSON objects and requestApi is a +// function that interacts with a rate-limited REST api. + +async.eachLimit(documents, 20, requestApi, function(err){ + // if any of the saves produced an error, err would equal that error +}); +``` + +--------------------------------------- + + +### map(arr, iterator, callback) + +Produces a new array of values by mapping each value in the given array through +the iterator function. The iterator is called with an item from the array and a +callback for when it has finished processing. The callback takes 2 arguments, +an error and the transformed item from the array. If the iterator passes an +error to this callback, the main callback for the map function is immediately +called with the error. + +Note, that since this function applies the iterator to each item in parallel +there is no guarantee that the iterator functions will complete in order, however +the results array will be in the same order as the original array. + +__Arguments__ + +* arr - An array to iterate over. +* iterator(item, callback) - A function to apply to each item in the array. + The iterator is passed a callback(err, transformed) which must be called once + it has completed with an error (which can be null) and a transformed item. +* callback(err, results) - A callback which is called after all the iterator + functions have finished, or an error has occurred. Results is an array of the + transformed items from the original array. + +__Example__ + +```js +async.map(['file1','file2','file3'], fs.stat, function(err, results){ + // results is now an array of stats for each file +}); +``` + +--------------------------------------- + + +### mapSeries(arr, iterator, callback) + +The same as map only the iterator is applied to each item in the array in +series. The next iterator is only called once the current one has completed +processing. The results array will be in the same order as the original. + + +--------------------------------------- + + +### mapLimit(arr, limit, iterator, callback) + +The same as map only no more than "limit" iterators will be simultaneously +running at any time. + +Note that the items are not processed in batches, so there is no guarantee that + the first "limit" iterator functions will complete before any others are +started. + +__Arguments__ + +* arr - An array to iterate over. +* limit - The maximum number of iterators to run at any time. +* iterator(item, callback) - A function to apply to each item in the array. + The iterator is passed a callback(err, transformed) which must be called once + it has completed with an error (which can be null) and a transformed item. +* callback(err, results) - A callback which is called after all the iterator + functions have finished, or an error has occurred. Results is an array of the + transformed items from the original array. + +__Example__ + +```js +async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){ + // results is now an array of stats for each file +}); +``` + +--------------------------------------- + + +### filter(arr, iterator, callback) + +__Alias:__ select + +Returns a new array of all the values which pass an async truth test. +_The callback for each iterator call only accepts a single argument of true or +false, it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like fs.exists. This operation is +performed in parallel, but the results array will be in the same order as the +original. + +__Arguments__ + +* arr - An array to iterate over. +* iterator(item, callback) - A truth test to apply to each item in the array. + The iterator is passed a callback(truthValue) which must be called with a + boolean argument once it has completed. +* callback(results) - A callback which is called after all the iterator + functions have finished. + +__Example__ + +```js +async.filter(['file1','file2','file3'], fs.exists, function(results){ + // results now equals an array of the existing files +}); +``` + +--------------------------------------- + + +### filterSeries(arr, iterator, callback) + +__alias:__ selectSeries + +The same as filter only the iterator is applied to each item in the array in +series. The next iterator is only called once the current one has completed +processing. The results array will be in the same order as the original. + +--------------------------------------- + + +### reject(arr, iterator, callback) + +The opposite of filter. Removes values that pass an async truth test. + +--------------------------------------- + + +### rejectSeries(arr, iterator, callback) + +The same as reject, only the iterator is applied to each item in the array +in series. + + +--------------------------------------- + + +### reduce(arr, memo, iterator, callback) + +__aliases:__ inject, foldl + +Reduces a list of values into a single value using an async iterator to return +each successive step. Memo is the initial state of the reduction. This +function only operates in series. For performance reasons, it may make sense to +split a call to this function into a parallel map, then use the normal +Array.prototype.reduce on the results. This function is for situations where +each step in the reduction needs to be async, if you can get the data before +reducing it then it's probably a good idea to do so. + +__Arguments__ + +* arr - An array to iterate over. +* memo - The initial state of the reduction. +* iterator(memo, item, callback) - A function applied to each item in the + array to produce the next step in the reduction. The iterator is passed a + callback(err, reduction) which accepts an optional error as its first + argument, and the state of the reduction as the second. If an error is + passed to the callback, the reduction is stopped and the main callback is + immediately called with the error. +* callback(err, result) - A callback which is called after all the iterator + functions have finished. Result is the reduced value. + +__Example__ + +```js +async.reduce([1,2,3], 0, function(memo, item, callback){ + // pointless async: + process.nextTick(function(){ + callback(null, memo + item) + }); +}, function(err, result){ + // result is now equal to the last value of memo, which is 6 +}); +``` + +--------------------------------------- + + +### reduceRight(arr, memo, iterator, callback) + +__Alias:__ foldr + +Same as reduce, only operates on the items in the array in reverse order. + + +--------------------------------------- + + +### detect(arr, iterator, callback) + +Returns the first value in a list that passes an async truth test. The +iterator is applied in parallel, meaning the first iterator to return true will +fire the detect callback with that result. That means the result might not be +the first item in the original array (in terms of order) that passes the test. + +If order within the original array is important then look at detectSeries. + +__Arguments__ + +* arr - An array to iterate over. +* iterator(item, callback) - A truth test to apply to each item in the array. + The iterator is passed a callback(truthValue) which must be called with a + boolean argument once it has completed. +* callback(result) - A callback which is called as soon as any iterator returns + true, or after all the iterator functions have finished. Result will be + the first item in the array that passes the truth test (iterator) or the + value undefined if none passed. + +__Example__ + +```js +async.detect(['file1','file2','file3'], fs.exists, function(result){ + // result now equals the first file in the list that exists +}); +``` + +--------------------------------------- + + +### detectSeries(arr, iterator, callback) + +The same as detect, only the iterator is applied to each item in the array +in series. This means the result is always the first in the original array (in +terms of array order) that passes the truth test. + + +--------------------------------------- + + +### sortBy(arr, iterator, callback) + +Sorts a list by the results of running each value through an async iterator. + +__Arguments__ + +* arr - An array to iterate over. +* iterator(item, callback) - A function to apply to each item in the array. + The iterator is passed a callback(err, sortValue) which must be called once it + has completed with an error (which can be null) and a value to use as the sort + criteria. +* callback(err, results) - A callback which is called after all the iterator + functions have finished, or an error has occurred. Results is the items from + the original array sorted by the values returned by the iterator calls. + +__Example__ + +```js +async.sortBy(['file1','file2','file3'], function(file, callback){ + fs.stat(file, function(err, stats){ + callback(err, stats.mtime); + }); +}, function(err, results){ + // results is now the original array of files sorted by + // modified date +}); +``` + +--------------------------------------- + + +### some(arr, iterator, callback) + +__Alias:__ any + +Returns true if at least one element in the array satisfies an async test. +_The callback for each iterator call only accepts a single argument of true or +false, it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like fs.exists. Once any iterator +call returns true, the main callback is immediately called. + +__Arguments__ + +* arr - An array to iterate over. +* iterator(item, callback) - A truth test to apply to each item in the array. + The iterator is passed a callback(truthValue) which must be called with a + boolean argument once it has completed. +* callback(result) - A callback which is called as soon as any iterator returns + true, or after all the iterator functions have finished. Result will be + either true or false depending on the values of the async tests. + +__Example__ + +```js +async.some(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then at least one of the files exists +}); +``` + +--------------------------------------- + + +### every(arr, iterator, callback) + +__Alias:__ all + +Returns true if every element in the array satisfies an async test. +_The callback for each iterator call only accepts a single argument of true or +false, it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like fs.exists. + +__Arguments__ + +* arr - An array to iterate over. +* iterator(item, callback) - A truth test to apply to each item in the array. + The iterator is passed a callback(truthValue) which must be called with a + boolean argument once it has completed. +* callback(result) - A callback which is called after all the iterator + functions have finished. Result will be either true or false depending on + the values of the async tests. + +__Example__ + +```js +async.every(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then every file exists +}); +``` + +--------------------------------------- + + +### concat(arr, iterator, callback) + +Applies an iterator to each item in a list, concatenating the results. Returns the +concatenated list. The iterators are called in parallel, and the results are +concatenated as they return. There is no guarantee that the results array will +be returned in the original order of the arguments passed to the iterator function. + +__Arguments__ + +* arr - An array to iterate over +* iterator(item, callback) - A function to apply to each item in the array. + The iterator is passed a callback(err, results) which must be called once it + has completed with an error (which can be null) and an array of results. +* callback(err, results) - A callback which is called after all the iterator + functions have finished, or an error has occurred. Results is an array containing + the concatenated results of the iterator function. + +__Example__ + +```js +async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ + // files is now a list of filenames that exist in the 3 directories +}); +``` + +--------------------------------------- + + +### concatSeries(arr, iterator, callback) + +Same as async.concat, but executes in series instead of parallel. + + +## Control Flow + + +### series(tasks, [callback]) + +Run an array of functions in series, each one running once the previous +function has completed. If any functions in the series pass an error to its +callback, no more functions are run and the callback for the series is +immediately called with the value of the error. Once the tasks have completed, +the results are passed to the final callback as an array. + +It is also possible to use an object instead of an array. Each property will be +run as a function and the results will be passed to the final callback as an object +instead of an array. This can be a more readable way of handling results from +async.series. + + +__Arguments__ + +* tasks - An array or object containing functions to run, each function is passed + a callback(err, result) it must call on completion with an error (which can + be null) and an optional result value. +* callback(err, results) - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the task callbacks. + +__Example__ + +```js +async.series([ + function(callback){ + // do some stuff ... + callback(null, 'one'); + }, + function(callback){ + // do some more stuff ... + callback(null, 'two'); + } +], +// optional callback +function(err, results){ + // results is now equal to ['one', 'two'] +}); + + +// an example using an object instead of an array +async.series({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equal to: {one: 1, two: 2} +}); +``` + +--------------------------------------- + + +### parallel(tasks, [callback]) + +Run an array of functions in parallel, without waiting until the previous +function has completed. If any of the functions pass an error to its +callback, the main callback is immediately called with the value of the error. +Once the tasks have completed, the results are passed to the final callback as an +array. + +It is also possible to use an object instead of an array. Each property will be +run as a function and the results will be passed to the final callback as an object +instead of an array. This can be a more readable way of handling results from +async.parallel. + + +__Arguments__ + +* tasks - An array or object containing functions to run, each function is passed + a callback(err, result) it must call on completion with an error (which can + be null) and an optional result value. +* callback(err, results) - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the task callbacks. + +__Example__ + +```js +async.parallel([ + function(callback){ + setTimeout(function(){ + callback(null, 'one'); + }, 200); + }, + function(callback){ + setTimeout(function(){ + callback(null, 'two'); + }, 100); + } +], +// optional callback +function(err, results){ + // the results array will equal ['one','two'] even though + // the second function had a shorter timeout. +}); + + +// an example using an object instead of an array +async.parallel({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equals to: {one: 1, two: 2} +}); +``` + +--------------------------------------- + + +### parallelLimit(tasks, limit, [callback]) + +The same as parallel only the tasks are executed in parallel with a maximum of "limit" +tasks executing at any time. + +Note that the tasks are not executed in batches, so there is no guarantee that +the first "limit" tasks will complete before any others are started. + +__Arguments__ + +* tasks - An array or object containing functions to run, each function is passed + a callback(err, result) it must call on completion with an error (which can + be null) and an optional result value. +* limit - The maximum number of tasks to run at any time. +* callback(err, results) - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the task callbacks. + +--------------------------------------- + + +### whilst(test, fn, callback) + +Repeatedly call fn, while test returns true. Calls the callback when stopped, +or an error occurs. + +__Arguments__ + +* test() - synchronous truth test to perform before each execution of fn. +* fn(callback) - A function to call each time the test passes. The function is + passed a callback(err) which must be called once it has completed with an + optional error argument. +* callback(err) - A callback which is called after the test fails and repeated + execution of fn has stopped. + +__Example__ + +```js +var count = 0; + +async.whilst( + function () { return count < 5; }, + function (callback) { + count++; + setTimeout(callback, 1000); + }, + function (err) { + // 5 seconds have passed + } +); +``` + +--------------------------------------- + + +### doWhilst(fn, test, callback) + +The post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + +--------------------------------------- + + +### until(test, fn, callback) + +Repeatedly call fn, until test returns true. Calls the callback when stopped, +or an error occurs. + +The inverse of async.whilst. + +--------------------------------------- + + +### doUntil(fn, test, callback) + +Like doWhilst except the test is inverted. Note the argument ordering differs from `until`. + +--------------------------------------- + + +### forever(fn, callback) + +Calls the asynchronous function 'fn' repeatedly, in series, indefinitely. +If an error is passed to fn's callback then 'callback' is called with the +error, otherwise it will never be called. + +--------------------------------------- + + +### waterfall(tasks, [callback]) + +Runs an array of functions in series, each passing their results to the next in +the array. However, if any of the functions pass an error to the callback, the +next function is not executed and the main callback is immediately called with +the error. + +__Arguments__ + +* tasks - An array of functions to run, each function is passed a + callback(err, result1, result2, ...) it must call on completion. The first + argument is an error (which can be null) and any further arguments will be + passed as arguments in order to the next task. +* callback(err, [results]) - An optional callback to run once all the functions + have completed. This will be passed the results of the last task's callback. + + + +__Example__ + +```js +async.waterfall([ + function(callback){ + callback(null, 'one', 'two'); + }, + function(arg1, arg2, callback){ + callback(null, 'three'); + }, + function(arg1, callback){ + // arg1 now equals 'three' + callback(null, 'done'); + } +], function (err, result) { + // result now equals 'done' +}); +``` + +--------------------------------------- + +### compose(fn1, fn2...) + +Creates a function which is a composition of the passed asynchronous +functions. Each function consumes the return value of the function that +follows. Composing functions f(), g() and h() would produce the result of +f(g(h())), only this version uses callbacks to obtain the return values. + +Each function is executed with the `this` binding of the composed function. + +__Arguments__ + +* functions... - the asynchronous functions to compose + + +__Example__ + +```js +function add1(n, callback) { + setTimeout(function () { + callback(null, n + 1); + }, 10); +} + +function mul3(n, callback) { + setTimeout(function () { + callback(null, n * 3); + }, 10); +} + +var add1mul3 = async.compose(mul3, add1); + +add1mul3(4, function (err, result) { + // result now equals 15 +}); +``` + +--------------------------------------- + +### applyEach(fns, args..., callback) + +Applies the provided arguments to each function in the array, calling the +callback after all functions have completed. If you only provide the first +argument then it will return a function which lets you pass in the +arguments as if it were a single function call. + +__Arguments__ + +* fns - the asynchronous functions to all call with the same arguments +* args... - any number of separate arguments to pass to the function +* callback - the final argument should be the callback, called when all + functions have completed processing + + +__Example__ + +```js +async.applyEach([enableSearch, updateSchema], 'bucket', callback); + +// partial application example: +async.each( + buckets, + async.applyEach([enableSearch, updateSchema]), + callback +); +``` + +--------------------------------------- + + +### applyEachSeries(arr, iterator, callback) + +The same as applyEach only the functions are applied in series. + +--------------------------------------- + + +### queue(worker, concurrency) + +Creates a queue object with the specified concurrency. Tasks added to the +queue will be processed in parallel (up to the concurrency limit). If all +workers are in progress, the task is queued until one is available. Once +a worker has completed a task, the task's callback is called. + +__Arguments__ + +* worker(task, callback) - An asynchronous function for processing a queued + task, which must call its callback(err) argument when finished, with an + optional error as an argument. +* concurrency - An integer for determining how many worker functions should be + run in parallel. + +__Queue objects__ + +The queue object returned by this function has the following properties and +methods: + +* length() - a function returning the number of items waiting to be processed. +* concurrency - an integer for determining how many worker functions should be + run in parallel. This property can be changed after a queue is created to + alter the concurrency on-the-fly. +* push(task, [callback]) - add a new task to the queue, the callback is called + once the worker has finished processing the task. + instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list. +* unshift(task, [callback]) - add a new task to the front of the queue. +* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued +* empty - a callback that is called when the last item from the queue is given to a worker +* drain - a callback that is called when the last item from the queue has returned from the worker + +__Example__ + +```js +// create a queue object with concurrency 2 + +var q = async.queue(function (task, callback) { + console.log('hello ' + task.name); + callback(); +}, 2); + + +// assign a callback +q.drain = function() { + console.log('all items have been processed'); +} + +// add some items to the queue + +q.push({name: 'foo'}, function (err) { + console.log('finished processing foo'); +}); +q.push({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); + +// add some items to the queue (batch-wise) + +q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { + console.log('finished processing bar'); +}); + +// add some items to the front of the queue + +q.unshift({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); +``` + +--------------------------------------- + + +### cargo(worker, [payload]) + +Creates a cargo object with the specified payload. Tasks added to the +cargo will be processed altogether (up to the payload limit). If the +worker is in progress, the task is queued until it is available. Once +the worker has completed some tasks, each callback of those tasks is called. + +__Arguments__ + +* worker(tasks, callback) - An asynchronous function for processing an array of + queued tasks, which must call its callback(err) argument when finished, with + an optional error as an argument. +* payload - An optional integer for determining how many tasks should be + processed per round; if omitted, the default is unlimited. + +__Cargo objects__ + +The cargo object returned by this function has the following properties and +methods: + +* length() - a function returning the number of items waiting to be processed. +* payload - an integer for determining how many tasks should be + process per round. This property can be changed after a cargo is created to + alter the payload on-the-fly. +* push(task, [callback]) - add a new task to the queue, the callback is called + once the worker has finished processing the task. + instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list. +* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued +* empty - a callback that is called when the last item from the queue is given to a worker +* drain - a callback that is called when the last item from the queue has returned from the worker + +__Example__ + +```js +// create a cargo object with payload 2 + +var cargo = async.cargo(function (tasks, callback) { + for(var i=0; i +### auto(tasks, [callback]) + +Determines the best order for running functions based on their requirements. +Each function can optionally depend on other functions being completed first, +and each function is run as soon as its requirements are satisfied. If any of +the functions pass an error to their callback, that function will not complete +(so any other functions depending on it will not run) and the main callback +will be called immediately with the error. Functions also receive an object +containing the results of functions which have completed so far. + +Note, all functions are called with a results object as a second argument, +so it is unsafe to pass functions in the tasks object which cannot handle the +extra argument. For example, this snippet of code: + +```js +async.auto({ + readData: async.apply(fs.readFile, 'data.txt', 'utf-8') +}, callback); +``` + +will have the effect of calling readFile with the results object as the last +argument, which will fail: + +```js +fs.readFile('data.txt', 'utf-8', cb, {}); +``` + +Instead, wrap the call to readFile in a function which does not forward the +results object: + +```js +async.auto({ + readData: function(cb, results){ + fs.readFile('data.txt', 'utf-8', cb); + } +}, callback); +``` + +__Arguments__ + +* tasks - An object literal containing named functions or an array of + requirements, with the function itself the last item in the array. The key + used for each function or array is used when specifying requirements. The + function receives two arguments: (1) a callback(err, result) which must be + called when finished, passing an error (which can be null) and the result of + the function's execution, and (2) a results object, containing the results of + the previously executed functions. +* callback(err, results) - An optional callback which is called when all the + tasks have been completed. The callback will receive an error as an argument + if any tasks pass an error to their callback. Results will always be passed + but if an error occurred, no other tasks will be performed, and the results + object will only contain partial results. + + +__Example__ + +```js +async.auto({ + get_data: function(callback){ + // async code to get some data + }, + make_folder: function(callback){ + // async code to create a directory to store a file in + // this is run at the same time as getting the data + }, + write_file: ['get_data', 'make_folder', function(callback){ + // once there is some data and the directory exists, + // write the data to a file in the directory + callback(null, filename); + }], + email_link: ['write_file', function(callback, results){ + // once the file is written let's email a link to it... + // results.write_file contains the filename returned by write_file. + }] +}); +``` + +This is a fairly trivial example, but to do this using the basic parallel and +series functions would look like this: + +```js +async.parallel([ + function(callback){ + // async code to get some data + }, + function(callback){ + // async code to create a directory to store a file in + // this is run at the same time as getting the data + } +], +function(err, results){ + async.series([ + function(callback){ + // once there is some data and the directory exists, + // write the data to a file in the directory + }, + function(callback){ + // once the file is written let's email a link to it... + } + ]); +}); +``` + +For a complicated series of async tasks using the auto function makes adding +new tasks much easier and makes the code more readable. + + +--------------------------------------- + + +### iterator(tasks) + +Creates an iterator function which calls the next function in the array, +returning a continuation to call the next one after that. It's also possible to +'peek' the next iterator by doing iterator.next(). + +This function is used internally by the async module but can be useful when +you want to manually control the flow of functions in series. + +__Arguments__ + +* tasks - An array of functions to run. + +__Example__ + +```js +var iterator = async.iterator([ + function(){ sys.p('one'); }, + function(){ sys.p('two'); }, + function(){ sys.p('three'); } +]); + +node> var iterator2 = iterator(); +'one' +node> var iterator3 = iterator2(); +'two' +node> iterator3(); +'three' +node> var nextfn = iterator2.next(); +node> nextfn(); +'three' +``` + +--------------------------------------- + + +### apply(function, arguments..) + +Creates a continuation function with some arguments already applied, a useful +shorthand when combined with other control flow functions. Any arguments +passed to the returned function are added to the arguments originally passed +to apply. + +__Arguments__ + +* function - The function you want to eventually apply all arguments to. +* arguments... - Any number of arguments to automatically apply when the + continuation is called. + +__Example__ + +```js +// using apply + +async.parallel([ + async.apply(fs.writeFile, 'testfile1', 'test1'), + async.apply(fs.writeFile, 'testfile2', 'test2'), +]); + + +// the same process without using apply + +async.parallel([ + function(callback){ + fs.writeFile('testfile1', 'test1', callback); + }, + function(callback){ + fs.writeFile('testfile2', 'test2', callback); + } +]); +``` + +It's possible to pass any number of additional arguments when calling the +continuation: + +```js +node> var fn = async.apply(sys.puts, 'one'); +node> fn('two', 'three'); +one +two +three +``` + +--------------------------------------- + + +### nextTick(callback) + +Calls the callback on a later loop around the event loop. In node.js this just +calls process.nextTick, in the browser it falls back to setImmediate(callback) +if available, otherwise setTimeout(callback, 0), which means other higher priority +events may precede the execution of the callback. + +This is used internally for browser-compatibility purposes. + +__Arguments__ + +* callback - The function to call on a later loop around the event loop. + +__Example__ + +```js +var call_order = []; +async.nextTick(function(){ + call_order.push('two'); + // call_order now equals ['one','two'] +}); +call_order.push('one') +``` + + +### times(n, callback) + +Calls the callback n times and accumulates results in the same manner +you would use with async.map. + +__Arguments__ + +* n - The number of times to run the function. +* callback - The function to call n times. + +__Example__ + +```js +// Pretend this is some complicated async factory +var createUser = function(id, callback) { + callback(null, { + id: 'user' + id + }) +} +// generate 5 users +async.times(5, function(n, next){ + createUser(n, function(err, user) { + next(err, user) + }) +}, function(err, users) { + // we should now have 5 users +}); +``` + + +### timesSeries(n, callback) + +The same as times only the iterator is applied to each item in the array in +series. The next iterator is only called once the current one has completed +processing. The results array will be in the same order as the original. + + +## Utils + + +### memoize(fn, [hasher]) + +Caches the results of an async function. When creating a hash to store function +results against, the callback is omitted from the hash and an optional hash +function can be used. + +The cache of results is exposed as the `memo` property of the function returned +by `memoize`. + +__Arguments__ + +* fn - the function you to proxy and cache results from. +* hasher - an optional function for generating a custom hash for storing + results, it has all the arguments applied to it apart from the callback, and + must be synchronous. + +__Example__ + +```js +var slow_fn = function (name, callback) { + // do something + callback(null, result); +}; +var fn = async.memoize(slow_fn); + +// fn can now be used as if it were slow_fn +fn('some name', function () { + // callback +}); +``` + + +### unmemoize(fn) + +Undoes a memoized function, reverting it to the original, unmemoized +form. Comes handy in tests. + +__Arguments__ + +* fn - the memoized function + + +### log(function, arguments) + +Logs the result of an async function to the console. Only works in node.js or +in browsers that support console.log and console.error (such as FF and Chrome). +If multiple arguments are returned from the async function, console.log is +called on each argument in order. + +__Arguments__ + +* function - The function you want to eventually apply all arguments to. +* arguments... - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, 'hello ' + name); + }, 1000); +}; +``` +```js +node> async.log(hello, 'world'); +'hello world' +``` + +--------------------------------------- + + +### dir(function, arguments) + +Logs the result of an async function to the console using console.dir to +display the properties of the resulting object. Only works in node.js or +in browsers that support console.dir and console.error (such as FF and Chrome). +If multiple arguments are returned from the async function, console.dir is +called on each argument in order. + +__Arguments__ + +* function - The function you want to eventually apply all arguments to. +* arguments... - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, {hello: name}); + }, 1000); +}; +``` +```js +node> async.dir(hello, 'world'); +{hello: 'world'} +``` + +--------------------------------------- + + +### noConflict() + +Changes the value of async back to its original value, returning a reference to the +async object. diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/component.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/component.json new file mode 100644 index 0000000..bbb0115 --- /dev/null +++ b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/component.json @@ -0,0 +1,11 @@ +{ + "name": "async", + "repo": "caolan/async", + "description": "Higher-order functions and common patterns for asynchronous code", + "version": "0.1.23", + "keywords": [], + "dependencies": {}, + "development": {}, + "main": "lib/async.js", + "scripts": [ "lib/async.js" ] +} diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js new file mode 100755 index 0000000..1eebb15 --- /dev/null +++ b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js @@ -0,0 +1,958 @@ +/*global setImmediate: false, setTimeout: false, console: false */ +(function () { + + var async = {}; + + // global on the server, window in the browser + var root, previous_async; + + root = this; + if (root != null) { + previous_async = root.async; + } + + async.noConflict = function () { + root.async = previous_async; + return async; + }; + + function only_once(fn) { + var called = false; + return function() { + if (called) throw new Error("Callback was already called."); + called = true; + fn.apply(root, arguments); + } + } + + //// cross-browser compatiblity functions //// + + var _each = function (arr, iterator) { + if (arr.forEach) { + return arr.forEach(iterator); + } + for (var i = 0; i < arr.length; i += 1) { + iterator(arr[i], i, arr); + } + }; + + var _map = function (arr, iterator) { + if (arr.map) { + return arr.map(iterator); + } + var results = []; + _each(arr, function (x, i, a) { + results.push(iterator(x, i, a)); + }); + return results; + }; + + var _reduce = function (arr, iterator, memo) { + if (arr.reduce) { + return arr.reduce(iterator, memo); + } + _each(arr, function (x, i, a) { + memo = iterator(memo, x, i, a); + }); + return memo; + }; + + var _keys = function (obj) { + if (Object.keys) { + return Object.keys(obj); + } + var keys = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + keys.push(k); + } + } + return keys; + }; + + //// exported async module functions //// + + //// nextTick implementation with browser-compatible fallback //// + if (typeof process === 'undefined' || !(process.nextTick)) { + if (typeof setImmediate === 'function') { + async.nextTick = function (fn) { + // not a direct alias for IE10 compatibility + setImmediate(fn); + }; + async.setImmediate = async.nextTick; + } + else { + async.nextTick = function (fn) { + setTimeout(fn, 0); + }; + async.setImmediate = async.nextTick; + } + } + else { + async.nextTick = process.nextTick; + if (typeof setImmediate !== 'undefined') { + async.setImmediate = function (fn) { + // not a direct alias for IE10 compatibility + setImmediate(fn); + }; + } + else { + async.setImmediate = async.nextTick; + } + } + + async.each = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + _each(arr, function (x) { + iterator(x, only_once(function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed >= arr.length) { + callback(null); + } + } + })); + }); + }; + async.forEach = async.each; + + async.eachSeries = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + var iterate = function () { + iterator(arr[completed], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed >= arr.length) { + callback(null); + } + else { + iterate(); + } + } + }); + }; + iterate(); + }; + async.forEachSeries = async.eachSeries; + + async.eachLimit = function (arr, limit, iterator, callback) { + var fn = _eachLimit(limit); + fn.apply(null, [arr, iterator, callback]); + }; + async.forEachLimit = async.eachLimit; + + var _eachLimit = function (limit) { + + return function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length || limit <= 0) { + return callback(); + } + var completed = 0; + var started = 0; + var running = 0; + + (function replenish () { + if (completed >= arr.length) { + return callback(); + } + + while (running < limit && started < arr.length) { + started += 1; + running += 1; + iterator(arr[started - 1], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + running -= 1; + if (completed >= arr.length) { + callback(); + } + else { + replenish(); + } + } + }); + } + })(); + }; + }; + + + var doParallel = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.each].concat(args)); + }; + }; + var doParallelLimit = function(limit, fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [_eachLimit(limit)].concat(args)); + }; + }; + var doSeries = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.eachSeries].concat(args)); + }; + }; + + + var _asyncMap = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (err, v) { + results[x.index] = v; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + }; + async.map = doParallel(_asyncMap); + async.mapSeries = doSeries(_asyncMap); + async.mapLimit = function (arr, limit, iterator, callback) { + return _mapLimit(limit)(arr, iterator, callback); + }; + + var _mapLimit = function(limit) { + return doParallelLimit(limit, _asyncMap); + }; + + // reduce only has a series version, as doing reduce in parallel won't + // work in many situations. + async.reduce = function (arr, memo, iterator, callback) { + async.eachSeries(arr, function (x, callback) { + iterator(memo, x, function (err, v) { + memo = v; + callback(err); + }); + }, function (err) { + callback(err, memo); + }); + }; + // inject alias + async.inject = async.reduce; + // foldl alias + async.foldl = async.reduce; + + async.reduceRight = function (arr, memo, iterator, callback) { + var reversed = _map(arr, function (x) { + return x; + }).reverse(); + async.reduce(reversed, memo, iterator, callback); + }; + // foldr alias + async.foldr = async.reduceRight; + + var _filter = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.filter = doParallel(_filter); + async.filterSeries = doSeries(_filter); + // select alias + async.select = async.filter; + async.selectSeries = async.filterSeries; + + var _reject = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (!v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.reject = doParallel(_reject); + async.rejectSeries = doSeries(_reject); + + var _detect = function (eachfn, arr, iterator, main_callback) { + eachfn(arr, function (x, callback) { + iterator(x, function (result) { + if (result) { + main_callback(x); + main_callback = function () {}; + } + else { + callback(); + } + }); + }, function (err) { + main_callback(); + }); + }; + async.detect = doParallel(_detect); + async.detectSeries = doSeries(_detect); + + async.some = function (arr, iterator, main_callback) { + async.each(arr, function (x, callback) { + iterator(x, function (v) { + if (v) { + main_callback(true); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(false); + }); + }; + // any alias + async.any = async.some; + + async.every = function (arr, iterator, main_callback) { + async.each(arr, function (x, callback) { + iterator(x, function (v) { + if (!v) { + main_callback(false); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(true); + }); + }; + // all alias + async.all = async.every; + + async.sortBy = function (arr, iterator, callback) { + async.map(arr, function (x, callback) { + iterator(x, function (err, criteria) { + if (err) { + callback(err); + } + else { + callback(null, {value: x, criteria: criteria}); + } + }); + }, function (err, results) { + if (err) { + return callback(err); + } + else { + var fn = function (left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }; + callback(null, _map(results.sort(fn), function (x) { + return x.value; + })); + } + }); + }; + + async.auto = function (tasks, callback) { + callback = callback || function () {}; + var keys = _keys(tasks); + if (!keys.length) { + return callback(null); + } + + var results = {}; + + var listeners = []; + var addListener = function (fn) { + listeners.unshift(fn); + }; + var removeListener = function (fn) { + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] === fn) { + listeners.splice(i, 1); + return; + } + } + }; + var taskComplete = function () { + _each(listeners.slice(0), function (fn) { + fn(); + }); + }; + + addListener(function () { + if (_keys(results).length === keys.length) { + callback(null, results); + callback = function () {}; + } + }); + + _each(keys, function (k) { + var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; + var taskCallback = function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + if (err) { + var safeResults = {}; + _each(_keys(results), function(rkey) { + safeResults[rkey] = results[rkey]; + }); + safeResults[k] = args; + callback(err, safeResults); + // stop subsequent errors hitting callback multiple times + callback = function () {}; + } + else { + results[k] = args; + async.setImmediate(taskComplete); + } + }; + var requires = task.slice(0, Math.abs(task.length - 1)) || []; + var ready = function () { + return _reduce(requires, function (a, x) { + return (a && results.hasOwnProperty(x)); + }, true) && !results.hasOwnProperty(k); + }; + if (ready()) { + task[task.length - 1](taskCallback, results); + } + else { + var listener = function () { + if (ready()) { + removeListener(listener); + task[task.length - 1](taskCallback, results); + } + }; + addListener(listener); + } + }); + }; + + async.waterfall = function (tasks, callback) { + callback = callback || function () {}; + if (tasks.constructor !== Array) { + var err = new Error('First argument to waterfall must be an array of functions'); + return callback(err); + } + if (!tasks.length) { + return callback(); + } + var wrapIterator = function (iterator) { + return function (err) { + if (err) { + callback.apply(null, arguments); + callback = function () {}; + } + else { + var args = Array.prototype.slice.call(arguments, 1); + var next = iterator.next(); + if (next) { + args.push(wrapIterator(next)); + } + else { + args.push(callback); + } + async.setImmediate(function () { + iterator.apply(null, args); + }); + } + }; + }; + wrapIterator(async.iterator(tasks))(); + }; + + var _parallel = function(eachfn, tasks, callback) { + callback = callback || function () {}; + if (tasks.constructor === Array) { + eachfn.map(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + eachfn.each(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.parallel = function (tasks, callback) { + _parallel({ map: async.map, each: async.each }, tasks, callback); + }; + + async.parallelLimit = function(tasks, limit, callback) { + _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback); + }; + + async.series = function (tasks, callback) { + callback = callback || function () {}; + if (tasks.constructor === Array) { + async.mapSeries(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + async.eachSeries(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.iterator = function (tasks) { + var makeCallback = function (index) { + var fn = function () { + if (tasks.length) { + tasks[index].apply(null, arguments); + } + return fn.next(); + }; + fn.next = function () { + return (index < tasks.length - 1) ? makeCallback(index + 1): null; + }; + return fn; + }; + return makeCallback(0); + }; + + async.apply = function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return fn.apply( + null, args.concat(Array.prototype.slice.call(arguments)) + ); + }; + }; + + var _concat = function (eachfn, arr, fn, callback) { + var r = []; + eachfn(arr, function (x, cb) { + fn(x, function (err, y) { + r = r.concat(y || []); + cb(err); + }); + }, function (err) { + callback(err, r); + }); + }; + async.concat = doParallel(_concat); + async.concatSeries = doSeries(_concat); + + async.whilst = function (test, iterator, callback) { + if (test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.whilst(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.doWhilst = function (iterator, test, callback) { + iterator(function (err) { + if (err) { + return callback(err); + } + if (test()) { + async.doWhilst(iterator, test, callback); + } + else { + callback(); + } + }); + }; + + async.until = function (test, iterator, callback) { + if (!test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.until(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.doUntil = function (iterator, test, callback) { + iterator(function (err) { + if (err) { + return callback(err); + } + if (!test()) { + async.doUntil(iterator, test, callback); + } + else { + callback(); + } + }); + }; + + async.queue = function (worker, concurrency) { + if (concurrency === undefined) { + concurrency = 1; + } + function _insert(q, data, pos, callback) { + if(data.constructor !== Array) { + data = [data]; + } + _each(data, function(task) { + var item = { + data: task, + callback: typeof callback === 'function' ? callback : null + }; + + if (pos) { + q.tasks.unshift(item); + } else { + q.tasks.push(item); + } + + if (q.saturated && q.tasks.length === concurrency) { + q.saturated(); + } + async.setImmediate(q.process); + }); + } + + var workers = 0; + var q = { + tasks: [], + concurrency: concurrency, + saturated: null, + empty: null, + drain: null, + push: function (data, callback) { + _insert(q, data, false, callback); + }, + unshift: function (data, callback) { + _insert(q, data, true, callback); + }, + process: function () { + if (workers < q.concurrency && q.tasks.length) { + var task = q.tasks.shift(); + if (q.empty && q.tasks.length === 0) { + q.empty(); + } + workers += 1; + var next = function () { + workers -= 1; + if (task.callback) { + task.callback.apply(task, arguments); + } + if (q.drain && q.tasks.length + workers === 0) { + q.drain(); + } + q.process(); + }; + var cb = only_once(next); + worker(task.data, cb); + } + }, + length: function () { + return q.tasks.length; + }, + running: function () { + return workers; + } + }; + return q; + }; + + async.cargo = function (worker, payload) { + var working = false, + tasks = []; + + var cargo = { + tasks: tasks, + payload: payload, + saturated: null, + empty: null, + drain: null, + push: function (data, callback) { + if(data.constructor !== Array) { + data = [data]; + } + _each(data, function(task) { + tasks.push({ + data: task, + callback: typeof callback === 'function' ? callback : null + }); + if (cargo.saturated && tasks.length === payload) { + cargo.saturated(); + } + }); + async.setImmediate(cargo.process); + }, + process: function process() { + if (working) return; + if (tasks.length === 0) { + if(cargo.drain) cargo.drain(); + return; + } + + var ts = typeof payload === 'number' + ? tasks.splice(0, payload) + : tasks.splice(0); + + var ds = _map(ts, function (task) { + return task.data; + }); + + if(cargo.empty) cargo.empty(); + working = true; + worker(ds, function () { + working = false; + + var args = arguments; + _each(ts, function (data) { + if (data.callback) { + data.callback.apply(null, args); + } + }); + + process(); + }); + }, + length: function () { + return tasks.length; + }, + running: function () { + return working; + } + }; + return cargo; + }; + + var _console_fn = function (name) { + return function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + fn.apply(null, args.concat([function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (typeof console !== 'undefined') { + if (err) { + if (console.error) { + console.error(err); + } + } + else if (console[name]) { + _each(args, function (x) { + console[name](x); + }); + } + } + }])); + }; + }; + async.log = _console_fn('log'); + async.dir = _console_fn('dir'); + /*async.info = _console_fn('info'); + async.warn = _console_fn('warn'); + async.error = _console_fn('error');*/ + + async.memoize = function (fn, hasher) { + var memo = {}; + var queues = {}; + hasher = hasher || function (x) { + return x; + }; + var memoized = function () { + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + var key = hasher.apply(null, args); + if (key in memo) { + callback.apply(null, memo[key]); + } + else if (key in queues) { + queues[key].push(callback); + } + else { + queues[key] = [callback]; + fn.apply(null, args.concat([function () { + memo[key] = arguments; + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i].apply(null, arguments); + } + }])); + } + }; + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; + }; + + async.unmemoize = function (fn) { + return function () { + return (fn.unmemoized || fn).apply(null, arguments); + }; + }; + + async.times = function (count, iterator, callback) { + var counter = []; + for (var i = 0; i < count; i++) { + counter.push(i); + } + return async.map(counter, iterator, callback); + }; + + async.timesSeries = function (count, iterator, callback) { + var counter = []; + for (var i = 0; i < count; i++) { + counter.push(i); + } + return async.mapSeries(counter, iterator, callback); + }; + + async.compose = function (/* functions... */) { + var fns = Array.prototype.reverse.call(arguments); + return function () { + var that = this; + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + async.reduce(fns, args, function (newargs, fn, cb) { + fn.apply(that, newargs.concat([function () { + var err = arguments[0]; + var nextargs = Array.prototype.slice.call(arguments, 1); + cb(err, nextargs); + }])) + }, + function (err, results) { + callback.apply(that, [err].concat(results)); + }); + }; + }; + + var _applyEach = function (eachfn, fns /*args...*/) { + var go = function () { + var that = this; + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + return eachfn(fns, function (fn, cb) { + fn.apply(that, args.concat([cb])); + }, + callback); + }; + if (arguments.length > 2) { + var args = Array.prototype.slice.call(arguments, 2); + return go.apply(this, args); + } + else { + return go; + } + }; + async.applyEach = doParallel(_applyEach); + async.applyEachSeries = doSeries(_applyEach); + + async.forever = function (fn, callback) { + function next(err) { + if (err) { + if (callback) { + return callback(err); + } + throw err; + } + fn(next); + } + next(); + }; + + // AMD / RequireJS + if (typeof define !== 'undefined' && define.amd) { + define([], function () { + return async; + }); + } + // Node.js + else if (typeof module !== 'undefined' && module.exports) { + module.exports = async; + } + // included directly via + + + + + + + diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/testinit.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/testinit.js new file mode 100644 index 0000000..1c49c7a --- /dev/null +++ b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/testinit.js @@ -0,0 +1,136 @@ +var fireNative, + jQuery = this.jQuery || "jQuery", // For testing .noConflict() + $ = this.$ || "$", + originaljQuery = jQuery, + original$ = $; + +(function() { + // Config parameter to force basic code paths + QUnit.config.urlConfig.push({ + id: "basic", + label: "Bypass optimizations", + tooltip: "Force use of the most basic code by disabling native querySelectorAll; contains; compareDocumentPosition" + }); + if ( QUnit.urlParams.basic ) { + document.querySelectorAll = null; + document.documentElement.contains = null; + document.documentElement.compareDocumentPosition = null; + // Return array of length two to pass assertion + // But support should be false as its not native + document.getElementsByClassName = function() { return [ 0, 1 ]; }; + } +})(); + +/** + * Returns an array of elements with the given IDs + * @example q("main", "foo", "bar") + * @result [
    , , ] + */ +function q() { + var r = [], + i = 0; + + for ( ; i < arguments.length; i++ ) { + r.push( document.getElementById( arguments[i] ) ); + } + return r; +} + +/** + * Asserts that a select matches the given IDs + * @param {String} a - Assertion name + * @param {String} b - Sizzle selector + * @param {String} c - Array of ids to construct what is expected + * @example t("Check for something", "//[a]", ["foo", "baar"]); + * @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar' + */ +function t( a, b, c ) { + var f = Sizzle(b), + s = "", + i = 0; + + for ( ; i < f.length; i++ ) { + s += ( s && "," ) + '"' + f[ i ].id + '"'; + } + + deepEqual(f, q.apply( q, c ), a + " (" + b + ")"); +} + +/** + * Add random number to url to stop caching + * + * @example url("data/test.html") + * @result "data/test.html?10538358428943" + * + * @example url("data/test.php?foo=bar") + * @result "data/test.php?foo=bar&10538358345554" + */ +function url( value ) { + return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000); +} + +var createWithFriesXML = function() { + var string = ' \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + 1 \ + \ + \ + \ + \ + foo \ + \ + \ + \ + \ + \ + \ + '; + + return jQuery.parseXML( string ); +}; + +fireNative = document.createEvent ? + function( node, type ) { + var event = document.createEvent("HTMLEvents"); + event.initEvent( type, true, true ); + node.dispatchEvent( event ); + } : + function( node, type ) { + var event = document.createEventObject(); + node.fireEvent( "on" + type, event ); + }; + +function testIframeWithCallback( title, fileName, func ) { + test( title, function() { + var iframe; + + stop(); + window.iframeCallback = function() { + var self = this, + args = arguments; + setTimeout(function() { + window.iframeCallback = undefined; + iframe.remove(); + func.apply( self, args ); + func = function() {}; + start(); + }, 0 ); + }; + iframe = jQuery( "
    " ).css({ position: "absolute", width: "500px", left: "-600px" }) + .append( jQuery( " +
    + + +
    +
    + +
    + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
      +
    1. Rice
    2. +
    3. Beans
    4. +
    5. Blinis
    6. +
    7. Tofu
    8. +
    + +
    I'm hungry. I should...
    + ...Eat lots of food... | + ...Eat a little food... | + ...Eat no food... + ...Eat a burger... + ...Eat some funyuns... + ...Eat some funyuns... +
    + +
    + + +
    + +
    + 1 + 2 + + + + + + + + +
    ​ +
    + +
    + + diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/jquery.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/jquery.js new file mode 100644 index 0000000..86a3305 --- /dev/null +++ b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/jquery.js @@ -0,0 +1,9597 @@ +/*! + * jQuery JavaScript Library v1.9.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-2-4 + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<9 + // For `typeof node.method` instead of `node.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + location = window.location, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.9.1", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, all, a, + input, select, fragment, + opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
    a"; + + // Support tests won't run in some limited or non-browser environments + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + if ( !all || !a || !all.length ) { + return {}; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + support = { + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: div.firstChild.nodeType === 3, + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: a.getAttribute("href") === "/a", + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + checkOn: !!input.value, + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Tests for enctype support on a form (#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: document.compatMode === "CSS1Compat", + + // Will be defined later + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
    "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})(); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var i, l, thisCache, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + // Try to fetch any internally stored data first + return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + } + + this.each(function() { + jQuery.data( this, key, value ); + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + hooks.cur = fn; + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, notxml, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + // In IE9+, Flash objects don't have .getAttribute (#12945) + // Support: IE9+ + if ( typeof elem.getAttribute !== core_strundefined ) { + ret = elem.getAttribute( name ); + } + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( rboolean.test( name ) ) { + // Set corresponding property to false for boolean attributes + // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8 + if ( !getSetAttribute && ruseDefault.test( name ) ) { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } else { + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + var + // Use .prop to determine if this attribute is understood as boolean + prop = jQuery.prop( elem, name ), + + // Fetch it accordingly + attr = typeof prop === "boolean" && elem.getAttribute( name ), + detail = typeof prop === "boolean" ? + + getSetInput && getSetAttribute ? + attr != null : + // oldIE fabricates an empty string for missing boolean attributes + // and conflates checked/selected into attroperties + ruseDefault.test( name ) ? + elem[ jQuery.camelCase( "default-" + name ) ] : + !!attr : + + // fetch an attribute node for properties not recognized as boolean + elem.getAttributeNode( name ); + + return detail && detail.value !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; + +// fix oldIE value attroperty +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return jQuery.nodeName( elem, "input" ) ? + + // Ignore the value *property* by using defaultValue + elem.defaultValue : + + ret && ret.specified ? ret.value : undefined; + }, + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret == null ? undefined : ret; + } + }); + }); + + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + event.isTrigger = true; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur != this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + } + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== document.activeElement && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === document.activeElement && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var i, + cachedruns, + Expr, + getText, + isXML, + compile, + hasDuplicate, + outermostContext, + + // Local document vars + setDocument, + document, + docElem, + documentIsXML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + sortOrder, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + support = {}, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Array methods + arr = [], + pop = arr.pop, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rsibling = /[\x20\t\r\n\f]*[+~]/, + + rnative = /^[^{]+\{\s*\[native code/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, + funescape = function( _, escaped ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + return high !== high ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Use a stripped-down slice if we can't use a native one +try { + slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, + results = []; + while ( (elem = this[i++]) ) { + results.push( elem ); + } + return results; + }; +} + +/** + * For feature detection + * @param {Function} fn The function to test for native support + */ +function isNative( fn ) { + return rnative.test( fn + "" ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var cache, + keys = []; + + return (cache = function( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + }); +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( !documentIsXML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + + // QSA path + if ( support.qsa && !rbuggyQSA.test(selector) ) { + old = true; + nid = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, slice.call( newContext.querySelectorAll( + newSelector + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsXML = isXML( doc ); + + // Check if getElementsByTagName("*") returns only elements + support.tagNameNoComments = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if attributes should be retrieved by attribute nodes + support.attributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }); + + // Check if getElementsByClassName can be trusted + support.getByClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }); + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + support.getByName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
    "; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = doc.getElementsByName && + // buggy browsers will return fewer than the correct 2 + doc.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + doc.getElementsByName( expando + 0 ).length; + support.getIdNotName = !doc.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + + // IE6/7 return modified attributes + Expr.attrHandle = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }) ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }; + + // ID find and filter + if ( support.getIdNotName ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.tagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Name + Expr.find["NAME"] = support.getByName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }; + + // Class + Expr.find["CLASS"] = support.getByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { + return context.getElementsByClassName( className ); + } + }; + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21), + // no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ]; + + if ( (support.qsa = isNative(doc.querySelectorAll)) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE8 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = ""; + if ( div.querySelectorAll("[i^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = new RegExp( rbuggyMatches.join("|") ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + var compare; + + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) { + if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) { + if ( a === doc || contains( preferredDoc, a ) ) { + return -1; + } + if ( b === doc || contains( preferredDoc, b ) ) { + return 1; + } + return 0; + } + return compare & 4 ? -1 : 1; + } + + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + // Always assume the presence of duplicates if sort doesn't + // pass them to our comparison function (as in Google Chrome). + hasDuplicate = false; + [0, 0].sort( sortOrder ); + support.detectDuplicates = hasDuplicate; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyQSA always contains :focus, so no need for an existence check + if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + var val; + + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( !documentIsXML ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( documentIsXML || support.attributes ) { + return elem.getAttribute( name ); + } + return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? + name : + val && val.specified ? val.value : null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + i = 1, + j = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +// Returns a function to use in pseudos for input types +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +// Returns a function to use in pseudos for buttons +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +// Returns a function to use in pseudos for positionals +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[4] ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + + nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifider + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsXML ? + elem.getAttribute("xml:lang") || elem.getAttribute("lang") : + elem.lang) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push( { + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !documentIsXML && + Expr.relative[ tokens[1].type ] ) { + + context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, slice.call( seed, 0 ) ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + documentIsXML, + results, + rsibling.test( selector ) + ); + return results; +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Easy API for creating new setFilters +function setFilters() {} +Expr.filters = setFilters.prototype = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Initialize with the default document +setDocument(); + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, ret, self, + len = this.length; + + if ( typeof selector !== "string" ) { + self = this; + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + ret = []; + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, this[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = ( this.selector ? this.selector + " " : "" ) + selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true) ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
    ", "
    " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + col: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
    ", "
    " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + var isFunc = jQuery.isFunction( value ); + + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( !isFunc && typeof value !== "string" ) { + value = jQuery( value ).not( this ).detach(); + } + + return this.domManip( [ value ], true, function( elem ) { + var next = this.nextSibling, + parent = this.parentNode; + + if ( parent ) { + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + }); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, table ? self.html() : undefined ); + } + self.domManip( args, table, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + node, + i + ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery.ajax({ + url: node.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + var attr = elem.getAttributeNode("type"); + elem.type = ( attr && attr.specified ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
    " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + var bool = typeof state === "boolean"; + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("