aboutsummaryrefslogtreecommitdiff
path: root/test-infra
diff options
context:
space:
mode:
authorAlexandr Kondrashov <[email protected]>2015-09-11 16:43:00 +0300
committerAlexandr Kondrashov <[email protected]>2015-09-11 16:43:00 +0300
commitc9725926b2f30bed4e37f57c20ef8ffeb2fd233b (patch)
tree2964ad7556549dd3e0712bdfdbc5fc4ae7a9b45f /test-infra
parent353e0a49a97c24d89f6cdb95014419d4137dee6e (diff)
parentb811f8cf9628dbcbfe994f71588c5a0c921a092d (diff)
downloadbootstrap-c9725926b2f30bed4e37f57c20ef8ffeb2fd233b.tar.xz
bootstrap-c9725926b2f30bed4e37f57c20ef8ffeb2fd233b.zip
Merge remote-tracking branch 'twbs/v4-dev' into patch-1
Conflicts: scss/_custom-forms.scss scss/_variables.scss
Diffstat (limited to 'test-infra')
-rw-r--r--test-infra/README.md118
-rw-r--r--test-infra/S3Cachefile.json12
-rw-r--r--test-infra/gemfiles/core.gemfile7
-rw-r--r--test-infra/gemfiles/core.gemfile.lock15
-rw-r--r--test-infra/npm-shrinkwrap.json1634
-rw-r--r--test-infra/requirements.txt1
-rwxr-xr-xtest-infra/s3_cache.py184
-rwxr-xr-xtest-infra/uncached-npm-install.sh15
8 files changed, 528 insertions, 1458 deletions
diff --git a/test-infra/README.md b/test-infra/README.md
deleted file mode 100644
index ce7d74b65..000000000
--- a/test-infra/README.md
+++ /dev/null
@@ -1,118 +0,0 @@
-## What does `s3_cache.py` do?
-
-### In general
-`s3_cache.py` maintains a cache, stored in an Amazon S3 (Simple Storage Service) bucket, of a given directory whose contents are considered non-critical and are completely & solely determined by (and should be able to be regenerated from) a single given file.
-
-The SHA-256 hash of the single file is used as the key for the cache. The directory is stored as a gzipped tarball.
-
-All the tarballs are stored in S3's Reduced Redundancy Storage (RRS) storage class, since this is cheaper and the data is non-critical.
-
-`s3_cache.py` itself never deletes cache entries; deletion should either be done manually or using automatic S3 lifecycle rules on the bucket.
-
-Similar to git, `s3_cache.py` makes the assumption that [SHA-256 will effectively never have a collision](https://stackoverflow.com/questions/4014090/is-it-safe-to-ignore-the-possibility-of-sha-collisions-in-practice).
-
-
-### For Bootstrap specifically
-`s3_cache.py` is used to cache the npm packages that our Grunt tasks depend on and the RubyGems that Jekyll depends on. (Jekyll is needed to compile our docs to HTML so that we can run them thru an HTML5 validator.)
-
-For npm, the `node_modules` directory is cached based on our `npm-shrinkwrap.json` file.
-
-For RubyGems, the `gemdir` of the current RVM-selected Ruby is cached based on the `pseudo_Gemfile.lock` file generated by our Travis build script.
-`pseudo_Gemfile.lock` contains the versions of Ruby and Jekyll that we're using (read our `.travis.yml` for details).
-
-
-## Why is `s3_cache.py` necessary?
-`s3_cache.py` is used to speed up Bootstrap's Travis builds. Installing npm packages and RubyGems used to take up a significant fraction of our total build times. Also, at the time that `s3_cache.py` was written, npm was occasionally unreliable.
-
-Travis does offer built-in caching on their paid plans, but this do-it-ourselves S3 solution is significantly cheaper since we only need caching and not Travis' other paid features.
-
-
-## Configuration
-`s3_cache.py` is configured via `S3Cachefile.json`, which has the following format:
-```json
-{
- "cache-name-here": {
- "key": "path/to/file/to/SHA-256/hash/and/use/that/as/the/cache.key",
- "cache": "path/to/directory/to/be/cached",
- "generate": "shell-command --to run --to regenerate --the-cache $from scratch"
- },
- ...
-}
-```
-
-`s3_cache.py` will SHA-256 hash the contents of the `key` file and try to fetch a tarball from S3 using the hash as the filename.
-If it's unable to fetch the tarball (either because it doesn't exist or there was a network error), it will run the `generate` command. If it was able to fetch the tarball, it will extract it to the `cache` directory.
-If it had to `generate` the cache, it will later create a tarball of the `cache` directory and try to upload the tarball to S3 using the SHA-256 hash of the `key` file as the tarball's filename.
-
-
-## AWS Setup
-
-### Overview
-1. Create an Amazon Web Services (AWS) account.
-2. Create an Identity & Access Management (IAM) user, and note their credentials.
-3. Create an S3 bucket.
-4. Set permissions on the bucket to grant the user read+write access.
-5. Set the user credentials as secure Travis environment variables.
-
-### In detail
-1. Create an AWS account.
-2. Login to the [AWS Management Console](https://console.aws.amazon.com).
-3. Go to the IAM Management Console.
-4. Create a new user (named e.g. `travis-ci`) and generate an access key for them. Note both the Access Key ID and the Secret Access Key.
-5. Note the user's ARN (Amazon Resource Name), which can be found in the "Summary" tab of the user browser. This will be of the form: `arn:aws:iam::XXXXXXXXXXXXXX:user/the-username-goes-here`
-6. Note the user's access key, which can be found in the "Security Credentials" tab of the user browser.
-7. Go to the S3 Management Console.
-8. Create a new bucket. For a non-publicly-accessible bucket (like Bootstrap uses), it's recommended that the bucket name be random to increase security. On most *nix machines, you can easily generate a random UUID to use as the bucket name using Python:
-
- ```bash
- python -c "import uuid; print(uuid.uuid4())"
- ```
-
-9. Determine and note what your bucket's ARN is. The ARN for an S3 bucket is of the form: `arn:aws:s3:::the-bucket-name-goes-here`
-10. In the bucket's Properties pane, in the "Permissions" section, click the "Edit bucket policy" button.
-11. Input and submit an IAM Policy that grants the user at least read+write rights to the bucket. AWS has a policy generator and some examples to help with crafting the policy. Here's the policy that Bootstrap uses, with the sensitive bits censored:
-
- ```json
- {
- "Version": "2012-10-17",
- "Id": "PolicyTravisReadWriteNoAdmin",
- "Statement": [
- {
- "Sid": "StmtXXXXXXXXXXXXXX",
- "Effect": "Allow",
- "Principal": {
- "AWS": "arn:aws:iam::XXXXXXXXXXXXXX:user/travis-ci"
- },
- "Action": [
- "s3:AbortMultipartUpload",
- "s3:GetObjectVersion",
- "s3:ListBucket",
- "s3:DeleteObject",
- "s3:DeleteObjectVersion",
- "s3:GetObject",
- "s3:PutObject"
- ],
- "Resource": [
- "arn:aws:s3:::XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
- "arn:aws:s3:::XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/*"
- ]
- }
- ]
- }
- ```
-
-12. If you want deletion from the cache to be done automatically based on age (like Bootstrap does): In the bucket's Properties pane, in the "Lifecycle" section, add a rule to expire/delete files based on creation date.
-13. Install the [`travis` RubyGem](https://github.com/travis-ci/travis): `gem install travis`
-14. Encrypt the environment variables:
-
- ```bash
- travis encrypt --repo twbs/bootstrap "AWS_ACCESS_KEY_ID=XXX"
- travis encrypt --repo twbs/bootstrap "AWS_SECRET_ACCESS_KEY=XXX"
- travis encrypt --repo twbs/bootstrap "TWBS_S3_BUCKET=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
- ```
-
-14. Add the resulting secure environment variables to `.travis.yml`.
-
-
-## Usage
-Read `s3_cache.py`'s source code and Bootstrap's `.travis.yml` for how to invoke and make use of `s3_cache.py`.
diff --git a/test-infra/S3Cachefile.json b/test-infra/S3Cachefile.json
deleted file mode 100644
index 90eae796d..000000000
--- a/test-infra/S3Cachefile.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "npm-modules": {
- "key": "./npm-shrinkwrap.json",
- "cache": "../node_modules",
- "generate": "./uncached-npm-install.sh"
- },
- "rubygems": {
- "key": "$BUNDLE_GEMFILE",
- "cache": "../vendor/cache",
- "generate": "cd .. ; bundle install --path=\"`pwd`/vendor/cache\""
- }
-}
diff --git a/test-infra/gemfiles/core.gemfile b/test-infra/gemfiles/core.gemfile
deleted file mode 100644
index 6a8372691..000000000
--- a/test-infra/gemfiles/core.gemfile
+++ /dev/null
@@ -1,7 +0,0 @@
-# Ruby Gems for the 'core' set of tests
-# Run `grunt update-gemfile-lock` to update to the latest compatible versions
-
-source 'https://rubygems.org'
-
-gem 'sass', '~> 3.4.9'
-gem 'scss-lint', '~> 0.31'
diff --git a/test-infra/gemfiles/core.gemfile.lock b/test-infra/gemfiles/core.gemfile.lock
deleted file mode 100644
index 03580d83b..000000000
--- a/test-infra/gemfiles/core.gemfile.lock
+++ /dev/null
@@ -1,15 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- rainbow (2.0.0)
- sass (3.4.9)
- scss-lint (0.31.0)
- rainbow (~> 2.0)
- sass (~> 3.4.1)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- sass (~> 3.4.9)
- scss-lint (~> 0.31)
diff --git a/test-infra/npm-shrinkwrap.json b/test-infra/npm-shrinkwrap.json
index f7f5faae9..7519fdadc 100644
--- a/test-infra/npm-shrinkwrap.json
+++ b/test-infra/npm-shrinkwrap.json
@@ -5,12 +5,16 @@
"node-version": "v0.12.7",
"dependencies": {
"babel-eslint": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-4.0.10.tgz",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-4.1.1.tgz",
"dependencies": {
+ "acorn-to-esprima": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/acorn-to-esprima/-/acorn-to-esprima-1.0.2.tgz"
+ },
"babel-core": {
- "version": "5.8.22",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.22.tgz",
+ "version": "5.8.23",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.23.tgz",
"dependencies": {
"babel-plugin-constant-folding": {
"version": "1.0.1",
@@ -79,8 +83,8 @@
"resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz"
},
"babylon": {
- "version": "5.8.22",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.22.tgz"
+ "version": "5.8.23",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz"
},
"bluebird": {
"version": "2.9.34",
@@ -129,8 +133,8 @@
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz"
},
"core-js": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.1.tgz"
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz"
},
"debug": {
"version": "2.2.0",
@@ -151,8 +155,8 @@
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
},
"minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
}
}
},
@@ -183,8 +187,8 @@
}
},
"is-integer": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.4.tgz",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz",
"dependencies": {
"is-finite": {
"version": "1.0.1",
@@ -195,26 +199,6 @@
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz"
}
}
- },
- "is-nan": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz",
- "dependencies": {
- "define-properties": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.1.tgz",
- "dependencies": {
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz"
- },
- "object-keys": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.7.tgz"
- }
- }
- }
- }
}
}
},
@@ -453,12 +437,12 @@
"resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz",
"dependencies": {
"recast": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.31.tgz",
+ "version": "0.10.32",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz",
"dependencies": {
"ast-types": {
- "version": "0.8.9",
- "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.9.tgz"
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz"
},
"esprima-fb": {
"version": "15001.1001.0-dev-harmony-fb",
@@ -797,8 +781,8 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"
},
"inherits": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz"
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"
}
}
},
@@ -899,8 +883,8 @@
}
},
"grunt-autoprefixer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-2.2.0.tgz",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.3.tgz",
"dependencies": {
"autoprefixer-core": {
"version": "5.2.1",
@@ -911,80 +895,84 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-0.4.0.tgz"
},
"caniuse-db": {
- "version": "1.0.30000271",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000271.tgz"
+ "version": "1.0.30000291",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000291.tgz"
},
"num2fraction": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.1.0.tgz"
- },
- "postcss": {
- "version": "4.1.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-4.1.16.tgz",
- "dependencies": {
- "es6-promise": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz"
- },
- "js-base64": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz"
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "dependencies": {
- "amdefine": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz"
- }
- }
- }
- }
}
}
},
"chalk": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz",
"dependencies": {
"ansi-styles": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz",
"dependencies": {
"ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
}
}
},
"strip-ansi": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz",
"dependencies": {
"ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
}
}
},
"supports-color": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz"
}
}
},
"diff": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-1.2.2.tgz"
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-1.3.2.tgz"
+ },
+ "postcss": {
+ "version": "4.1.16",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-4.1.16.tgz",
+ "dependencies": {
+ "es6-promise": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz"
+ },
+ "js-base64": {
+ "version": "2.1.9",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz"
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "dependencies": {
+ "amdefine": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz"
+ }
+ }
+ }
+ }
}
}
},
@@ -993,8 +981,8 @@
"resolved": "https://registry.npmjs.org/grunt-babel/-/grunt-babel-5.0.1.tgz",
"dependencies": {
"babel-core": {
- "version": "5.8.22",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.22.tgz",
+ "version": "5.8.23",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.23.tgz",
"dependencies": {
"babel-plugin-constant-folding": {
"version": "1.0.1",
@@ -1063,8 +1051,8 @@
"resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz"
},
"babylon": {
- "version": "5.8.22",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.22.tgz"
+ "version": "5.8.23",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz"
},
"bluebird": {
"version": "2.9.34",
@@ -1113,8 +1101,8 @@
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz"
},
"core-js": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.1.tgz"
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz"
},
"debug": {
"version": "2.2.0",
@@ -1135,8 +1123,8 @@
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
},
"minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
}
}
},
@@ -1167,8 +1155,8 @@
}
},
"is-integer": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.4.tgz",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz",
"dependencies": {
"is-finite": {
"version": "1.0.1",
@@ -1179,26 +1167,6 @@
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz"
}
}
- },
- "is-nan": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz",
- "dependencies": {
- "define-properties": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.1.tgz",
- "dependencies": {
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz"
- },
- "object-keys": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.7.tgz"
- }
- }
- }
- }
}
}
},
@@ -1437,12 +1405,12 @@
"resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz",
"dependencies": {
"recast": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.31.tgz",
+ "version": "0.10.32",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz",
"dependencies": {
"ast-types": {
- "version": "0.8.9",
- "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.9.tgz"
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz"
},
"esprima-fb": {
"version": "15001.1001.0-dev-harmony-fb",
@@ -1540,14 +1508,14 @@
}
}
},
- "grunt-banner": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/grunt-banner/-/grunt-banner-0.3.1.tgz"
- },
"grunt-build-control": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/grunt-build-control/-/grunt-build-control-0.2.2.tgz",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/grunt-build-control/-/grunt-build-control-0.5.0.tgz",
"dependencies": {
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz"
+ },
"shelljs": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz"
@@ -1815,28 +1783,34 @@
}
},
"grunt-contrib-connect": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-0.9.0.tgz",
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-0.11.2.tgz",
"dependencies": {
"async": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz"
},
"connect": {
- "version": "2.30.2",
- "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.4.0.tgz",
"dependencies": {
- "basic-auth-connect": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz"
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
+ }
+ }
},
- "body-parser": {
- "version": "1.13.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz",
+ "finalhandler": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz",
"dependencies": {
- "iconv-lite": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz"
+ "escape-html": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
},
"on-finished": {
"version": "2.3.0",
@@ -1848,115 +1822,33 @@
}
}
},
- "raw-body": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz",
- "dependencies": {
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
- }
- }
- }
- }
- },
- "bytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz"
- },
- "compression": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz",
- "dependencies": {
- "accepts": {
- "version": "1.2.12",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz",
- "dependencies": {
- "mime-types": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz",
- "dependencies": {
- "mime-db": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
- }
- }
- },
- "negotiator": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz"
- }
- }
- },
- "compressible": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.5.tgz",
- "dependencies": {
- "mime-db": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
- }
- }
- },
- "vary": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz"
- }
- }
- },
- "connect-timeout": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz",
- "dependencies": {
- "ms": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
}
}
},
- "content-type": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz"
- },
- "cookie": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz"
- },
- "cookie-parser": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz"
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
+ "parseurl": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz"
},
- "csurf": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz",
- "dependencies": {
- "csrf": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.0.tgz",
- "dependencies": {
- "base64-url": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz"
- },
- "rndm": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.1.0.tgz"
- },
- "scmp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/scmp/-/scmp-1.0.0.tgz"
- },
- "uid-safe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz"
- }
- }
- }
- }
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz"
+ }
+ }
+ },
+ "connect-livereload": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.3.tgz"
+ },
+ "morgan": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz",
+ "dependencies": {
+ "basic-auth": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.3.tgz"
},
"debug": {
"version": "2.2.0",
@@ -1972,83 +1864,67 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz"
},
- "errorhandler": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.2.tgz",
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"dependencies": {
- "accepts": {
- "version": "1.2.12",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz",
- "dependencies": {
- "mime-types": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz",
- "dependencies": {
- "mime-db": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
- }
- }
- },
- "negotiator": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz"
- }
- }
- },
- "escape-html": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
}
}
},
- "express-session": {
- "version": "1.11.3",
- "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz",
+ "on-headers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz"
+ }
+ }
+ },
+ "opn": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz"
+ },
+ "portscanner": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.0.0.tgz",
+ "dependencies": {
+ "async": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.15.tgz"
+ }
+ }
+ },
+ "serve-index": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.2.tgz",
+ "dependencies": {
+ "accepts": {
+ "version": "1.2.12",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz",
"dependencies": {
- "crc": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz"
- },
- "uid-safe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz",
- "dependencies": {
- "base64-url": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz"
- }
- }
+ "negotiator": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz"
}
}
},
- "finalhandler": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz",
+ "batch": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.2.tgz"
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
"dependencies": {
- "escape-html": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "dependencies": {
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
- }
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
}
}
},
- "fresh": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz"
+ "escape-html": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
},
"http-errors": {
"version": "1.3.1",
@@ -2064,235 +1940,95 @@
}
}
},
- "method-override": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.5.tgz",
- "dependencies": {
- "methods": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz"
- },
- "vary": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz"
- }
- }
- },
- "morgan": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz",
+ "mime-types": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz",
"dependencies": {
- "basic-auth": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.3.tgz"
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "dependencies": {
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
- }
- }
+ "mime-db": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz"
}
}
},
- "multiparty": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz",
- "dependencies": {
- "readable-stream": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
- "dependencies": {
- "core-util-is": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
- },
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
- }
- }
- },
- "stream-counter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz"
- }
- }
- },
- "on-headers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz"
- },
"parseurl": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz"
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz",
+ "dependencies": {
+ "escape-html": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
},
- "pause": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz"
- },
- "qs": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz"
- },
- "response-time": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.1.tgz"
+ "parseurl": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz"
},
- "serve-favicon": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.0.tgz",
+ "send": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz",
"dependencies": {
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz"
+ },
+ "depd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz"
+ },
+ "destroy": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz"
+ },
"etag": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz"
},
- "ms": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
- }
- }
- },
- "serve-index": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.2.tgz",
- "dependencies": {
- "accepts": {
- "version": "1.2.12",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz",
+ "fresh": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz"
+ },
+ "http-errors": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
"dependencies": {
- "negotiator": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz"
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
}
}
},
- "batch": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.2.tgz"
+ "mime": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
},
- "escape-html": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
},
- "mime-types": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz",
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"dependencies": {
- "mime-db": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
}
}
- }
- }
- },
- "serve-static": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz",
- "dependencies": {
- "escape-html": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
},
- "send": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz",
- "dependencies": {
- "destroy": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz"
- },
- "etag": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz"
- },
- "mime": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
- },
- "ms": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "dependencies": {
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
- }
- }
- },
- "range-parser": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz"
- },
- "statuses": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz"
- }
- }
- }
- }
- },
- "type-is": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.7.tgz",
- "dependencies": {
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
+ "range-parser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz"
},
- "mime-types": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz",
- "dependencies": {
- "mime-db": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
- }
- }
+ "statuses": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz"
}
}
- },
- "utils-merge": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz"
- },
- "vhost": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.1.tgz"
- }
- }
- },
- "connect-livereload": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.3.tgz"
- },
- "opn": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz"
- },
- "portscanner": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.0.0.tgz",
- "dependencies": {
- "async": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/async/-/async-0.1.15.tgz"
}
}
}
@@ -2346,71 +2082,9 @@
}
}
},
- "grunt-contrib-csslint": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-csslint/-/grunt-contrib-csslint-0.4.0.tgz",
- "dependencies": {
- "chalk": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
- "dependencies": {
- "ansi-styles": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
- },
- "escape-string-regexp": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
- },
- "has-ansi": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
- "dependencies": {
- "ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
- }
- }
- },
- "strip-ansi": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
- "dependencies": {
- "ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
- }
- }
- },
- "supports-color": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
- }
- }
- },
- "csslint": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/csslint/-/csslint-0.10.0.tgz",
- "dependencies": {
- "parserlib": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-0.2.5.tgz"
- }
- }
- },
- "lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"
- },
- "strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
- }
- }
- },
"grunt-contrib-cssmin": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.3.tgz",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.13.0.tgz",
"dependencies": {
"chalk": {
"version": "1.1.1",
@@ -2451,8 +2125,8 @@
}
},
"clean-css": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.3.9.tgz",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.3.10.tgz",
"dependencies": {
"commander": {
"version": "2.8.1",
@@ -2589,8 +2263,8 @@
}
},
"minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
},
"object-assign": {
"version": "3.0.0",
@@ -2604,319 +2278,9 @@
}
}
},
- "grunt-contrib-jade": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-jade/-/grunt-contrib-jade-0.14.1.tgz",
- "dependencies": {
- "chalk": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
- "dependencies": {
- "ansi-styles": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
- },
- "escape-string-regexp": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
- },
- "has-ansi": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
- "dependencies": {
- "ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
- }
- }
- },
- "strip-ansi": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
- "dependencies": {
- "ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
- }
- }
- },
- "supports-color": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
- }
- }
- },
- "jade": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/jade/-/jade-1.9.2.tgz",
- "dependencies": {
- "character-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz"
- },
- "commander": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz"
- },
- "constantinople": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz",
- "dependencies": {
- "acorn": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.3.0.tgz"
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
- }
- }
- },
- "transformers": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz",
- "dependencies": {
- "css": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz",
- "dependencies": {
- "css-parse": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz"
- },
- "css-stringify": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz"
- }
- }
- },
- "promise": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz",
- "dependencies": {
- "is-promise": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz"
- }
- }
- },
- "uglify-js": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz",
- "dependencies": {
- "optimist": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
- "dependencies": {
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
- }
- }
- },
- "source-map": {
- "version": "0.1.43",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
- "dependencies": {
- "amdefine": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz"
- }
- }
- }
- }
- }
- }
- },
- "void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz"
- },
- "with": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz",
- "dependencies": {
- "acorn": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz"
- },
- "acorn-globals": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.5.tgz",
- "dependencies": {
- "acorn": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.3.0.tgz"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "grunt-contrib-jshint": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.11.2.tgz",
- "dependencies": {
- "hooker": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz"
- },
- "jshint": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.8.0.tgz",
- "dependencies": {
- "cli": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz",
- "dependencies": {
- "glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
- },
- "minimatch": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
- "dependencies": {
- "lru-cache": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz"
- },
- "sigmund": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
- }
- }
- }
- }
- }
- }
- },
- "console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "dependencies": {
- "date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz"
- }
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
- },
- "htmlparser2": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
- "dependencies": {
- "domelementtype": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"
- },
- "domhandler": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz"
- },
- "domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "dependencies": {
- "dom-serializer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
- "dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz"
- },
- "entities": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz"
- }
- }
- }
- }
- },
- "entities": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz"
- },
- "readable-stream": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
- "dependencies": {
- "core-util-is": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
- },
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
- }
- }
- }
- }
- },
- "lodash": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz"
- },
- "minimatch": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
- "dependencies": {
- "brace-expansion": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz",
- "dependencies": {
- "balanced-match": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz"
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
- }
- }
- }
- }
- },
- "shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz"
- },
- "strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
- }
- }
- }
- }
- },
"grunt-contrib-qunit": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/grunt-contrib-qunit/-/grunt-contrib-qunit-0.5.2.tgz",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-qunit/-/grunt-contrib-qunit-0.7.0.tgz",
"dependencies": {
"grunt-lib-phantomjs": {
"version": "0.6.0",
@@ -2951,8 +2315,8 @@
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
},
"rimraf": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz"
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz"
}
}
},
@@ -3217,8 +2581,8 @@
}
},
"grunt-contrib-sass": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-sass/-/grunt-contrib-sass-0.8.1.tgz",
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-sass/-/grunt-contrib-sass-0.9.2.tgz",
"dependencies": {
"async": {
"version": "0.9.2",
@@ -3262,9 +2626,25 @@
}
}
},
+ "cross-spawn": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-0.2.9.tgz",
+ "dependencies": {
+ "lru-cache": {
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz"
+ }
+ }
+ },
"dargs": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-2.1.0.tgz"
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.0.1.tgz",
+ "dependencies": {
+ "number-is-nan": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz"
+ }
+ }
},
"which": {
"version": "1.1.1",
@@ -3281,16 +2661,12 @@
}
}
}
- },
- "win-spawn": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/win-spawn/-/win-spawn-2.0.0.tgz"
}
}
},
"grunt-contrib-uglify": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.8.1.tgz",
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.2.tgz",
"dependencies": {
"chalk": {
"version": "1.1.1",
@@ -3447,8 +2823,8 @@
}
},
"minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
},
"object-assign": {
"version": "3.0.0",
@@ -3461,8 +2837,8 @@
}
},
"uglify-js": {
- "version": "2.4.17",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.17.tgz",
+ "version": "2.4.24",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz",
"dependencies": {
"async": {
"version": "0.2.10",
@@ -3483,8 +2859,26 @@
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz"
},
"yargs": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz"
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz",
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz"
+ },
+ "decamelize": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz"
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
+ }
+ }
}
}
},
@@ -3519,8 +2913,8 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"
},
"inherits": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz"
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"
}
}
},
@@ -3587,8 +2981,8 @@
}
},
"grunt-csscomb": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/grunt-csscomb/-/grunt-csscomb-3.0.1.tgz",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-csscomb/-/grunt-csscomb-3.1.0.tgz",
"dependencies": {
"csscomb": {
"version": "3.1.8",
@@ -3697,8 +3091,8 @@
}
},
"eslint": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-1.2.1.tgz",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-1.3.1.tgz",
"dependencies": {
"concat-stream": {
"version": "1.5.0",
@@ -3859,8 +3253,58 @@
"resolved": "https://registry.npmjs.org/estraverse-fb/-/estraverse-fb-1.3.1.tgz"
},
"globals": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-8.6.0.tgz"
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-8.7.0.tgz"
+ },
+ "handlebars": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-3.0.3.tgz",
+ "dependencies": {
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz"
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "dependencies": {
+ "amdefine": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz"
+ }
+ }
+ },
+ "uglify-js": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz",
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
+ },
+ "optimist": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
+ }
+ }
+ }
+ }
+ }
+ }
},
"inquirer": {
"version": "0.9.0",
@@ -3933,8 +3377,8 @@
}
},
"is-my-json-valid": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.1.tgz",
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz",
"dependencies": {
"generate-function": {
"version": "2.0.0",
@@ -3951,8 +3395,8 @@
}
},
"jsonpointer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-1.1.0.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz"
},
"xtend": {
"version": "4.0.0",
@@ -3971,8 +3415,8 @@
}
},
"js-yaml": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.3.1.tgz",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.4.1.tgz",
"dependencies": {
"argparse": {
"version": "1.0.2",
@@ -4307,16 +3751,16 @@
"resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-0.4.6.tgz"
},
"grunt-html": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/grunt-html/-/grunt-html-4.0.3.tgz",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-html/-/grunt-html-5.0.0.tgz",
"dependencies": {
"async": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz"
},
"chalk": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz",
"dependencies": {
"ansi-styles": {
"version": "2.1.0",
@@ -4327,32 +3771,28 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"dependencies": {
"ansi-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
- },
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
}
}
},
"strip-ansi": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz",
"dependencies": {
"ansi-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
}
}
},
"supports-color": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
}
}
}
@@ -4543,8 +3983,8 @@
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz"
},
"read": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.6.tgz",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
"dependencies": {
"mute-stream": {
"version": "0.0.5",
@@ -4565,8 +4005,8 @@
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
},
"deep-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.0.tgz"
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz"
},
"i": {
"version": "0.3.3",
@@ -4587,8 +4027,8 @@
"resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz"
},
"rimraf": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz"
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz"
}
}
},
@@ -4699,59 +4139,59 @@
"resolved": "https://registry.npmjs.org/grunt-line-remover/-/grunt-line-remover-0.0.2.tgz"
},
"grunt-postcss": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/grunt-postcss/-/grunt-postcss-0.3.0.tgz",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/grunt-postcss/-/grunt-postcss-0.6.0.tgz",
"dependencies": {
"chalk": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
"dependencies": {
"ansi-styles": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"dependencies": {
"ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
}
}
},
"strip-ansi": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz",
"dependencies": {
"ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
}
}
},
"supports-color": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
}
}
},
"diff": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz"
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-2.1.0.tgz"
+ },
+ "es6-promise": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz"
},
"postcss": {
- "version": "4.1.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-4.1.16.tgz",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.0.4.tgz",
"dependencies": {
- "es6-promise": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz"
- },
"js-base64": {
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz"
@@ -4765,6 +4205,16 @@
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz"
}
}
+ },
+ "supports-color": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz",
+ "dependencies": {
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz"
+ }
+ }
}
}
}
@@ -4789,8 +4239,8 @@
}
},
"node-sass": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-3.2.0.tgz",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-3.3.2.tgz",
"dependencies": {
"async-foreach": {
"version": "0.1.3",
@@ -4851,8 +4301,8 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"
},
"inherits": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz"
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"
}
}
},
@@ -4923,8 +4373,8 @@
}
},
"minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
},
"object-assign": {
"version": "3.0.0",
@@ -4943,8 +4393,8 @@
}
},
"nan": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-1.9.0.tgz"
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.8.tgz"
},
"npmconf": {
"version": "2.1.2",
@@ -5427,8 +4877,8 @@
}
},
"is-my-json-valid": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.1.tgz",
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz",
"dependencies": {
"generate-function": {
"version": "2.0.0",
@@ -5445,8 +4895,8 @@
}
},
"jsonpointer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-1.1.0.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz"
},
"xtend": {
"version": "4.0.0",
@@ -5505,12 +4955,12 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
},
"mime-types": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz",
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz",
"dependencies": {
"mime-db": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz"
}
}
},
@@ -5549,8 +4999,8 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
},
"yargs": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.20.0.tgz",
+ "version": "3.24.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.24.0.tgz",
"dependencies": {
"camelcase": {
"version": "1.2.1",
@@ -5569,8 +5019,14 @@
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.3.tgz",
"dependencies": {
"kind-of": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.0.tgz"
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz",
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.0.2.tgz"
+ }
+ }
},
"longest": {
"version": "1.0.1",
@@ -5593,8 +5049,14 @@
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.3.tgz",
"dependencies": {
"kind-of": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.0.tgz"
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz",
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.0.2.tgz"
+ }
+ }
},
"longest": {
"version": "1.0.1",
@@ -5619,73 +5081,9 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz"
},
"os-locale": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.2.0.tgz",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.3.1.tgz",
"dependencies": {
- "exec-file-sync": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/exec-file-sync/-/exec-file-sync-2.0.0.tgz",
- "dependencies": {
- "is-obj": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.0.tgz"
- },
- "object-assign": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz"
- },
- "spawn-sync": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.13.tgz",
- "dependencies": {
- "concat-stream": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
- },
- "readable-stream": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz",
- "dependencies": {
- "core-util-is": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
- },
- "process-nextick-args": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz"
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
- },
- "util-deprecate": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz"
- }
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
- }
- }
- },
- "os-shim": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz"
- }
- }
- }
- }
- },
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
@@ -6193,8 +5591,8 @@
"resolved": "https://registry.npmjs.org/grunt-stamp/-/grunt-stamp-0.1.0.tgz"
},
"load-grunt-tasks": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.1.0.tgz",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.2.0.tgz",
"dependencies": {
"findup-sync": {
"version": "0.2.1",
@@ -6423,8 +5821,8 @@
}
},
"minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
},
"msee": {
"version": "0.1.1",
@@ -6495,8 +5893,8 @@
}
},
"npm": {
- "version": "2.13.5",
- "resolved": "https://registry.npmjs.org/npm/-/npm-2.13.5.tgz",
+ "version": "2.14.2",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-2.14.2.tgz",
"dependencies": {
"abbrev": {
"version": "1.0.7",
@@ -6535,8 +5933,8 @@
"resolved": "https://registry.npmjs.org/chmodr/-/chmodr-1.0.1.tgz"
},
"chownr": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-0.0.2.tgz"
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz"
},
"cmd-shim": {
"version": "2.0.1",
@@ -6549,16 +5947,16 @@
}
},
"columnify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.2.tgz",
"dependencies": {
"strip-ansi": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz",
"dependencies": {
"ansi-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
}
}
},
@@ -6635,8 +6033,8 @@
}
},
"fstream-npm": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/fstream-npm/-/fstream-npm-1.0.4.tgz",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/fstream-npm/-/fstream-npm-1.0.5.tgz",
"dependencies": {
"fstream-ignore": {
"version": "1.0.2",
@@ -6683,8 +6081,8 @@
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz"
},
"init-package-json": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.7.1.tgz",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.9.1.tgz",
"dependencies": {
"promzard": {
"version": "0.3.0",
@@ -6815,8 +6213,8 @@
"resolved": "https://registry.npmjs.org/normalize-git-url/-/normalize-git-url-3.0.1.tgz"
},
"normalize-package-data": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.1.tgz"
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.2.tgz"
},
"npm-cache-filename": {
"version": "1.0.2",
@@ -6831,9 +6229,13 @@
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.0.2.tgz"
},
"npm-registry-client": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-6.5.1.tgz",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.0.1.tgz",
"dependencies": {
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz"
+ },
"concat-stream": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
@@ -6959,8 +6361,8 @@
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz"
},
"read": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.6.tgz",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
"dependencies": {
"mute-stream": {
"version": "0.0.5",
@@ -7033,8 +6435,8 @@
"resolved": "https://registry.npmjs.org/realize-package-specifier/-/realize-package-specifier-3.0.1.tgz"
},
"request": {
- "version": "2.60.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.60.0.tgz",
+ "version": "2.61.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.61.0.tgz",
"dependencies": {
"aws-sign2": {
"version": "0.5.0",
@@ -7095,12 +6497,12 @@
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
},
"form-data": {
- "version": "1.0.0-rc2",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc2.tgz",
+ "version": "1.0.0-rc3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz",
"dependencies": {
"async": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz"
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz"
}
}
},
@@ -7113,8 +6515,8 @@
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz"
},
"chalk": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
"dependencies": {
"ansi-styles": {
"version": "2.1.0",
@@ -7161,8 +6563,8 @@
}
},
"is-my-json-valid": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz",
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.1.tgz",
"dependencies": {
"generate-function": {
"version": "2.0.0",
@@ -7239,12 +6641,12 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
},
"mime-types": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz",
"dependencies": {
"mime-db": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.15.0.tgz"
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
}
}
},
@@ -7279,8 +6681,8 @@
"resolved": "https://registry.npmjs.org/retry/-/retry-0.6.1.tgz"
},
"rimraf": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz"
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz"
},
"semver": {
"version": "5.0.1",
@@ -7315,8 +6717,8 @@
}
},
"tar": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.1.1.tgz"
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.0.tgz"
},
"text-table": {
"version": "0.2.0",
@@ -7331,12 +6733,32 @@
"resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz"
},
"validate-npm-package-license": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-2.0.0.tgz",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
"dependencies": {
"spdx-correct": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.1.tgz",
+ "dependencies": {
+ "spdx-license-ids": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.2.tgz"
+ }
+ }
+ },
+ "spdx-expression-parse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.0.tgz"
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.0.tgz",
+ "dependencies": {
+ "spdx-exceptions": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.2.tgz"
+ },
+ "spdx-license-ids": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.2.tgz"
+ }
+ }
}
}
},
@@ -7387,8 +6809,8 @@
"resolved": "https://registry.npmjs.org/read-json/-/read-json-0.1.0.tgz"
},
"rimraf": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz"
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz"
},
"run-parallel": {
"version": "1.1.2",
@@ -7547,8 +6969,8 @@
}
},
"minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
},
"object-assign": {
"version": "3.0.0",
diff --git a/test-infra/requirements.txt b/test-infra/requirements.txt
deleted file mode 100644
index fe44343da..000000000
--- a/test-infra/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-boto==2.25.0
diff --git a/test-infra/s3_cache.py b/test-infra/s3_cache.py
deleted file mode 100755
index eaa37992d..000000000
--- a/test-infra/s3_cache.py
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/usr/bin/env python2.7
-# pylint: disable=C0301
-from __future__ import absolute_import, unicode_literals, print_function, division
-
-from sys import argv
-from os import environ, stat, chdir, remove as _delete_file
-from os.path import dirname, basename, abspath, realpath, expandvars
-from hashlib import sha256
-from subprocess import check_call as run
-from json import load, dump as save
-from contextlib import contextmanager
-from datetime import datetime
-
-from boto.s3.connection import S3Connection
-from boto.s3.key import Key
-from boto.exception import S3ResponseError
-
-
-CONFIG_FILE = './S3Cachefile.json'
-UPLOAD_TODO_FILE = './S3CacheTodo.json'
-BYTES_PER_MB = 1024 * 1024
-
-
-@contextmanager
-def timer():
- start = datetime.utcnow()
- yield
- end = datetime.utcnow()
- elapsed = end - start
- print("\tDone. Took", int(elapsed.total_seconds()), "second(s).")
-
-
-@contextmanager
-def todo_file(writeback=True):
- try:
- with open(UPLOAD_TODO_FILE, 'rt') as json_file:
- todo = load(json_file)
- except (IOError, OSError, ValueError):
- todo = {}
-
- yield todo
-
- if writeback:
- try:
- with open(UPLOAD_TODO_FILE, 'wt') as json_file:
- save(todo, json_file)
- except (OSError, IOError) as save_err:
- print("Error saving {}:".format(UPLOAD_TODO_FILE), save_err)
-
-
-def _sha256_of_file(filename):
- hasher = sha256()
- with open(filename, 'rb') as input_file:
- hasher.update(input_file.read())
- file_hash = hasher.hexdigest()
- print('sha256({}) = {}'.format(filename, file_hash))
- return file_hash
-
-
-def _delete_file_quietly(filename):
- try:
- _delete_file(filename)
- except (OSError, IOError):
- pass
-
-
-def mark_needs_uploading(cache_name):
- with todo_file() as todo:
- todo[cache_name] = True
-
-
-def mark_uploaded(cache_name):
- with todo_file() as todo:
- todo.pop(cache_name, None)
-
-
-def need_to_upload(cache_name):
- with todo_file(writeback=False) as todo:
- return todo.get(cache_name, False)
-
-
-def _tarball_size(directory):
- kib = stat(_tarball_filename_for(directory)).st_size // BYTES_PER_MB
- return "{} MiB".format(kib)
-
-
-def _tarball_filename_for(directory):
- return abspath('./{}.tar.gz'.format(basename(directory)))
-
-
-def _create_tarball(directory):
- print("Creating tarball of {}...".format(directory))
- with timer():
- run(['tar', '-czf', _tarball_filename_for(directory), '-C', dirname(directory), basename(directory)])
-
-
-def _extract_tarball(directory):
- print("Extracting tarball of {}...".format(directory))
- with timer():
- run(['tar', '-xzf', _tarball_filename_for(directory), '-C', dirname(directory)])
-
-
-def download(directory):
- mark_uploaded(cache_name) # reset
- try:
- print("Downloading {} tarball from S3...".format(cache_name))
- with timer():
- key.get_contents_to_filename(_tarball_filename_for(directory))
- except S3ResponseError as err:
- mark_needs_uploading(cache_name)
- raise SystemExit("Cached {} download failed!".format(cache_name))
- print("Downloaded {}.".format(_tarball_size(directory)))
- _extract_tarball(directory)
- print("{} successfully installed from cache.".format(cache_name))
-
-
-def upload(directory):
- _create_tarball(directory)
- print("Uploading {} tarball to S3... ({})".format(cache_name, _tarball_size(directory)))
- with timer():
- key.set_contents_from_filename(_tarball_filename_for(directory))
- print("{} cache successfully updated.".format(cache_name))
- mark_uploaded(cache_name)
-
-
-if __name__ == '__main__':
- # Uses environment variables:
- # AWS_ACCESS_KEY_ID -- AWS Access Key ID
- # AWS_SECRET_ACCESS_KEY -- AWS Secret Access Key
- argv.pop(0)
- if len(argv) != 2:
- raise SystemExit("USAGE: s3_cache.py <download | upload> <cache name>")
- mode, cache_name = argv
- script_dir = dirname(realpath(__file__))
- chdir(script_dir)
- try:
- with open(CONFIG_FILE, 'rt') as config_file:
- config = load(config_file)
- except (IOError, OSError, ValueError) as config_err:
- print(config_err)
- raise SystemExit("Error when trying to load config from JSON file!")
-
- try:
- cache_info = config[cache_name]
- key_file = expandvars(cache_info["key"])
- fallback_cmd = cache_info["generate"]
- directory = expandvars(cache_info["cache"])
- except (TypeError, KeyError) as load_err:
- print(load_err)
- raise SystemExit("Config for cache named {!r} is missing or malformed!".format(cache_name))
-
- try:
- try:
- BUCKET_NAME = environ['TWBS_S3_BUCKET']
- except KeyError:
- raise SystemExit("TWBS_S3_BUCKET environment variable not set!")
-
- conn = S3Connection()
- bucket = conn.lookup(BUCKET_NAME)
- if bucket is None:
- raise SystemExit("Could not access bucket!")
-
- key_file_hash = _sha256_of_file(key_file)
-
- key = Key(bucket, key_file_hash)
- key.storage_class = 'REDUCED_REDUNDANCY'
-
- if mode == 'download':
- download(directory)
- elif mode == 'upload':
- if need_to_upload(cache_name):
- upload(directory)
- else:
- print("No need to upload anything.")
- else:
- raise SystemExit("Unrecognized mode {!r}".format(mode))
- except BaseException as exc:
- if mode != 'download':
- raise
- print("Error!:", exc)
- print("Unable to download from cache.")
- print("Running fallback command to generate cache directory {!r}: {}".format(directory, fallback_cmd))
- with timer():
- run(fallback_cmd, shell=True)
diff --git a/test-infra/uncached-npm-install.sh b/test-infra/uncached-npm-install.sh
deleted file mode 100755
index a2d41445d..000000000
--- a/test-infra/uncached-npm-install.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-set -e
-cd .. # /bootstrap/
-cp test-infra/npm-shrinkwrap.json npm-shrinkwrap.json
-# npm is flaky, so try multiple times
-MAXTRIES=3
-TRIES=1
-while ! npm install; do
- if [ $TRIES -ge $MAXTRIES ]; then
- exit 1
- fi
- TRIES=$(($TRIES + 1))
- echo "Retrying npm install (Try $TRIES of $MAXTRIES)..."
-done
-rm npm-shrinkwrap.json