diff --git a/Gruntfile.js b/Gruntfile.js index 2d13f0d87b5..7412970b956 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -25,7 +25,6 @@ module.exports = function(grunt) { var path = require('path'), - fs = require('fs'), tasks = {}, cwd = process.env.PWD || process.cwd(); @@ -43,27 +42,39 @@ module.exports = function(grunt) { var inAMD = path.basename(cwd) == 'amd'; + // Globbing pattern for matching all AMD JS source files. + var amdSrc = [inAMD ? cwd + '/src/*.js' : '**/amd/src/*.js']; + + /** + * Function to generate the destination for the uglify task + * (e.g. build/file.min.js). This function will be passed to + * the rename property of files array when building dynamically: + * http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically + * + * @param {String} destPath the current destination + * @param {String} srcPath the matched src path + * @return {String} The rewritten destination path. + */ + var uglify_rename = function (destPath, srcPath) { + destPath = srcPath.replace('src', 'build'); + destPath = destPath.replace('.js', '.min.js'); + destPath = path.resolve(cwd, destPath); + return destPath; + }; + // Project configuration. grunt.initConfig({ jshint: { options: {jshintrc: '.jshintrc'}, - files: [inAMD ? cwd + '/src/*.js' : '**/amd/src/*.js'] + amd: { src: amdSrc } }, uglify: { - dynamic_mappings: { - files: grunt.file.expandMapping( - ['**/src/*.js', '!**/node_modules/**'], - '', - { - cwd: cwd, - rename: function(destBase, destPath) { - destPath = destPath.replace('src', 'build'); - destPath = destPath.replace('.js', '.min.js'); - destPath = path.resolve(cwd, destPath); - return destPath; - } - } - ) + amd: { + files: [{ + expand: true, + src: amdSrc, + rename: uglify_rename + }] } }, less: { @@ -76,54 +87,79 @@ module.exports = function(grunt) { compress: true } } + }, + watch: { + options: { + nospawn: true // We need not to spawn so config can be changed dynamically. + }, + amd: { + files: ['**/amd/src/**/*.js'], + tasks: ['amd'] + }, + bootstrapbase: { + files: ["theme/bootstrapbase/less/**/*.less"], + tasks: ["less:bootstrapbase"] + }, + yui: { + files: ['**/yui/src/**/*.js'], + tasks: ['shifter'] + }, + }, + shifter: { + options: { + recursive: true, + paths: [cwd] + } } }); + /** + * Shifter task. Is configured with a path to a specific file or a directory, + * in the case of a specific file it will work out the right module to be built. + * + * Note that this task runs the invidiaul shifter jobs async (becase it spawns + * so be careful to to call done(). + */ tasks.shifter = function() { - var exec = require('child_process').spawn, + var async = require('async'), done = this.async(), - args = [], - options = { - recursive: true, - watch: false, - walk: false, - module: false - }, - shifter; + options = grunt.config('shifter.options'); + // Run the shifter processes one at a time to avoid confusing output. + async.eachSeries(options.paths, function (src, filedone) { + var args = []; args.push( path.normalize(__dirname + '/node_modules/shifter/bin/shifter')); - // Determine the most appropriate options to run with based upon the current location. - if (path.basename(cwd) === 'src') { - // Detect whether we're in a src directory. - grunt.log.debug('In a src directory'); - args.push('--walk'); - options.walk = true; - } else if (path.basename(path.dirname(cwd)) === 'src') { - // Detect whether we're in a module directory. - grunt.log.debug('In a module directory'); - options.module = true; - } - - if (grunt.option('watch')) { - if (!options.walk && !options.module) { - grunt.fail.fatal('Unable to watch unless in a src or module directory'); - } - - // It is not advisable to run with recursivity and watch - this - // leads to building the build directory in a race-like fashion. - grunt.log.debug('Detected a watch - disabling recursivity'); - options.recursive = false; - args.push('--watch'); - } - - if (options.recursive) { - args.push('--recursive'); - } - // Always ignore the node_modules directory. args.push('--excludes', 'node_modules'); + // Determine the most appropriate options to run with based upon the current location. + if (grunt.file.isMatch('**/yui/**/*.js', src)) { + // When passed a JS file, build our containing module (this happen with + // watch). + grunt.log.debug('Shifter passed a specific JS file'); + src = path.dirname(path.dirname(src)); + options.recursive = false; + } else if (grunt.file.isMatch('**/yui/src', src)) { + // When in a src directory --walk all modules. + grunt.log.debug('In a src directory'); + args.push('--walk'); + options.recursive = false; + } else if (grunt.file.isMatch('**/yui/src/*', src)) { + // When in module, only build our module. + grunt.log.debug('In a module directory'); + options.recursive = false; + } else if (grunt.file.isMatch('**/yui/src/*/js', src)) { + // When in module src, only build our module. + grunt.log.debug('In a source directory'); + src = path.dirname(src); + options.recursive = false; + } + + if (grunt.option('watch')) { + grunt.fail.fatal('The --watch option has been removed, please use `grunt watch` instead'); + } + // Add the stderr option if appropriate if (grunt.option('verbose')) { args.push('--lint-stderr'); @@ -135,19 +171,17 @@ module.exports = function(grunt) { var execShifter = function() { - shifter = exec("node", args, { - cwd: cwd, - stdio: 'inherit', - env: process.env - }); - - // Tidy up after exec. - shifter.on('exit', function (code) { + grunt.log.ok("Running shifter on " + src); + grunt.util.spawn({ + cmd: "node", + args: args, + opts: {cwd: src, stdio: 'inherit', env: process.env} + }, function (error, result, code) { if (code) { grunt.fail.fatal('Shifter failed with code: ' + code); } else { grunt.log.ok('Shifter build complete.'); - done(); + filedone(); } }); }; @@ -157,79 +191,15 @@ module.exports = function(grunt) { execShifter(); } else { // Check that there are yui modules otherwise shifter ends with exit code 1. - var found = false; - var hasYuiModules = function(directory, callback) { - fs.readdir(directory, function(err, files) { - if (err) { - return callback(err, null); - } - - // If we already found a match there is no need to continue scanning. - if (found === true) { - return; - } - - // We need to track the number of files to know when we return a result. - var pending = files.length; - - // We first check files, so if there is a match we don't need further - // async calls and we just return a true. - for (var i = 0; i < files.length; i++) { - if (files[i] === 'yui') { - return callback(null, true); - } - } - - // Iterate through subdirs if there were no matches. - files.forEach(function (file) { - - var p = path.join(directory, file); - stat = fs.statSync(p); - if (!stat.isDirectory()) { - pending--; - } else { - - // We defer the pending-1 until we scan the whole dir and subdirs. - hasYuiModules(p, function(err, result) { - if (err) { - return callback(err); - } - - if (result === true) { - // Once we get a true we notify the caller. - found = true; - return callback(null, true); - } - - pending--; - if (pending === 0) { - // Notify the caller that the whole dir has been scaned and there are no matches. - return callback(null, false); - } - }); - } - - // No subdirs here, otherwise the return would be deferred until all subdirs are scanned. - if (pending === 0) { - return callback(null, false); - } - }); - }); - }; - - hasYuiModules(cwd, function(err, result) { - if (err) { - grunt.fail.fatal(err.message); - } - - if (result === true) { - execShifter(); - } else { - grunt.log.ok('No YUI modules to build.'); - done(); - } - }); + if (grunt.file.expand({cwd: src}, '**/yui/src/**/*.js').length > 0) { + args.push('--recursive'); + execShifter(); + } else { + grunt.log.ok('No YUI modules to build.'); + filedone(); + } } + }, done); }; tasks.startup = function() { @@ -246,11 +216,28 @@ module.exports = function(grunt) { } }; + // On watch, we dynamically modify config to build only affected files. This + // method is slightly complicated to deal with multiple changed files at once (copied + // from the grunt-contrib-watch readme). + var changedFiles = Object.create(null); + var onChange = grunt.util._.debounce(function() { + var files = Object.keys(changedFiles); + grunt.config('jshint.amd.src', files); + grunt.config('uglify.amd.files', [{ expand: true, src: files, rename: uglify_rename }]); + grunt.config('shifter.options.paths', files); + changedFiles = Object.create(null); + }, 200); + + grunt.event.on('watch', function(action, filepath) { + changedFiles[filepath] = action; + onChange(); + }); // Register NPM tasks. grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-watch'); // Register JS tasks. grunt.registerTask('shifter', 'Run Shifter against the current directory', tasks.shifter); diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 39eb9879cda..81f6b8b4d1a 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,53 @@ { "name": "Moodle", "dependencies": { + "abbrev": { + "version": "1.0.7", + "from": "abbrev@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + }, + "async": { + "version": "1.5.2", + "from": "async@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + }, + "debug": { + "version": "0.7.4", + "from": "debug@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + }, + "faye-websocket": { + "version": "0.4.4", + "from": "faye-websocket@>=0.4.3 <0.5.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz" + }, + "gaze": { + "version": "0.5.2", + "from": "gaze@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz" + }, + "glob": { + "version": "3.1.21", + "from": "glob@>=3.1.21 <3.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz" + }, + "globule": { + "version": "0.1.0", + "from": "globule@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "dependencies": { + "lodash": { + "version": "1.0.2", + "from": "lodash@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz" + } + } + }, + "graceful-fs": { + "version": "1.2.3", + "from": "graceful-fs@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + }, "grunt": { "version": "0.4.5", "from": "grunt@0.4.5", @@ -31,6 +78,11 @@ "from": "eventemitter2@>=0.4.13 <0.5.0", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" }, + "exit": { + "version": "0.1.2", + "from": "exit@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + }, "findup-sync": { "version": "0.1.3", "from": "findup-sync@>=0.1.2 <0.2.0", @@ -72,6 +124,11 @@ } } }, + "getobject": { + "version": "0.1.0", + "from": "getobject@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" + }, "glob": { "version": "3.1.21", "from": "glob@>=3.1.21 <3.2.0", @@ -89,6 +146,33 @@ } } }, + "grunt-legacy-log": { + "version": "0.1.2", + "from": "grunt-legacy-log@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.2.tgz", + "dependencies": { + "grunt-legacy-log-utils": { + "version": "0.1.1", + "from": "grunt-legacy-log-utils@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" + }, + "lodash": { + "version": "2.4.2", + "from": "lodash@>=2.4.1 <2.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + }, + "underscore.string": { + "version": "2.3.3", + "from": "underscore.string@>=2.3.3 <2.4.0", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" + } + } + }, + "grunt-legacy-util": { + "version": "0.2.0", + "from": "grunt-legacy-util@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" + }, "hooker": { "version": "0.2.3", "from": "hooker@>=0.2.3 <0.3.0", @@ -99,6 +183,40 @@ "from": "iconv-lite@>=0.2.11 <0.3.0", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" }, + "js-yaml": { + "version": "2.0.5", + "from": "js-yaml@>=2.0.5 <2.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "dependencies": { + "argparse": { + "version": "0.1.16", + "from": "argparse@>=0.1.11 <0.2.0", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "dependencies": { + "underscore": { + "version": "1.7.0", + "from": "underscore@>=1.7.0 <1.8.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + }, + "underscore.string": { + "version": "2.4.0", + "from": "underscore.string@>=2.4.0 <2.5.0", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" + } + } + }, + "esprima": { + "version": "1.0.4", + "from": "esprima@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + } + } + }, + "lodash": { + "version": "0.9.2", + "from": "lodash@>=0.9.2 <0.10.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" + }, "minimatch": { "version": "0.2.14", "from": "minimatch@>=0.2.12 <0.3.0", @@ -133,11 +251,6 @@ "from": "rimraf@>=2.2.8 <2.3.0", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" }, - "lodash": { - "version": "0.9.2", - "from": "lodash@>=0.9.2 <0.10.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" - }, "underscore.string": { "version": "2.2.1", "from": "underscore.string@>=2.2.1 <2.3.0", @@ -147,72 +260,6 @@ "version": "1.0.9", "from": "which@>=1.0.5 <1.1.0", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" - }, - "js-yaml": { - "version": "2.0.5", - "from": "js-yaml@>=2.0.5 <2.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "dependencies": { - "argparse": { - "version": "0.1.16", - "from": "argparse@>=0.1.11 <0.2.0", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "dependencies": { - "underscore": { - "version": "1.7.0", - "from": "underscore@>=1.7.0 <1.8.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" - }, - "underscore.string": { - "version": "2.4.0", - "from": "underscore.string@>=2.4.0 <2.5.0", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" - } - } - }, - "esprima": { - "version": "1.0.4", - "from": "esprima@>=1.0.2 <1.1.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" - } - } - }, - "exit": { - "version": "0.1.2", - "from": "exit@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "getobject": { - "version": "0.1.0", - "from": "getobject@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" - }, - "grunt-legacy-util": { - "version": "0.2.0", - "from": "grunt-legacy-util@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" - }, - "grunt-legacy-log": { - "version": "0.1.2", - "from": "grunt-legacy-log@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.2.tgz", - "dependencies": { - "grunt-legacy-log-utils": { - "version": "0.1.1", - "from": "grunt-legacy-log-utils@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" - }, - "lodash": { - "version": "2.4.2", - "from": "lodash@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - }, - "underscore.string": { - "version": "2.3.3", - "from": "underscore.string@>=2.3.3 <2.4.0", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" - } - } } } }, @@ -289,6 +336,11 @@ "from": "htmlparser2@>=3.8.0 <3.9.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", "dependencies": { + "domelementtype": { + "version": "1.3.0", + "from": "domelementtype@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + }, "domhandler": { "version": "2.3.0", "from": "domhandler@>=2.3.0 <2.4.0", @@ -318,10 +370,10 @@ } } }, - "domelementtype": { - "version": "1.3.0", - "from": "domelementtype@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + "entities": { + "version": "1.0.0", + "from": "entities@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" }, "readable-stream": { "version": "1.1.13", @@ -333,6 +385,11 @@ "from": "core-util-is@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, "isarray": { "version": "0.0.1", "from": "isarray@0.0.1", @@ -342,21 +399,16 @@ "version": "0.10.31", "from": "string_decoder@>=0.10.0 <0.11.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } - }, - "entities": { - "version": "1.0.0", - "from": "entities@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" } } }, + "lodash": { + "version": "3.7.0", + "from": "lodash@>=3.7.0 <3.8.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz" + }, "minimatch": { "version": "2.0.10", "from": "minimatch@>=2.0.0 <2.1.0", @@ -390,11 +442,6 @@ "version": "1.0.4", "from": "strip-json-comments@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - }, - "lodash": { - "version": "3.7.0", - "from": "lodash@>=3.7.0 <3.8.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz" } } } @@ -517,6 +564,11 @@ "from": "request@>=2.51.0 <3.0.0", "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz", "dependencies": { + "aws-sign2": { + "version": "0.6.0", + "from": "aws-sign2@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + }, "bl": { "version": "1.0.0", "from": "bl@>=1.0.0 <1.1.0", @@ -566,6 +618,18 @@ "from": "caseless@>=0.11.0 <0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" }, + "combined-stream": { + "version": "1.0.5", + "from": "combined-stream@>=1.0.5 <1.1.0", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "from": "delayed-stream@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + } + }, "extend": { "version": "3.0.0", "from": "extend@>=3.0.0 <3.1.0", @@ -588,190 +652,6 @@ } } }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.1 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "2.1.8", - "from": "mime-types@>=2.1.7 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.8.tgz", - "dependencies": { - "mime-db": { - "version": "1.20.0", - "from": "mime-db@>=1.20.0 <1.21.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.20.0.tgz" - } - } - }, - "node-uuid": { - "version": "1.4.7", - "from": "node-uuid@>=1.4.7 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "qs": { - "version": "5.2.0", - "from": "qs@>=5.2.0 <5.3.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz" - }, - "tunnel-agent": { - "version": "0.4.1", - "from": "tunnel-agent@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" - }, - "tough-cookie": { - "version": "2.2.1", - "from": "tough-cookie@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz" - }, - "http-signature": { - "version": "1.1.0", - "from": "http-signature@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.0.tgz", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "jsprim": { - "version": "1.2.2", - "from": "jsprim@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz", - "dependencies": { - "extsprintf": { - "version": "1.0.2", - "from": "extsprintf@1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "json-schema": { - "version": "0.2.2", - "from": "json-schema@0.2.2", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "verror@1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - } - } - }, - "sshpk": { - "version": "1.7.1", - "from": "sshpk@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.1.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "asn1@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "0.2.0", - "from": "assert-plus@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "dashdash": { - "version": "1.10.1", - "from": "dashdash@>=1.10.1 <2.0.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - } - } - }, - "jsbn": { - "version": "0.1.0", - "from": "jsbn@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "tweetnacl": { - "version": "0.13.2", - "from": "tweetnacl@>=0.13.0 <1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.2.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "jodid25519@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "ecc-jsbn@>=0.0.1 <1.0.0", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - } - } - } - } - }, - "oauth-sign": { - "version": "0.8.0", - "from": "oauth-sign@>=0.8.0 <0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" - }, - "hawk": { - "version": "3.1.2", - "from": "hawk@>=3.1.0 <3.2.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.2.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - } - } - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - } - } - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "is-typedarray": { - "version": "1.0.0", - "from": "is-typedarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, "har-validator": { "version": "2.0.3", "from": "har-validator@>=2.0.2 <2.1.0", @@ -836,6 +716,173 @@ } } } + }, + "hawk": { + "version": "3.1.2", + "from": "hawk@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.2.tgz", + "dependencies": { + "boom": { + "version": "2.10.1", + "from": "boom@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + }, + "cryptiles": { + "version": "2.0.5", + "from": "cryptiles@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + }, + "hoek": { + "version": "2.16.3", + "from": "hoek@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "sntp@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + } + }, + "http-signature": { + "version": "1.1.0", + "from": "http-signature@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.0.tgz", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "jsprim": { + "version": "1.2.2", + "from": "jsprim@>=1.2.2 <2.0.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz", + "dependencies": { + "extsprintf": { + "version": "1.0.2", + "from": "extsprintf@1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + }, + "json-schema": { + "version": "0.2.2", + "from": "json-schema@0.2.2", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + }, + "verror": { + "version": "1.3.6", + "from": "verror@1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + } + } + }, + "sshpk": { + "version": "1.7.1", + "from": "sshpk@>=1.7.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.1.tgz", + "dependencies": { + "asn1": { + "version": "0.2.3", + "from": "asn1@>=0.2.3 <0.3.0", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + }, + "assert-plus": { + "version": "0.2.0", + "from": "assert-plus@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + }, + "dashdash": { + "version": "1.10.1", + "from": "dashdash@>=1.10.1 <2.0.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + } + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "from": "ecc-jsbn@>=0.0.1 <1.0.0", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + }, + "jodid25519": { + "version": "1.0.2", + "from": "jodid25519@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + }, + "jsbn": { + "version": "0.1.0", + "from": "jsbn@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + }, + "tweetnacl": { + "version": "0.13.2", + "from": "tweetnacl@>=0.13.0 <1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.2.tgz" + } + } + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "from": "is-typedarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + }, + "isstream": { + "version": "0.1.2", + "from": "isstream@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@>=5.0.1 <5.1.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "2.1.8", + "from": "mime-types@>=2.1.7 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.8.tgz", + "dependencies": { + "mime-db": { + "version": "1.20.0", + "from": "mime-db@>=1.20.0 <1.21.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.20.0.tgz" + } + } + }, + "node-uuid": { + "version": "1.4.7", + "from": "node-uuid@>=1.4.7 <1.5.0", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + }, + "oauth-sign": { + "version": "0.8.0", + "from": "oauth-sign@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" + }, + "qs": { + "version": "5.2.0", + "from": "qs@>=5.2.0 <5.3.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz" + }, + "stringstream": { + "version": "0.0.5", + "from": "stringstream@>=0.0.4 <0.1.0", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + }, + "tough-cookie": { + "version": "2.2.1", + "from": "tough-cookie@>=2.2.0 <2.3.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz" + }, + "tunnel-agent": { + "version": "0.4.1", + "from": "tunnel-agent@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" } } }, @@ -931,6 +978,18 @@ "from": "gzip-size@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", "dependencies": { + "browserify-zlib": { + "version": "0.1.4", + "from": "browserify-zlib@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "dependencies": { + "pako": { + "version": "0.2.8", + "from": "pako@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" + } + } + }, "concat-stream": { "version": "1.5.1", "from": "concat-stream@>=1.4.1 <2.0.0", @@ -941,11 +1000,6 @@ "from": "inherits@>=2.0.1 <2.1.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, - "typedarray": { - "version": "0.0.6", - "from": "typedarray@>=0.0.5 <0.1.0", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - }, "readable-stream": { "version": "2.0.4", "from": "readable-stream@>=2.0.0 <2.1.0", @@ -977,18 +1031,11 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" } } - } - } - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "browserify-zlib@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "dependencies": { - "pako": { - "version": "0.2.8", - "from": "pako@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" + }, + "typedarray": { + "version": "0.0.6", + "from": "typedarray@>=0.0.5 <0.1.0", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" } } } @@ -1429,21 +1476,90 @@ } } }, + "grunt-contrib-watch": { + "version": "0.6.1", + "from": "grunt-contrib-watch@0.6.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "async@>=0.2.9 <0.3.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + } + } + }, + "inherits": { + "version": "1.0.2", + "from": "inherits@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" + }, + "lodash": { + "version": "2.4.2", + "from": "lodash@>=2.4.1 <2.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + }, + "lru-cache": { + "version": "2.7.3", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "minimatch": { + "version": "0.2.14", + "from": "minimatch@>=0.2.11 <0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" + }, + "nopt": { + "version": "2.0.0", + "from": "nopt@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz" + }, + "noptify": { + "version": "0.0.3", + "from": "noptify@>=0.0.3 <0.1.0", + "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz" + }, + "qs": { + "version": "0.5.6", + "from": "qs@>=0.5.2 <0.6.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz" + }, "shifter": { "version": "0.5.0", "from": "shifter@0.5.0", "resolved": "https://registry.npmjs.org/shifter/-/shifter-0.5.0.tgz", "dependencies": { - "progress": { - "version": "0.1.0", - "from": "progress@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-0.1.0.tgz" - }, "ansi-color": { "version": "0.2.1", "from": "ansi-color@*", "resolved": "https://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz" }, + "cpr": { + "version": "0.0.6", + "from": "cpr@>=0.0.6 <0.1.0", + "resolved": "https://registry.npmjs.org/cpr/-/cpr-0.0.6.tgz", + "dependencies": { + "graceful-fs": { + "version": "1.1.14", + "from": "graceful-fs@>=1.1.14 <1.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz" + }, + "mkdirp": { + "version": "0.3.5", + "from": "mkdirp@>=0.3.4 <0.4.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "rimraf": { + "version": "2.0.3", + "from": "rimraf@>=2.0.2 <2.1.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.0.3.tgz" + } + } + }, + "cssproc": { + "version": "0.0.7", + "from": "cssproc@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/cssproc/-/cssproc-0.0.7.tgz" + }, "gear": { "version": "0.8.18", "from": "gear@>=0.8.0 <0.9.0", @@ -1466,163 +1582,10 @@ "from": "gear-lib@>=0.8.0 <0.9.0", "resolved": "https://registry.npmjs.org/gear-lib/-/gear-lib-0.8.15.tgz", "dependencies": { - "jslint": { - "version": "0.3.4", - "from": "jslint@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/jslint/-/jslint-0.3.4.tgz", - "dependencies": { - "nopt": { - "version": "1.0.10", - "from": "nopt@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.7", - "from": "abbrev@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - } - } - } - } - }, - "jshint": { - "version": "2.5.11", - "from": "jshint@>=2.5.0 <2.6.0", - "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.5.11.tgz", - "dependencies": { - "cli": { - "version": "0.6.6", - "from": "cli@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz" - }, - "console-browserify": { - "version": "1.1.0", - "from": "console-browserify@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "dependencies": { - "date-now": { - "version": "0.1.4", - "from": "date-now@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - } - } - }, - "exit": { - "version": "0.1.2", - "from": "exit@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "htmlparser2": { - "version": "3.8.3", - "from": "htmlparser2@>=3.8.0 <3.9.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "dependencies": { - "domhandler": { - "version": "2.3.0", - "from": "domhandler@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz" - }, - "domutils": { - "version": "1.5.1", - "from": "domutils@>=1.5.0 <1.6.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "dependencies": { - "dom-serializer": { - "version": "0.1.0", - "from": "dom-serializer@>=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "from": "domelementtype@>=1.1.1 <1.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz" - }, - "entities": { - "version": "1.1.1", - "from": "entities@>=1.1.1 <1.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" - } - } - } - } - }, - "domelementtype": { - "version": "1.3.0", - "from": "domelementtype@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "entities": { - "version": "1.0.0", - "from": "entities@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" - } - } - }, - "minimatch": { - "version": "1.0.0", - "from": "minimatch@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "shelljs": { - "version": "0.3.0", - "from": "shelljs@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "strip-json-comments@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - }, - "underscore": { - "version": "1.6.0", - "from": "underscore@>=1.6.0 <1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" - } - } - }, - "uglify-js": { - "version": "1.3.5", - "from": "uglify-js@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz" + "async": { + "version": "0.2.10", + "from": "async@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, "csslint": { "version": "0.10.0", @@ -1636,15 +1599,32 @@ } } }, - "less": { - "version": "1.3.3", - "from": "less@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/less/-/less-1.3.3.tgz", + "glob": { + "version": "3.2.11", + "from": "glob@>=3.2.0 <3.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", "dependencies": { - "ycssmin": { - "version": "1.0.1", - "from": "ycssmin@>=1.0.1", - "resolved": "https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz" + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.3.0", + "from": "minimatch@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } } } }, @@ -1686,28 +1666,164 @@ } } }, - "mime": { - "version": "1.2.11", - "from": "mime@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" + "jshint": { + "version": "2.5.11", + "from": "jshint@>=2.5.0 <2.6.0", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.5.11.tgz", + "dependencies": { + "cli": { + "version": "0.6.6", + "from": "cli@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz" + }, + "console-browserify": { + "version": "1.1.0", + "from": "console-browserify@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "dependencies": { + "date-now": { + "version": "0.1.4", + "from": "date-now@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + } + } + }, + "exit": { + "version": "0.1.2", + "from": "exit@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + }, + "htmlparser2": { + "version": "3.8.3", + "from": "htmlparser2@>=3.8.0 <3.9.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "dependencies": { + "domelementtype": { + "version": "1.3.0", + "from": "domelementtype@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + }, + "domhandler": { + "version": "2.3.0", + "from": "domhandler@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz" + }, + "domutils": { + "version": "1.5.1", + "from": "domutils@>=1.5.0 <1.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "dependencies": { + "dom-serializer": { + "version": "0.1.0", + "from": "dom-serializer@>=0.0.0 <1.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "from": "domelementtype@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz" + }, + "entities": { + "version": "1.1.1", + "from": "entities@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" + } + } + } + } + }, + "entities": { + "version": "1.0.0", + "from": "entities@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "from": "readable-stream@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + } + } + } + }, + "minimatch": { + "version": "1.0.0", + "from": "minimatch@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "shelljs": { + "version": "0.3.0", + "from": "shelljs@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz" + }, + "strip-json-comments": { + "version": "1.0.4", + "from": "strip-json-comments@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + }, + "underscore": { + "version": "1.6.0", + "from": "underscore@>=1.6.0 <1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" + } + } + }, + "jslint": { + "version": "0.3.4", + "from": "jslint@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/jslint/-/jslint-0.3.4.tgz", + "dependencies": { + "nopt": { + "version": "1.0.10", + "from": "nopt@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.7", + "from": "abbrev@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + } + } + } + } }, "knox": { "version": "0.8.10", "from": "knox@>=0.8.0 <0.9.0", "resolved": "https://registry.npmjs.org/knox/-/knox-0.8.10.tgz", "dependencies": { - "xml2js": { - "version": "0.2.8", - "from": "xml2js@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz", - "dependencies": { - "sax": { - "version": "0.5.8", - "from": "sax@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz" - } - } - }, "debug": { "version": "0.7.4", "from": "debug@>=0.7.0 <0.8.0", @@ -1728,6 +1844,11 @@ "from": "core-util-is@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, "isarray": { "version": "0.0.1", "from": "isarray@0.0.1", @@ -1737,37 +1858,124 @@ "version": "0.10.31", "from": "string_decoder@>=0.10.0 <0.11.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } } } + }, + "xml2js": { + "version": "0.2.8", + "from": "xml2js@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz", + "dependencies": { + "sax": { + "version": "0.5.8", + "from": "sax@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz" + } + } } } }, + "less": { + "version": "1.3.3", + "from": "less@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/less/-/less-1.3.3.tgz", + "dependencies": { + "ycssmin": { + "version": "1.0.1", + "from": "ycssmin@>=1.0.1", + "resolved": "https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz" + } + } + }, + "mime": { + "version": "1.2.11", + "from": "mime@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" + }, + "uglify-js": { + "version": "1.3.5", + "from": "uglify-js@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz" + } + } + }, + "istanbul": { + "version": "0.1.37", + "from": "istanbul@0.1.37", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.1.37.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.7", + "from": "abbrev@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + }, "async": { "version": "0.2.10", "from": "async@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, - "glob": { - "version": "3.2.11", - "from": "glob@>=3.2.0 <3.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "escodegen": { + "version": "0.0.28", + "from": "escodegen@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.28.tgz", "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "estraverse": { + "version": "1.3.2", + "from": "estraverse@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz" + }, + "source-map": { + "version": "0.5.3", + "from": "source-map@>=0.1.2", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz" + } + } + }, + "esprima": { + "version": "1.0.4", + "from": "esprima@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + }, + "fileset": { + "version": "0.1.8", + "from": "fileset@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.1.8.tgz", + "dependencies": { + "glob": { + "version": "3.2.11", + "from": "glob@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.3.0", + "from": "minimatch@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + } + } }, "minimatch": { - "version": "0.3.0", - "from": "minimatch@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "version": "0.4.0", + "from": "minimatch@>=0.0.0 <1.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.4.0.tgz", "dependencies": { "lru-cache": { "version": "2.7.3", @@ -1782,36 +1990,65 @@ } } } + }, + "handlebars": { + "version": "1.0.12", + "from": "handlebars@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.0.12.tgz", + "dependencies": { + "optimist": { + "version": "0.3.7", + "from": "optimist@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz" + }, + "uglify-js": { + "version": "2.3.6", + "from": "uglify-js@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", + "dependencies": { + "source-map": { + "version": "0.1.43", + "from": "source-map@>=0.1.7 <0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + } + } + } + } + }, + "mkdirp": { + "version": "0.3.5", + "from": "mkdirp@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "nopt": { + "version": "2.1.2", + "from": "nopt@>=2.1.0 <2.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz" + }, + "resolve": { + "version": "0.4.3", + "from": "resolve@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.4.3.tgz" + }, + "which": { + "version": "1.0.9", + "from": "which@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" + }, + "wordwrap": { + "version": "0.0.3", + "from": "wordwrap@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" } } }, - "nopt": { - "version": "3.0.6", - "from": "nopt@*", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.7", - "from": "abbrev@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - } - } - }, - "yuitest-coverage": { - "version": "0.0.6", - "from": "yuitest-coverage@>=0.0.5", - "resolved": "https://registry.npmjs.org/yuitest-coverage/-/yuitest-coverage-0.0.6.tgz" - }, - "yuicompressor": { - "version": "2.4.7", - "from": "yuicompressor@2.4.7", - "resolved": "https://registry.npmjs.org/yuicompressor/-/yuicompressor-2.4.7.tgz" - }, - "yui-lint": { - "version": "0.2.0", - "from": "yui-lint@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/yui-lint/-/yui-lint-0.2.0.tgz" - }, "jshint": { "version": "0.9.1", "from": "jshint@>=0.9.0 <0.10.0", @@ -1903,33 +2140,6 @@ } } }, - "watch": { - "version": "0.8.0", - "from": "watch@>=0.8.0 <0.9.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.8.0.tgz" - }, - "cpr": { - "version": "0.0.6", - "from": "cpr@>=0.0.6 <0.1.0", - "resolved": "https://registry.npmjs.org/cpr/-/cpr-0.0.6.tgz", - "dependencies": { - "graceful-fs": { - "version": "1.1.14", - "from": "graceful-fs@>=1.1.14 <1.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz" - }, - "rimraf": { - "version": "2.0.3", - "from": "rimraf@>=2.0.2 <2.1.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.0.3.tgz" - }, - "mkdirp": { - "version": "0.3.5", - "from": "mkdirp@>=0.3.4 <0.4.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - } - } - }, "mkdirp": { "version": "0.5.1", "from": "mkdirp@*", @@ -1942,6 +2152,23 @@ } } }, + "nopt": { + "version": "3.0.6", + "from": "nopt@*", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.7", + "from": "abbrev@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + } + } + }, + "progress": { + "version": "0.1.0", + "from": "progress@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-0.1.0.tgz" + }, "rimraf": { "version": "2.4.4", "from": "rimraf@*", @@ -2014,153 +2241,20 @@ } } }, - "istanbul": { - "version": "0.1.37", - "from": "istanbul@0.1.37", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.1.37.tgz", - "dependencies": { - "esprima": { - "version": "1.0.4", - "from": "esprima@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" - }, - "escodegen": { - "version": "0.0.28", - "from": "escodegen@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.28.tgz", - "dependencies": { - "estraverse": { - "version": "1.3.2", - "from": "estraverse@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz" - }, - "source-map": { - "version": "0.5.3", - "from": "source-map@>=0.1.2", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz" - } - } - }, - "handlebars": { - "version": "1.0.12", - "from": "handlebars@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.0.12.tgz", - "dependencies": { - "optimist": { - "version": "0.3.7", - "from": "optimist@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz" - }, - "uglify-js": { - "version": "2.3.6", - "from": "uglify-js@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", - "dependencies": { - "source-map": { - "version": "0.1.43", - "from": "source-map@>=0.1.7 <0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "mkdirp@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "nopt": { - "version": "2.1.2", - "from": "nopt@>=2.1.0 <2.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz" - }, - "fileset": { - "version": "0.1.8", - "from": "fileset@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.1.8.tgz", - "dependencies": { - "minimatch": { - "version": "0.4.0", - "from": "minimatch@>=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.4.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "glob": { - "version": "3.2.11", - "from": "glob@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "0.3.0", - "from": "minimatch@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - } - } - }, - "which": { - "version": "1.0.9", - "from": "which@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" - }, - "async": { - "version": "0.2.10", - "from": "async@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "abbrev": { - "version": "1.0.7", - "from": "abbrev@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - }, - "wordwrap": { - "version": "0.0.3", - "from": "wordwrap@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "resolve": { - "version": "0.4.3", - "from": "resolve@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.4.3.tgz" - } - } + "timethat": { + "version": "0.0.3", + "from": "timethat@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/timethat/-/timethat-0.0.3.tgz" + }, + "walkdir": { + "version": "0.0.11", + "from": "walkdir@>=0.0.5 <0.1.0", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz" + }, + "watch": { + "version": "0.8.0", + "from": "watch@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.8.0.tgz" }, "which": { "version": "1.2.0", @@ -2186,16 +2280,6 @@ "from": "yuglify@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz", "dependencies": { - "uglify-js": { - "version": "1.3.5", - "from": "uglify-js@>=1.3.4 <1.4.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz" - }, - "ycssmin": { - "version": "1.0.1", - "from": "ycssmin@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz" - }, "nopt": { "version": "2.1.2", "from": "nopt@>=2.1.1 <2.2.0", @@ -2207,25 +2291,45 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" } } + }, + "uglify-js": { + "version": "1.3.5", + "from": "uglify-js@>=1.3.4 <1.4.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz" + }, + "ycssmin": { + "version": "1.0.1", + "from": "ycssmin@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz" } } }, - "timethat": { - "version": "0.0.3", - "from": "timethat@>=0.0.1 <0.1.0", - "resolved": "https://registry.npmjs.org/timethat/-/timethat-0.0.3.tgz" + "yui-lint": { + "version": "0.2.0", + "from": "yui-lint@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/yui-lint/-/yui-lint-0.2.0.tgz" }, - "cssproc": { - "version": "0.0.7", - "from": "cssproc@>=0.0.1 <0.1.0", - "resolved": "https://registry.npmjs.org/cssproc/-/cssproc-0.0.7.tgz" + "yuicompressor": { + "version": "2.4.7", + "from": "yuicompressor@2.4.7", + "resolved": "https://registry.npmjs.org/yuicompressor/-/yuicompressor-2.4.7.tgz" }, - "walkdir": { - "version": "0.0.11", - "from": "walkdir@>=0.0.5 <0.1.0", - "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz" + "yuitest-coverage": { + "version": "0.0.6", + "from": "yuitest-coverage@>=0.0.5", + "resolved": "https://registry.npmjs.org/yuitest-coverage/-/yuitest-coverage-0.0.6.tgz" } } + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + }, + "tiny-lr-fork": { + "version": "0.0.5", + "from": "tiny-lr-fork@0.0.5", + "resolved": "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz" } } } diff --git a/package.json b/package.json index 2ed67b50285..6c3be763452 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,12 @@ "private": true, "description": "Moodle", "devDependencies": { + "async": "^1.5.2", "grunt": "0.4.5", "grunt-contrib-jshint": "0.11.3", "grunt-contrib-less": "1.1.0", "grunt-contrib-uglify": "0.11.0", + "grunt-contrib-watch": "0.6.1", "shifter": "0.5.0" } }