diff --git a/.gitmodules b/.gitmodules index 3d9dfc5c..cda89c08 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,3 @@ [submodule "test/web-platform-tests"] - path = test/web-platform-tests - url = https://github.com/alancutter/web-platform-tests.git - branch = nativeShippingAPI + path = test/web-platform-tests + url = https://github.com/web-platform-tests/wpt.git diff --git a/.travis-setup.sh b/.travis-setup.sh index f0f76a99..00ca7389 100755 --- a/.travis-setup.sh +++ b/.travis-setup.sh @@ -26,6 +26,9 @@ uname -a cat /etc/lsb-release npm install +# npm may update the package-lock.json. Revert this to avoid failing grunt-checkrepo. +git checkout HEAD package-lock.json + npm install -g grunt-cli sudo apt-get update --fix-missing @@ -62,19 +65,19 @@ Chrome) sudo dpkg --install $CHROME || sudo apt-get -f install which google-chrome ls -l `which google-chrome` - + if [ -f /opt/google/chrome/chrome-sandbox ]; then export CHROME_SANDBOX=/opt/google/chrome/chrome-sandbox else export CHROME_SANDBOX=$(ls /opt/google/chrome*/chrome-sandbox) fi - + # Download a custom chrome-sandbox which works inside OpenVC containers (used on travis). sudo rm -f $CHROME_SANDBOX sudo wget https://googledrive.com/host/0B5VlNZ_Rvdw6NTJoZDBSVy1ZdkE -O $CHROME_SANDBOX sudo chown root:root $CHROME_SANDBOX; sudo chmod 4755 $CHROME_SANDBOX sudo md5sum $CHROME_SANDBOX - + google-chrome --version ;; diff --git a/.travis.yml b/.travis.yml index bf9039b2..b3755942 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,6 @@ +dist: xenial +services: xvfb language: node_js - -node_js: - - "6.10.2" - -install: - - BROWSER="Firefox-stable" ./.travis-setup.sh - -before_script: - - export DISPLAY=:99.0 - - sh -e /etc/init.d/xvfb start +node_js: "10.15.3" +install: BROWSER="Firefox-stable" ./.travis-setup.sh +script: xvfb-run -a npm test diff --git a/Gruntfile.js b/Gruntfile.js index 4e9d60ca..bac72207 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -191,10 +191,9 @@ module.exports = function(grunt) { return new Promise(function(resolve) { var karmaConfig = require('karma/lib/config').parseConfig(require('path').resolve('test/karma-config.js'), {}); configCallback(karmaConfig); - var karmaServer = require('karma').server; - karmaServer.start(karmaConfig, function(exitCode) { + new (require('karma').Server)(karmaConfig, function(exitCode) { resolve(exitCode == 0); - }); + }).start(); }); } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..644dd310 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4855 @@ +{ + "name": "web-animations-js", + "version": "2.3.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "archiver": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.4.10.tgz", + "integrity": "sha1-3w/qyPHRKV5ezrOiBVWQctIfR0c=", + "dev": true, + "requires": { + "iconv-lite": "~0.2.11", + "readable-stream": "~1.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "argparse": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "dev": true, + "requires": { + "underscore": "~1.7.0", + "underscore.string": "~2.4.0" + }, + "dependencies": { + "underscore.string": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", + "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", + "dev": true + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "asn1": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", + "dev": true + }, + "assert-plus": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.2.tgz", + "integrity": "sha1-2T/9u2esVQd3m+MWp9ZRRkF77vg=", + "dev": true + }, + "assertion-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", + "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/aws-sign/-/aws-sign-0.3.0.tgz", + "integrity": "sha1-PYHKabR0seFlGHKLUcJP8Lvtxuk=", + "dev": true + }, + "aws-sign2": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bl": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", + "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", + "dev": true, + "requires": { + "readable-stream": "~1.0.26" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "boom": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", + "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", + "dev": true, + "requires": { + "hoek": "0.9.x" + }, + "dependencies": { + "hoek": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caseless": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz", + "integrity": "sha1-t7Zc5r8UE4hlOc/VM/CzDv+pz4g=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chai": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-1.10.0.tgz", + "integrity": "sha1-5AMcyHZURhp1lD5aNatG6vOcHrk=", + "dev": true, + "requires": { + "assertion-error": "1.0.0", + "deep-eql": "0.1.3" + } + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "closure-linter-wrapper": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/closure-linter-wrapper/-/closure-linter-wrapper-1.1.0.tgz", + "integrity": "sha1-1lTNhU56yMqhQNDKSMy/MChUsSg=", + "dev": true, + "requires": { + "colors": "^1.1.2" + } + }, + "coffee-script": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", + "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "dev": true, + "requires": { + "delayed-stream": "0.0.5" + } + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compress-commons": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.9.tgz", + "integrity": "sha1-Qi2SdDDAGr0GzUVbbfwEy0z4ADw=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.1", + "crc32-stream": "~0.3.1", + "node-int64": "~0.3.0", + "readable-stream": "~1.0.26" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-jar": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/cookie-jar/-/cookie-jar-0.3.0.tgz", + "integrity": "sha1-vJon1OK5fhhs1XyeIGPLmfpozMw=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc32-stream": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.4.tgz", + "integrity": "sha1-c7wltF+sHbZjIjGnv86JJ+nwZVI=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.1", + "readable-stream": "~1.0.24" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "cryptiles": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", + "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", + "dev": true, + "requires": { + "boom": "0.4.x" + } + }, + "ctype": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.2.tgz", + "integrity": "sha1-/oCR1Gijc6Cwyf+Lv7NCXACXOh0=", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "date-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "dev": true + }, + "dateformat": { + "version": "1.0.2-1.2.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + } + }, + "deep-equal": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.0.0.tgz", + "integrity": "sha1-mWedO70EcVb81FDT0B7rkGhpHoM=", + "dev": true + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "defined": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", + "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", + "dev": true + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", + "integrity": "sha1-JLuwAcSn1VIhaefKvbLCgU7ZHPQ=", + "dev": true + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "findup-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "dev": true, + "requires": { + "glob": "~3.2.9", + "lodash": "~2.4.1" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=", + "dev": true + }, + "form-data": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.8.tgz", + "integrity": "sha1-CJDNEAXFzOzAudJKiAUskkQtDbU=", + "dev": true, + "requires": { + "async": "~0.2.7", + "combined-stream": "~0.0.4", + "mime": "~1.2.2" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "growl": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", + "integrity": "sha1-Sy3sjZB+k9szZiTc7AGDUC+MlCg=", + "dev": true + }, + "grunt": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=", + "dev": true, + "requires": { + "async": "~0.1.22", + "coffee-script": "~1.3.3", + "colors": "~0.6.2", + "dateformat": "1.0.2-1.2.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.1.2", + "getobject": "~0.1.0", + "glob": "~3.1.21", + "grunt-legacy-log": "~0.1.0", + "grunt-legacy-util": "~0.2.0", + "hooker": "~0.2.3", + "iconv-lite": "~0.2.11", + "js-yaml": "~2.0.5", + "lodash": "~0.9.2", + "minimatch": "~0.2.12", + "nopt": "~1.0.10", + "rimraf": "~2.2.8", + "underscore.string": "~2.2.1", + "which": "~1.0.5" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "grunt-checkrepo": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/grunt-checkrepo/-/grunt-checkrepo-0.1.0.tgz", + "integrity": "sha1-4bhgKRhtAe98BfoJG/Z54Uzg1y0=", + "dev": true, + "requires": { + "semver": "~2.1.0", + "shelljs": "~0.2.5" + } + }, + "grunt-contrib-uglify": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.4.1.tgz", + "integrity": "sha1-1D87xuAsM1Vj+MT58IE/tLD/ebE=", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "maxmin": "^0.1.0", + "uglify-js": "^2.4.0" + } + }, + "grunt-git-status": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-git-status/-/grunt-git-status-1.0.0.tgz", + "integrity": "sha1-qw9MfiUXKpUWkPd0assdtt8QiM8=", + "dev": true + }, + "grunt-gjslint": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/grunt-gjslint/-/grunt-gjslint-0.2.1.tgz", + "integrity": "sha1-e7BLC8rfWoLrrQ9RmZ1owyvgYD8=", + "dev": true + }, + "grunt-karma": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/grunt-karma/-/grunt-karma-3.0.2.tgz", + "integrity": "sha512-imNhQO1bR1O7X6/3F5vO0o7mKy4xdkpSd40QVfxGO70cBAFcOqjv2Zu5QzsfEsSrppuu3N0vIQPbfBRjeGdpWg==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "grunt-legacy-log": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=", + "dev": true, + "requires": { + "colors": "~0.6.2", + "grunt-legacy-log-utils": "~0.1.1", + "hooker": "~0.2.3", + "lodash": "~2.4.1", + "underscore.string": "~2.3.3" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", + "dev": true + } + } + }, + "grunt-legacy-log-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", + "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=", + "dev": true, + "requires": { + "colors": "~0.6.2", + "lodash": "~2.4.1", + "underscore.string": "~2.3.3" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", + "dev": true + } + } + }, + "grunt-legacy-util": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", + "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=", + "dev": true, + "requires": { + "async": "~0.1.22", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~0.9.2", + "underscore.string": "~2.2.1", + "which": "~1.0.5" + } + }, + "grunt-saucelabs": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/grunt-saucelabs/-/grunt-saucelabs-4.0.4.tgz", + "integrity": "sha1-OLFDJmIukE3rNS7Ow0NHMCAZ7hw=", + "dev": true, + "requires": { + "colors": "~0.6.0", + "request": "~2.12.0", + "saucelabs": "~0.0.7", + "wd": "~0.0.26" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + } + } + }, + "grunt-template": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/grunt-template/-/grunt-template-0.2.3.tgz", + "integrity": "sha1-JBVa/qeJhL5nMMHHc7uS3odHo3A=", + "dev": true + }, + "gzip-size": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-0.1.1.tgz", + "integrity": "sha1-rjNIO2/IIk6DQilt4Qjvk3V/duA=", + "dev": true, + "requires": { + "concat-stream": "^1.4.1", + "zlib-browserify": "^0.0.3" + } + }, + "har-validator": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=", + "dev": true, + "requires": { + "bluebird": "^2.9.30", + "chalk": "^1.0.0", + "commander": "^2.8.1", + "is-my-json-valid": "^2.12.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hawk": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-0.13.1.tgz", + "integrity": "sha1-NheViCH1gxHk1/beKR/KZitBLvQ=", + "dev": true, + "requires": { + "boom": "0.4.x", + "cryptiles": "0.2.x", + "hoek": "0.8.x", + "sntp": "0.2.x" + } + }, + "hoek": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.8.5.tgz", + "integrity": "sha1-Hp/XcO9+vgJ0rfy1sIBqAlpeTp8=", + "dev": true + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-signature": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.9.11.tgz", + "integrity": "sha1-nognFFcjFeZ5Cl0KeVXv/x8Z5lM=", + "dev": true, + "requires": { + "asn1": "0.1.11", + "assert-plus": "0.1.2", + "ctype": "0.5.2" + } + }, + "iconv-lite": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", + "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "js-yaml": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "dev": true, + "requires": { + "argparse": "~ 0.1.11", + "esprima": "~ 1.0.2" + } + }, + "json-stringify-safe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-4.0.0.tgz", + "integrity": "sha1-d8JxqupUMC5o7+rMtWq78GqbGlQ=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true, + "optional": true + } + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "karma": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.1.0.tgz", + "integrity": "sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "karma-chai": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", + "integrity": "sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o=", + "dev": true + }, + "karma-chrome-launcher": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-0.1.12.tgz", + "integrity": "sha1-CsDiLlc2UPZUExL9ynlcOCTM+WI=", + "dev": true, + "requires": { + "which": "^1.0.9" + } + }, + "karma-firefox-launcher": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-0.1.7.tgz", + "integrity": "sha1-wF3YZTNpHmLzGVJZUJjovTV9OfM=", + "dev": true + }, + "karma-ie-launcher": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-0.1.5.tgz", + "integrity": "sha1-7kO9I49hxF3Y+8FpSxOlDftaPhs=", + "dev": true + }, + "karma-mocha": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-0.1.10.tgz", + "integrity": "sha1-Ke1R1LEhrxNzRE7FVbIKkFv0K5I=", + "dev": true + }, + "karma-safari-launcher": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/karma-safari-launcher/-/karma-safari-launcher-0.1.1.tgz", + "integrity": "sha1-pjgKzKtgpYP91iT0G5o/EP30EAg=", + "dev": true + }, + "karma-sauce-launcher": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-0.2.14.tgz", + "integrity": "sha1-5C5BJRfF9AU0yLun0Uu08Qcntqc=", + "dev": true, + "requires": { + "q": "~0.9.6", + "sauce-connect-launcher": "~0.11.1", + "saucelabs": "~0.1.0", + "wd": "~0.3.4" + }, + "dependencies": { + "archiver": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.14.4.tgz", + "integrity": "sha1-W53bn17hzu8hy487Ag5iQOy0MVw=", + "dev": true, + "requires": { + "async": "~0.9.0", + "buffer-crc32": "~0.2.1", + "glob": "~4.3.0", + "lazystream": "~0.1.0", + "lodash": "~3.2.0", + "readable-stream": "~1.0.26", + "tar-stream": "~1.1.0", + "zip-stream": "~0.5.0" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "lodash": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz", + "integrity": "sha1-S/UKMkP5rrC6xBpV09WZBnWkYvs=", + "dev": true + } + } + }, + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", + "dev": true + }, + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, + "ctype": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "dev": true, + "requires": { + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime-types": "~2.0.3" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } + } + }, + "glob": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz", + "integrity": "sha1-gPuwjKVA8jiszl0R0em8QedRc9M=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "hawk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", + "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=", + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", + "dev": true, + "requires": { + "asn1": "0.1.11", + "assert-plus": "^0.1.5", + "ctype": "0.5.3" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "lodash": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz", + "integrity": "sha1-AVnoaDL+/8bWHYUrEqlTuZSWvTI=", + "dev": true + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=", + "dev": true + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "dev": true, + "requires": { + "mime-db": "~1.12.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "oauth-sign": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz", + "integrity": "sha1-fb6uRPbKRU4fFoRR1jB0ZzWBPOM=", + "dev": true + }, + "qs": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", + "integrity": "sha1-9854jld33wtQENp/fE5zujJHD1o=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "request": { + "version": "2.55.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", + "integrity": "sha1-11wc32eddrsQD5v/4f5VG1wk6T0=", + "dev": true, + "requires": { + "aws-sign2": "~0.5.0", + "bl": "~0.9.0", + "caseless": "~0.9.0", + "combined-stream": "~0.0.5", + "forever-agent": "~0.6.0", + "form-data": "~0.2.0", + "har-validator": "^1.4.0", + "hawk": "~2.3.0", + "http-signature": "~0.10.0", + "isstream": "~0.1.1", + "json-stringify-safe": "~5.0.0", + "mime-types": "~2.0.1", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.6.0", + "qs": "~2.4.0", + "stringstream": "~0.0.4", + "tough-cookie": ">=0.12.0", + "tunnel-agent": "~0.4.0" + } + }, + "saucelabs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-0.1.1.tgz", + "integrity": "sha1-Xg6hzz1zXW6hX96Utb2mvBXSwG0=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "underscore.string": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.0.3.tgz", + "integrity": "sha1-Rhe4waJQz25QZPu7Nj0PqWzxRVI=", + "dev": true + }, + "wd": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/wd/-/wd-0.3.12.tgz", + "integrity": "sha1-P7Tx11n4yF3eU5PRczT/4D6bsyk=", + "dev": true, + "requires": { + "archiver": "~0.14.0", + "async": "~1.0.0", + "lodash": "~3.9.3", + "q": "~1.4.1", + "request": "~2.55.0", + "underscore.string": "~3.0.3", + "vargs": "~0.1.0" + }, + "dependencies": { + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + } + } + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazystream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", + "integrity": "sha1-GyXWPHcqTCDwpe0KnXf0hLbhaSA=", + "dev": true, + "requires": { + "readable-stream": "~1.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "lodash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", + "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", + "dev": true + }, + "log4js": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.3.2.tgz", + "integrity": "sha512-72GjgSP+ifL156MD/bXEhE7UlFLKS2KkCXujodb1nl1z6PpKhCfS+41dyNQ7zKi4iM49TQl+aWLEISXGLcGCCQ==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.2", + "streamroller": "^1.0.5" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "maxmin": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-0.1.0.tgz", + "integrity": "sha1-ldgcUonjqdMPf8fcVZwCTlAwydA=", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "gzip-size": "^0.1.0", + "pretty-bytes": "^0.1.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "dev": true + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mocha": { + "version": "1.21.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "integrity": "sha1-531pw3c7o+K0/mtijCi13UOICtw=", + "dev": true, + "requires": { + "commander": "2.0.0", + "debug": "*", + "diff": "1.0.7", + "glob": "3.2.3", + "growl": "1.8.x", + "jade": "0.26.3", + "mkdirp": "0.3.5" + }, + "dependencies": { + "commander": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", + "integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg=", + "dev": true + }, + "glob": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "integrity": "sha1-4xPusknHr/qlxHUoaw4RW1mDlGc=", + "dev": true, + "requires": { + "graceful-fs": "~2.0.0", + "inherits": "2", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "node-int64": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz", + "integrity": "sha1-LW5rLs5d6FiLQ9iNG8QbJs0fqE0=", + "dev": true + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "dev": true + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "oauth-sign": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", + "integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "pretty-bytes": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-0.1.2.tgz", + "integrity": "sha1-zZApTVihyk6KXQ+5yCJZmIgazwA=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.33.tgz", + "integrity": "sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz", + "integrity": "sha1-TeLmyzspCIyeTLwDv51C+5bOL3U=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz", + "integrity": "sha1-bgFQmP9RlouKPIGQAdXyyJvEsQc=", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + } + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.12.0.tgz", + "integrity": "sha1-EfRvILPQ9ISMY4OZHIB5CvFsjkg=", + "dev": true, + "requires": { + "form-data": "~0.0.3", + "mime": "~1.2.7" + }, + "dependencies": { + "form-data": { + "version": "0.0.3", + "bundled": true, + "dev": true, + "requires": { + "async": "~0.1.9", + "combined-stream": "0.0.3", + "mime": "~1.2.2" + }, + "dependencies": { + "async": { + "version": "0.1.9", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "0.0.3", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "0.0.5" + }, + "dependencies": { + "delayed-stream": { + "version": "0.0.5", + "bundled": true, + "dev": true + } + } + } + } + }, + "mime": { + "version": "1.2.7", + "bundled": true, + "dev": true + } + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sauce-connect-launcher": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-0.11.1.tgz", + "integrity": "sha1-ZfUdiJEkn9q6rxdZlzTeGQJHYSk=", + "dev": true, + "requires": { + "adm-zip": "~0.4.3", + "async": "0.9.0", + "lodash": "3.5.0", + "rimraf": "2.2.6" + }, + "dependencies": { + "async": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", + "integrity": "sha1-rDYTsdqb7RtHUQu0ZRuJMeRxRsc=", + "dev": true + }, + "lodash": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", + "integrity": "sha1-Gbs/TVEnjwuMgY7RRcdOz5/kDm0=", + "dev": true + }, + "rimraf": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", + "integrity": "sha1-xZWXVpsU2VatKcrMQr3d9fDqT0w=", + "dev": true + } + } + }, + "saucelabs": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-0.0.9.tgz", + "integrity": "sha1-CrP/0XCCpa6Sd+d+9rY5EPXbLGg=", + "dev": true + }, + "semver": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.1.0.tgz", + "integrity": "sha1-NWKUqQaQtph3TWLPNdfJH5g+coo=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "shelljs": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz", + "integrity": "sha1-kEktcv/MgVmXa6umL7D2iE8MM3g=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "sntp": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", + "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", + "dev": true, + "requires": { + "hoek": "0.9.x" + }, + "dependencies": { + "hoek": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=", + "dev": true + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "streamroller": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.5.tgz", + "integrity": "sha512-iGVaMcyF5PcUY0cPbW3xFQUXnr9O4RZXNBBjhuLZgrjLO4XCLLGfx4T2sGqygSeylUjwgWRsnNbT9aV0Zb8AYw==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tape": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-0.2.2.tgz", + "integrity": "sha1-ZMz6S37PSgBgAH5hcW1CR4FnFjc=", + "dev": true, + "requires": { + "deep-equal": "~0.0.0", + "defined": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "tar-stream": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.1.5.tgz", + "integrity": "sha1-vpIYwTDCACnhB7D5Z/sj3gV50Tw=", + "dev": true, + "requires": { + "bl": "^0.9.0", + "end-of-stream": "^1.0.0", + "readable-stream": "~1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tunnel-agent": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.3.0.tgz", + "integrity": "sha1-rWgbaPUyGtKCfEz7G31d8s/pQu4=", + "dev": true + }, + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", + "dev": true + }, + "underscore.string": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", + "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "vargs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz", + "integrity": "sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8=", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "wd": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/wd/-/wd-0.0.34.tgz", + "integrity": "sha1-yNAMzbsoYvkUt71ZNTMKU8+ohWI=", + "dev": true, + "requires": { + "archiver": "~0.4.6", + "async": "0.2.x", + "q": "0.9.x", + "request": "~2.21.0", + "underscore": "1.4.x", + "vargs": "~0.1.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "request": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.21.0.tgz", + "integrity": "sha1-VyirnEXlqHyZ2szVMCmLZnOoaNc=", + "dev": true, + "requires": { + "aws-sign": "~0.3.0", + "cookie-jar": "~0.3.0", + "forever-agent": "~0.5.0", + "form-data": "0.0.8", + "hawk": "~0.13.0", + "http-signature": "~0.9.11", + "json-stringify-safe": "~4.0.0", + "mime": "~1.2.9", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.3.0", + "qs": "~0.6.0", + "tunnel-agent": "~0.3.0" + } + }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "dev": true + } + } + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "zip-stream": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.2.tgz", + "integrity": "sha1-Mty8UG0Nq00hNyYlvX66rDwv/1Y=", + "dev": true, + "requires": { + "compress-commons": "~0.2.0", + "lodash": "~3.2.0", + "readable-stream": "~1.0.26" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "lodash": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz", + "integrity": "sha1-S/UKMkP5rrC6xBpV09WZBnWkYvs=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "zlib-browserify": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.3.tgz", + "integrity": "sha1-JAzNv9AgP6hCsTDe77FBQSLIzFA=", + "dev": true, + "requires": { + "tape": "~0.2.2" + } + } + } +} diff --git a/package.json b/package.json index f97c8b06..42058487 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "grunt-contrib-uglify": "^0.4.0", "grunt-gjslint": "^0.2.1", "closure-linter-wrapper": "^1.0.0", - "grunt-karma": "^0.8.2", - "karma": "^0.12.14", + "grunt-karma": "3.x", + "karma": "4.x", "karma-mocha": "^0.1.3", "karma-chai": "^0.1.0", "karma-chrome-launcher": "~0.1.4", @@ -37,7 +37,6 @@ "karma-sauce-launcher": "~0.2.3", "grunt-checkrepo": "~0.1.0", "grunt-saucelabs": "~4.0.2", - "grunt-checkrepo": "~0.1.0", "grunt-git-status": "~1.0.0", "grunt-template": "~0.2.3", "source-map": "~0.1.40" diff --git a/src/timing-utilities.js b/src/timing-utilities.js index 76264fcc..eb4ef7a5 100644 --- a/src/timing-utilities.js +++ b/src/timing-utilities.js @@ -237,7 +237,8 @@ var styleForCleaning = null; var numberString = '\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*'; var cubicBezierRe = new RegExp('cubic-bezier\\(' + numberString + ',' + numberString + ',' + numberString + ',' + numberString + '\\)'); - var stepRe = /steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/; + var step1Re = /steps\(\s*(\d+)\s*\)/; + var step2Re = /steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/; function normalizeEasing(easing) { if (!styleForCleaning) { @@ -260,9 +261,13 @@ if (cubicData) { return cubic.apply(this, cubicData.slice(1).map(Number)); } - var stepData = stepRe.exec(normalizedEasing); - if (stepData) { - return step(Number(stepData[1]), {'start': Start, 'middle': Middle, 'end': End}[stepData[2]]); + var step1Data = step1Re.exec(normalizedEasing); + if (step1Data) { + return step(Number(step1Data[1]), End); + } + var step2Data = step2Re.exec(normalizedEasing); + if (step2Data) { + return step(Number(step2Data[1]), {'start': Start, 'middle': Middle, 'end': End}[step2Data[2]]); } var preset = presets[normalizedEasing]; if (preset) { diff --git a/target-config.js b/target-config.js index 05caf2a5..49d2b94d 100644 --- a/target-config.js +++ b/target-config.js @@ -127,7 +127,9 @@ ]; var webAnimationsNextWebPlatformTests = [ - 'test/web-platform-tests/web-animations/**/*.html', + // TODO: Bring web-animations-next back up to speed with the spec to reenable testing everything. + // 'test/web-platform-tests/web-animations/**/*.html', + ...webAnimations1WebPlatformTests, ]; // This object specifies the source and test files for different Web Animation build targets. diff --git a/test/web-platform-tests b/test/web-platform-tests index d773d887..f9f56630 160000 --- a/test/web-platform-tests +++ b/test/web-platform-tests @@ -1 +1 @@ -Subproject commit d773d88789f2e4eb0c4cd46062f93f5ba4e0521d +Subproject commit f9f566304cb595c12c82cbe7a7cbba72e83bb28f diff --git a/test/web-platform-tests-expectations.js b/test/web-platform-tests-expectations.js index 22461d15..a5764b15 100644 --- a/test/web-platform-tests-expectations.js +++ b/test/web-platform-tests-expectations.js @@ -19,2681 +19,685 @@ module.exports = { withNativeFallback: true, }, failures: { - 'test/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context.html': { - 'Effect values reflect changes to font-size when computed style is not immediately flushed': - 'assert_equals: Effect value after updating font-size on parent element expected "300px" but got "150px"', - }, - }, - }, - { - configuration: { - target: 'web-animations', - withNativeFallback: false, - }, - failures: { - 'test/web-platform-tests/web-animations/interfaces/Animatable/animate-basic.html': { - 'Element.animate() creates an Animation object': - 'assert_equals: Returned object is an Animation expected "[object Animation]" but got "[object Object]"', - - 'Element.animate() does not accept property-indexed keyframes with an invalid easing value': - 'assert_throws: function "function () {\n div.animate(subtest.input, 2000);\n }" did not throw', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/cancel.html': { - 'Animated style is cleared after calling Animation.cancel()': - 'assert_not_equals: transform style is animated before cancelling got disallowed value "none"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/pause.html': { - 'pause() from idle': - 'assert_equals: initially pause-pending expected "pending" but got "paused"', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing.html': { - 'effect easing produces negative values 1 with keyframe easing cubic-bezier(0, 0, 0, 0)': - 'assert_approx_equals: The left of the animation should be approximately -29.501119758965654 at 250ms expected -29.501119758965654 +/- 0.01 but got 0', - - 'effect easing produces values greater than 1 with keyframe easing cubic-bezier(1, 1, 1, 1)': - 'assert_approx_equals: The left of the animation should be approximately 102.40666638411385 at 250ms expected 102.40666638411385 +/- 0.01 but got 100', - - 'effect easing which produces values greater than 1 and the tangent on the upper boundary is infinity with keyframe easing producing values greater than 1': - 'assert_approx_equals: The left of the animation should be approximately 100 at 240ms expected 100 +/- 0.01 but got 99.5333', - }, - }, - }, - - { - configuration: { - target: 'web-animations-next', - withNativeFallback: true, - }, - failures: { - 'test/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context.html': { - 'Effect values reflect changes to font-size when computed style is not immediately flushed': - 'assert_equals: Effect value after updating font-size on parent element expected "300px" but got "150px"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animatable/animate-basic.html': { - 'Element.animate() creates an Animation object': - 'assert_equals: Returned object is an Animation expected "[object Animation]" but got "[object Object]"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animatable/animate-effect.html': { - 'Element.animate() accepts a double as an options argument': - 'assert_equals: expected "auto" but got "none"', - - 'Element.animate() accepts a keyframe sequence where greater shorthand precedes lesser shorthand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence where lesser shorthand precedes greater shorthand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence where longhand precedes shorthand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence where shorthand precedes longhand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with a CSS variable reference': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with a CSS variable reference in a shorthand property': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with different composite values, but the same composite value for a given offset': - 'add compositing is not supported', - - 'Element.animate() accepts a keyframe sequence with different easing values, but the same easing value for a given offset': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with duplicate values for a given interior offset': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with duplicate values for offsets 0 and 1': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with repeated values at offset 1 with different easings': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property keyframe sequence with all omitted offsets': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property keyframe sequence with some omitted offsets': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property one keyframe sequence': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a one property one non-array value property-indexed keyframes specification': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a one property one value property-indexed keyframes specification': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a one property two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two keyframe sequence that needs to stringify its values': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification that needs to stringify its values': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification where the first value is invalid': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification where the second value is invalid': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a one shorthand property two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one shorthand property two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference in a shorthand property': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a property-indexed keyframes specification with an invalid value': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a single keyframe sequence with omitted offsets': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a two property (a shorthand and one of its component longhands) two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property four keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property keyframe sequence where one property is missing from the first keyframe': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a two property keyframe sequence where one property is missing from the last keyframe': - 'Animation to or from an underlying value is not yet supported.', - - 'Element.animate() accepts a two property keyframe sequence with some omitted offsets': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property property-indexed keyframes specification with different numbers of values': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts an absent options argument': - 'assert_equals: expected (string) "auto" but got (number) 0', - - 'Element.animate() creates an Animation object with a KeyframeEffect': - 'assert_equals: Returned Animation has a KeyframeEffect expected "[object KeyframeEffect]" but got "[object Object]"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animatable/animate-pseudo-element.html': { - 'CSSPseudoElement.animate() creates an Animation object': - 'document.getAnimations is not a function', - - 'CSSPseudoElement.animate() creates an Animation object targeting to the correct CSSPseudoElement object': - 'document.getAnimations is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/finish.html': { - 'Test finish() resolves finished promise synchronously with an animation without a target': - 'KeyframeEffectReadOnly is not defined', - - 'Test finish() while pause-pending with negative playbackRate': - 'FLAKY_TEST_RESULT', - - 'Test finish() while pause-pending with positive playbackRate': - 'FLAKY_TEST_RESULT', - - 'Test finish() while play-pending': - 'FLAKY_TEST_RESULT', - - 'Test finishing of animation with a current time past the effect end': - 'animation.effect.getComputedTiming is not a function', - - 'Test normally finished animation resolves finished promise synchronously with an animation without a target': - 'KeyframeEffectReadOnly is not defined', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/finished.html': { - 'Test finished promise is not resolved once the animation falls out finished state even though the current finished promise is generated soon after animation state became finished': - 'assert_unreached: Animation.finished should not be resolved Reached unreachable code', - - 'Test finished promise is not resolved when the animation falls out finished state immediately': - 'assert_unreached: Animation.finished should not be resolved Reached unreachable code', - - 'cancelling an idle animation still replaces the finished promise': - 'assert_not_equals: A redundant call to cancel() should still generate a new finished promise got disallowed value object "[object Promise]"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/oncancel.html': { - 'oncancel event is fired when animation.cancel() is called.': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/onfinish.html': { - 'onfinish event is fired when animation.finish() is called': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html': { - 'Test the effect of setting playbackRate while playing animation': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/reverse.html': { - 'reverse() when playbackRate < 0 and currentTime < 0': - 'assert_equals: reverse() should start playing from the start of animation time if the playbackRate < 0 and the currentTime < 0 expected 0 but got -200000', - - 'reverse() when playbackRate < 0 and currentTime < 0 and the target effect end is positive infinity': - 'assert_equals: reverse() should start playing from the start of animation time if the playbackRate < 0 and the currentTime < 0 and the target effect is positive infinity expected 0 but got -200000', - - 'reverse() when playbackRate < 0 and currentTime > effect end': - 'assert_equals: reverse() should start playing from the start of animation time if the playbackRate < 0 and the currentTime > effect end expected 0 but got 200000', - - 'reverse() when playbackRate > 0 and currentTime < 0': - 'assert_equals: reverse() should start playing from the animation effect end if the playbackRate > 0 and the currentTime < 0 expected 100000 but got -200000', - - 'reverse() when playbackRate > 0 and currentTime > effect end': - 'assert_equals: reverse() should start playing from the animation effect end if the playbackRate > 0 and the currentTime > effect end expected 100000 but got 200000', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/delay.html': { - 'Test adding a positive delay to an animation without a backwards fill makes it no longer active': - 'anim.effect.getComputedTiming is not a function', - - 'Test finishing an animation using a large negative delay': - 'anim.effect.getComputedTiming is not a function', - - 'Test seeking an animation by setting a negative delay': - 'anim.effect.getComputedTiming is not a function', - - 'set delay -100': - 'anim.effect.getComputedTiming is not a function', - - 'set delay 100': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/duration.html': { - 'set NaN duration in animate using a duration parameter': - 'assert_throws: function "function () {\n div.animate({ opacity: [ 0, 1 ] }, NaN);\n }" did not throw', - - 'set auto duration in animate as object': - 'assert_equals: set duration \'auto\' expected (string) "auto" but got (number) 0', - - 'set duration 123.45': - 'anim.effect.getComputedTiming is not a function', - - 'set duration Infinity': - 'anim.effect.getComputedTiming is not a function', - - 'set duration auto': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/easing.html': { - 'Change the easing while the animation is running': - 'anim.effect.getComputedTiming is not a function', - - 'ease function': - 'animation.effect.getComputedTiming is not a function', - - 'ease-in function': - 'animation.effect.getComputedTiming is not a function', - - 'ease-in-out function': - 'animation.effect.getComputedTiming is not a function', - - 'ease-out function': - 'animation.effect.getComputedTiming is not a function', - - 'easing function which produces values greater than 1': - 'animation.effect.getComputedTiming is not a function', - - 'linear function': - 'animation.effect.getComputedTiming is not a function', - - 'steps(end) function': - 'animation.effect.getComputedTiming is not a function', - - 'steps(start) function': - 'animation.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/endDelay.html': { - 'onfinish event is fired currentTime is after endTime': - 'FLAKY_TEST_RESULT', - - 'set endDelay -1000': - 'anim.effect.getComputedTiming is not a function', - - 'set endDelay 123.45': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/fill.html': { - 'set fill backwards': - 'anim.effect.getComputedTiming is not a function', - - 'set fill both': - 'anim.effect.getComputedTiming is not a function', - - 'set fill forwards': - 'anim.effect.getComputedTiming is not a function', - - 'set fill none': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/getAnimations.html': { - 'when currentTime changed in duration:1000, delay: -500, endDelay: -500': - 'assert_equals: when currentTime 0 expected 0 but got 1', - - 'when currentTime changed in duration:1000, delay: 500, endDelay: -500': - 'assert_equals: set currentTime 1000 expected 0 but got 1', - - 'when duration is changed': - 'assert_equals: set duration 102000 expected (object) object "[object Object]" but got (undefined) undefined', - - 'when endDelay is changed': - 'assert_equals: set negative endDelay so as endTime is less than currentTime expected 0 but got 1', - - 'when iterations is changed': - 'assert_equals: set iterations 10 expected (object) object "[object Object]" but got (undefined) undefined', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/getComputedStyle.html': { - 'change currentTime when fill forwards and endDelay is negative': - 'assert_equals: set currentTime same as endTime expected "0" but got "0.5"', - - 'changed duration immediately updates its computed styles': - 'FLAKY_TEST_RESULT', - - 'changed iterations immediately updates its computed styles': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html': { - 'Test invalid iterationStart value': - 'assert_throws: function "function () {\n anim.effect.timing.iterationStart = -1;\n }" threw object "ReferenceError: timing is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Test that changing the iterationStart affects computed timing during the active phase': - 'anim.effect.getComputedTiming is not a function', - - 'Test that changing the iterationStart affects computed timing when backwards-filling': - 'anim.effect.getComputedTiming is not a function', - - 'Test that changing the iterationStart affects computed timing when forwards-filling': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html': { - 'set iterations 2': - 'anim.effect.getComputedTiming is not a function', - - 'set iterations Infinity': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationTimeline/document-timeline.html': { - 'document.timeline.currentTime liveness tests': - 'assert_true: document.timeline.currentTime increases between script blocks expected true got false', - - 'document.timeline.currentTime value tests': - 'assert_true: document.timeline.currentTime is positive expected true got false', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationTimeline/idlharness.html': { - 'AnimationTimeline interface object length': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface object name': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: attribute currentTime': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: document.timeline must inherit property "currentTime" with the proper type (0)': - 'assert_inherits: property "currentTime" found on object expected in prototype chain', - - 'AnimationTimeline interface: existence and properties of interface object': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: existence and properties of interface prototype object': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: existence and properties of interface prototype object\'s "constructor" property': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'DocumentTimeline interface object length': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface object name': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface: existence and properties of interface object': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface: existence and properties of interface prototype object': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface: existence and properties of interface prototype object\'s "constructor" property': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline must be primary interface of document.timeline': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'Stringification of document.timeline': - 'assert_equals: class string of document.timeline expected "[object DocumentTimeline]" but got "[object Object]"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Document/getAnimations.html': { - 'Test document.getAnimations for non-animated content': - 'document.getAnimations is not a function', - - 'Test document.getAnimations for script-generated animations': - 'document.getAnimations is not a function', - - 'Test document.getAnimations with null target': - 'KeyframeEffectReadOnly is not defined', - - 'Test the order of document.getAnimations with script generated animations': - 'document.getAnimations is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html': { - 'Invalid KeyframeEffectReadOnly option by -Infinity': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by NaN': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a NaN duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a NaN iterations': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a blank easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a multi-value easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative Infinity duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative Infinity iterations': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative iterations': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a string duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a variable easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by an \'inherit\' easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by an \'initial\' easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by an unrecognized easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid easing [a blank easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [a multi-value easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [a variable easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [an \'inherit\' easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [an \'initial\' easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [an unrecognized easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'KeyframeEffect constructor creates an AnimationEffectTiming timing object': - 'assert_equals: expected "[object KeyframeEffect]" but got "[object Object]"', - - 'KeyframeEffectReadOnly constructor throws with a keyframe sequence with an invalid easing value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes not loosely sorted by offset': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes with an invalid composite value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes with an out-of-bounded negative offset': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes with an out-of-bounded positive offset': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with property-indexed keyframes with an invalid easing value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where greater shorthand precedes lesser shorthand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where lesser shorthand precedes greater shorthand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where longhand precedes shorthand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where shorthand precedes longhand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with a CSS variable reference': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with a CSS variable reference in a shorthand property': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with different composite values, but the same composite value for a given offset': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with different easing values, but the same easing value for a given offset': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with duplicate values for a given interior offset': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with duplicate values for offsets 0 and 1': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with repeated values at offset 1 with different easings': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property keyframe sequence with all omitted offsets': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property keyframe sequence with some omitted offsets': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property one keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property one non-array value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property one value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two keyframe sequence that needs to stringify its values': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification that needs to stringify its values': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification where the first value is invalid': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification where the second value is invalid': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one shorthand property two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one shorthand property two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with a CSS variable reference': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with an invalid value': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a single keyframe sequence with omitted offsets': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property four keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property keyframe sequence where one property is missing from the first keyframe': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property keyframe sequence where one property is missing from the last keyframe': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property keyframe sequence with some omitted offsets': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property property-indexed keyframes specification with different numbers of values': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a two property two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with no frames': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by +Infinity': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by a double value': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by a forwards fill': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by a normal KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by an Infinity duration': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by an Infinity iterations': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by an auto duration': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by an auto fill': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed by an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where greater shorthand precedes lesser shorthand roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where lesser shorthand precedes greater shorthand roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where longhand precedes shorthand roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where shorthand precedes longhand roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference in a shorthand property roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with different composite values, but the same composite value for a given offset roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with different easing values, but the same easing value for a given offset roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with duplicate values for a given interior offset roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with duplicate values for offsets 0 and 1 roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with repeated values at offset 1 with different easings roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property keyframe sequence with all omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property keyframe sequence with some omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property one keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property one non-array value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property one value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property two keyframe sequence that needs to stringify its values roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification that needs to stringify its values roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the first value is invalid roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the second value is invalid roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one shorthand property two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a one shorthand property two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with an invalid value roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a single keyframe sequence with omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property four keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the first keyframe roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the last keyframe roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property keyframe sequence with some omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property property-indexed keyframes specification with different numbers of values roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with a two property two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed with null target': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly constructed without any KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - - 'composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in KeyframeTimingOptions': - 'KeyframeEffectReadOnly is not defined', - - 'composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in property-indexed keyframes': - 'KeyframeEffectReadOnly is not defined', - - 'composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in regular keyframes': - 'KeyframeEffectReadOnly is not defined', - - 'easing values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in KeyframeTimingOptions': - 'KeyframeEffectReadOnly is not defined', - - 'easing values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in a property-indexed keyframe': - 'KeyframeEffectReadOnly is not defined', - - 'easing values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in regular keyframes': - 'KeyframeEffectReadOnly is not defined', - - 'the KeyframeEffectReadOnly constructor reads keyframe properties in the expected order': - 'KeyframeEffectReadOnly is not defined', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing-steps.html': { - 'Test bounds point of step(4, start) easing with iterationStart 0.75 and delay': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-end easing with iterationStart and delay': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-end easing with iterationStart not at a transition point': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing in keyframe': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with alternate direction': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with alternate-reverse direction': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with compositor': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with iterationStart and delay': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with iterationStart and reverse direction': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with iterationStart not at a transition point': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with reverse direction': - 'animation.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/getComputedTiming.html': { - 'getComputedTiming().activeDuration for a non-zero duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a non-zero duration and fractional iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a non-zero duration and integral iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a zero duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a zero duration and fractional iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a zero duration and infinite iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a zero duration and zero iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for an infinite duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for an infinite duration and fractional iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for an infinite duration and infinite iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for an infinite duration and zero iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for an non-zero duration and infinite iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for an non-zero duration and zero iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for a non-zero duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for a non-zero duration and non-default iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for a non-zero duration and non-zero delay': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for a non-zero duration, non-zero delay and non-default iteration': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for a zero duration and negative delay': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for an infinite duration': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for an infinite duration and delay': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for an infinite duration and negative delay': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for an infinite iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for an non-zero duration and negative delay': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().endTime for an non-zero duration and negative delay greater than active duration': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by +Infinity': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by a double value': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by a forwards fill': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by a normal KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an Infinity duration': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an Infinity iterations': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an auto duration': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an auto fill': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed without any KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html': { - 'non-animatable property \'animation\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animation\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationDelay\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationDelay\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationDirection\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationDirection\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationDuration\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationDuration\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationFillMode\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationFillMode\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationIterationCount\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationIterationCount\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationName\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationName\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationPlayState\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationPlayState\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationTimingFunction\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'animationTimingFunction\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'display\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'display\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transition\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transition\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionDelay\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionDelay\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionDuration\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionDuration\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionProperty\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionProperty\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionTimingFunction\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'transitionTimingFunction\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'unsupportedProperty\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'non-animatable property \'unsupportedProperty\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes.html': { - 'Keyframes can be replaced with a keyframe sequence where greater shorthand precedes lesser shorthand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence where lesser shorthand precedes greater shorthand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence where longhand precedes shorthand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence where shorthand precedes longhand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with a CSS variable reference': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with a CSS variable reference in a shorthand property': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with different composite values, but the same composite value for a given offset': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with different easing values, but the same easing value for a given offset': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with duplicate values for a given interior offset': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with duplicate values for offsets 0 and 1': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with repeated values at offset 1 with different easings': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property keyframe sequence with all omitted offsets': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property keyframe sequence with some omitted offsets': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property one keyframe sequence': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property one non-array value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property one value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property two keyframe sequence': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property two keyframe sequence that needs to stringify its values': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification that needs to stringify its values': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification where the first value is invalid': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification where the second value is invalid': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one shorthand property two keyframe sequence': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one shorthand property two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable reference': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable reference in a shorthand property': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a property-indexed keyframes specification with an invalid value': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a single keyframe sequence with omitted offsets': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property (a shorthand and one of its component longhands) two keyframe sequence': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property four keyframe sequence': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property keyframe sequence where one property is missing from the first keyframe': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property keyframe sequence where one property is missing from the last keyframe': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property keyframe sequence with some omitted offsets': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property property-indexed keyframes specification with different numbers of values': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property two keyframe sequence': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a two property two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with an empty keyframe': - 'effect.setKeyframes is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/setTarget.html': { - 'Test setting target from a valid target to another target': - 'assert_equals: Value of 1st element (currently not targeted) after changing the effect target expected "10px" but got "50px"', - - 'Test setting target from a valid target to null': - 'assert_equals: Value after clearing the target expected "10px" but got "50px"', - - 'Test setting target from null to a valid target': - 'assert_equals: Value at 50% progress after setting new target expected "50px" but got "10px"', - }, - - 'test/web-platform-tests/web-animations/timing-model/animation-effects/current-iteration.html': { - 'Test currentIteration during before and after phase when fill is none': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test integer iterations: iterations:3 iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - - 'Test zero iterations: iterations:0 iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html': { - 'Setting an unresolved start time an animation without an active timeline does not clear the current time': - 'Animation with null timeline is not supported', - - 'Setting an unresolved start time sets the hold time': - 'Value being assigned to Animation.startTime is not a finite floating-point value.', - - 'Setting the start time clears the hold time': - 'Value being assigned to Animation.startTime is not a finite floating-point value.', - - 'Setting the start time of an animation without an active timeline': - 'Animation with null timeline is not supported', - - 'Setting the start time resolves a pending pause task': - 'Value being assigned to Animation.startTime is not a finite floating-point value.', - - 'Setting the start time resolves a pending ready promise': - 'Value being assigned to Animation.startTime is not a finite floating-point value.', - - 'Setting the start time updates the finished state': - 'Value being assigned to Animation.startTime is not a finite floating-point value.', - }, - }, - }, - - { - configuration: { - target: 'web-animations-next', - withNativeFallback: false, - }, - failures: { - 'test/web-platform-tests/web-animations/interfaces/Animatable/animate-basic.html': { - 'Element.animate() creates an Animation object': - 'assert_equals: Returned object is an Animation expected "[object Animation]" but got "[object Object]"', - - 'Element.animate() does not accept property-indexed keyframes with an invalid easing value': - 'assert_throws: function "function () {\n div.animate(subtest.input, 2000);\n }" did not throw', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animatable/animate-effect.html': { - 'Element.animate() accepts a double as an options argument': - 'assert_equals: expected "auto" but got "none"', - - 'Element.animate() accepts a keyframe sequence where greater shorthand precedes lesser shorthand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence where lesser shorthand precedes greater shorthand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence where longhand precedes shorthand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence where shorthand precedes longhand': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with a CSS variable reference': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with a CSS variable reference in a shorthand property': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with different composite values, but the same composite value for a given offset': - 'add compositing is not supported', - - 'Element.animate() accepts a keyframe sequence with different easing values, but the same easing value for a given offset': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with duplicate values for a given interior offset': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with duplicate values for offsets 0 and 1': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a keyframe sequence with repeated values at offset 1 with different easings': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property keyframe sequence with all omitted offsets': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property keyframe sequence with some omitted offsets': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property one keyframe sequence': - 'Partial keyframes are not supported', - - 'Element.animate() accepts a one property one non-array value property-indexed keyframes specification': - 'Partial keyframes are not supported', - - 'Element.animate() accepts a one property one value property-indexed keyframes specification': - 'Partial keyframes are not supported', - - 'Element.animate() accepts a one property two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two keyframe sequence that needs to stringify its values': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification that needs to stringify its values': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification where the first value is invalid': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one property two value property-indexed keyframes specification where the second value is invalid': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one shorthand property two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a one shorthand property two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference in a shorthand property': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a property-indexed keyframes specification with an invalid value': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a single keyframe sequence with omitted offsets': - 'Partial keyframes are not supported', - - 'Element.animate() accepts a two property (a shorthand and one of its component longhands) two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property four keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property keyframe sequence where one property is missing from the first keyframe': - 'Partial keyframes are not supported', - - 'Element.animate() accepts a two property keyframe sequence where one property is missing from the last keyframe': - 'Partial keyframes are not supported', - - 'Element.animate() accepts a two property keyframe sequence with some omitted offsets': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property property-indexed keyframes specification with different numbers of values': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property two keyframe sequence': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts a two property two value property-indexed keyframes specification': - 'anim.effect.getKeyframes is not a function', - - 'Element.animate() accepts an absent options argument': - 'assert_equals: expected (string) "auto" but got (number) 0', - - 'Element.animate() creates an Animation object with a KeyframeEffect': - 'assert_equals: Returned Animation has a KeyframeEffect expected "[object KeyframeEffect]" but got "[object Object]"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animatable/animate-pseudo-element.html': { - 'CSSPseudoElement.animate() creates an Animation object': - 'document.getAnimations is not a function', - - 'CSSPseudoElement.animate() creates an Animation object targeting to the correct CSSPseudoElement object': - 'document.getAnimations is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/cancel.html': { - 'Animated style is cleared after calling Animation.cancel()': - 'assert_not_equals: transform style is animated before cancelling got disallowed value "none"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/finish.html': { - 'Test exceptions when finishing infinite animation': - 'assert_throws: function "function () {\n animation.finish();\n }" did not throw', - - 'Test exceptions when finishing non-running animation': - 'assert_throws: function "function () {\n animation.finish();\n }" did not throw', - - 'Test finish() resolves finished promise synchronously with an animation without a target': - 'KeyframeEffectReadOnly is not defined', - - 'Test finish() while pause-pending with negative playbackRate': - 'assert_equals: The play state of a pause-pending animation should become "finished" after finish() is called expected "finished" but got "paused"', - - 'Test finish() while pause-pending with positive playbackRate': - 'assert_equals: The play state of a pause-pending animation should become "finished" after finish() is called expected "finished" but got "paused"', - - 'Test finish() while paused': - 'assert_equals: The play state of a paused animation should become "finished" after finish() is called expected "finished" but got "paused"', - - 'Test finish() while play-pending': - 'assert_approx_equals: The start time of a play-pending animation should be set after calling finish() expected NaN +/- 0.0005 but got 0', - - 'Test finishing of animation with a current time past the effect end': - 'animation.effect.getComputedTiming is not a function', - - 'Test normally finished animation resolves finished promise synchronously with an animation without a target': - 'KeyframeEffectReadOnly is not defined', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/finished.html': { - 'Test finished promise changes for animation duration changes': - 'assert_equals: currentTime should be unchanged when duration shortened expected 50000 but got 25000', - - 'Test finished promise is not resolved once the animation falls out finished state even though the current finished promise is generated soon after animation state became finished': - 'assert_unreached: Animation.finished should not be resolved Reached unreachable code', - - 'Test finished promise is not resolved when the animation falls out finished state immediately': - 'assert_unreached: Animation.finished should not be resolved Reached unreachable code', - - 'cancelling an already-finished animation replaces the finished promise': - 'assert_not_equals: A new finished promise should be created when cancelling a finished animation got disallowed value object "[object Promise]"', - - 'cancelling an idle animation still replaces the finished promise': - 'assert_not_equals: A redundant call to cancel() should still generate a new finished promise got disallowed value object "[object Promise]"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/oncancel.html': { - 'oncancel event is fired when animation.cancel() is called.': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/onfinish.html': { - 'onfinish event is fired when animation.finish() is called': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/pause.html': { - 'pause() from idle': - 'assert_equals: initially pause-pending expected "pending" but got "paused"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html': { - 'Test the effect of setting playbackRate while playing animation': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/Animation/reverse.html': { - 'reverse() when playbackRate < 0 and currentTime < 0': - 'assert_equals: reverse() should start playing from the start of animation time if the playbackRate < 0 and the currentTime < 0 expected 0 but got -200000', - - 'reverse() when playbackRate < 0 and currentTime < 0 and the target effect end is positive infinity': - 'assert_equals: reverse() should start playing from the start of animation time if the playbackRate < 0 and the currentTime < 0 and the target effect is positive infinity expected 0 but got -200000', - - 'reverse() when playbackRate < 0 and currentTime > effect end': - 'assert_equals: reverse() should start playing from the start of animation time if the playbackRate < 0 and the currentTime > effect end expected 0 but got 200000', - - 'reverse() when playbackRate > 0 and currentTime < 0': - 'assert_equals: reverse() should start playing from the animation effect end if the playbackRate > 0 and the currentTime < 0 expected 100000 but got -200000', - - 'reverse() when playbackRate > 0 and currentTime > effect end': - 'assert_equals: reverse() should start playing from the animation effect end if the playbackRate > 0 and the currentTime > effect end expected 100000 but got 200000', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/delay.html': { - 'Test adding a positive delay to an animation without a backwards fill makes it no longer active': - 'anim.effect.getComputedTiming is not a function', - - 'Test finishing an animation using a large negative delay': - 'anim.effect.getComputedTiming is not a function', - - 'Test seeking an animation by setting a negative delay': - 'anim.effect.getComputedTiming is not a function', - - 'set delay -100': - 'anim.effect.getComputedTiming is not a function', - - 'set delay 100': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/duration.html': { - 'set 100 string duration in animate using an options object': - 'assert_throws: function "function () {\n div.animate({ opacity: [ 0, 1 ] }, { duration: \'100\' });\n }" did not throw', - - 'set NaN duration in animate using a duration parameter': - 'assert_throws: function "function () {\n div.animate({ opacity: [ 0, 1 ] }, NaN);\n }" did not throw', - - 'set NaN duration in animate using an options object': - 'assert_throws: function "function () {\n div.animate({ opacity: [ 0, 1 ] }, { duration: NaN });\n }" did not throw', - - 'set abc string duration in animate using an options object': - 'assert_throws: function "function () {\n div.animate({ opacity: [ 0, 1 ] }, { duration: \'abc\' });\n }" did not throw', - - 'set auto duration in animate as object': - 'assert_equals: set duration \'auto\' expected (string) "auto" but got (number) 0', - - 'set duration 123.45': - 'anim.effect.getComputedTiming is not a function', - - 'set duration Infinity': - 'anim.effect.getComputedTiming is not a function', - - 'set duration auto': - 'anim.effect.getComputedTiming is not a function', - - 'set duration string 100': - 'assert_throws: function "function () {\n anim.effect.timing.duration = \'100\';\n }" did not throw', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/easing.html': { - 'Change the easing while the animation is running': - 'anim.effect.getComputedTiming is not a function', - - 'ease function': - 'animation.effect.getComputedTiming is not a function', - - 'ease-in function': - 'animation.effect.getComputedTiming is not a function', - - 'ease-in-out function': - 'animation.effect.getComputedTiming is not a function', - - 'ease-out function': - 'animation.effect.getComputedTiming is not a function', - - 'easing function which produces values greater than 1': - 'animation.effect.getComputedTiming is not a function', - - 'linear function': - 'animation.effect.getComputedTiming is not a function', - - 'steps(end) function': - 'animation.effect.getComputedTiming is not a function', - - 'steps(start) function': - 'animation.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/endDelay.html': { - 'onfinish event is fired currentTime is after endTime': - 'FLAKY_TEST_RESULT', - - 'set endDelay -1000': - 'anim.effect.getComputedTiming is not a function', - - 'set endDelay 123.45': - 'anim.effect.getComputedTiming is not a function', - - 'set endDelay Infinity': - 'assert_throws: we can not assign Infinity to timing.endDelay function "function () {\n anim.effect.timing.endDelay = Infinity;\n }" did not throw', - - 'set endDelay negative Infinity': - 'assert_throws: we can not assign negative Infinity to timing.endDelay function "function () {\n anim.effect.timing.endDelay = -Infinity;\n }" did not throw', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/fill.html': { - 'set fill backwards': - 'anim.effect.getComputedTiming is not a function', - - 'set fill both': - 'anim.effect.getComputedTiming is not a function', - - 'set fill forwards': - 'anim.effect.getComputedTiming is not a function', - - 'set fill none': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/getAnimations.html': { - 'when currentTime changed in duration:1000, delay: -500, endDelay: -500': - 'assert_equals: when currentTime 0 expected 0 but got 1', - - 'when currentTime changed in duration:1000, delay: 500, endDelay: -500': - 'assert_equals: set currentTime 1000 expected 0 but got 1', - - 'when duration is changed': - 'assert_equals: set duration 102000 expected (object) object "[object Object]" but got (undefined) undefined', - - 'when endDelay is changed': - 'assert_equals: set negative endDelay so as endTime is less than currentTime expected 0 but got 1', - - 'when iterations is changed': - 'assert_equals: set iterations 10 expected (object) object "[object Object]" but got (undefined) undefined', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/getComputedStyle.html': { - 'change currentTime when fill forwards and endDelay is positive': - 'assert_equals: set currentTime just a little before duration expected "0.0001" but got "0"', - - 'changed duration immediately updates its computed styles': - 'FLAKY_TEST_RESULT', - - 'changed iterations immediately updates its computed styles': - 'FLAKY_TEST_RESULT', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html': { - 'Test invalid iterationStart value': - 'assert_throws: function "function () {\n anim.effect.timing.iterationStart = -1;\n }" threw object "ReferenceError: timing is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Test that changing the iterationStart affects computed timing during the active phase': - 'anim.effect.getComputedTiming is not a function', - - 'Test that changing the iterationStart affects computed timing when backwards-filling': - 'anim.effect.getComputedTiming is not a function', - - 'Test that changing the iterationStart affects computed timing when forwards-filling': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html': { - 'set iterations 2': - 'anim.effect.getComputedTiming is not a function', - - 'set iterations Infinity': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationTimeline/document-timeline.html': { - 'document.timeline.currentTime liveness tests': - 'assert_true: document.timeline.currentTime increases between script blocks expected true got false', - - 'document.timeline.currentTime value tests': - 'assert_true: document.timeline.currentTime is positive expected true got false', - }, - - 'test/web-platform-tests/web-animations/interfaces/AnimationTimeline/idlharness.html': { - 'AnimationTimeline interface object length': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface object name': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: attribute currentTime': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: document.timeline must inherit property "currentTime" with the proper type (0)': - 'assert_inherits: property "currentTime" found on object expected in prototype chain', - - 'AnimationTimeline interface: existence and properties of interface object': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: existence and properties of interface prototype object': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'AnimationTimeline interface: existence and properties of interface prototype object\'s "constructor" property': - 'assert_own_property: self does not have own property "AnimationTimeline" expected property "AnimationTimeline" missing', - - 'DocumentTimeline interface object length': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface object name': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface: existence and properties of interface object': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface: existence and properties of interface prototype object': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline interface: existence and properties of interface prototype object\'s "constructor" property': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'DocumentTimeline must be primary interface of document.timeline': - 'assert_own_property: self does not have own property "DocumentTimeline" expected property "DocumentTimeline" missing', - - 'Stringification of document.timeline': - 'assert_equals: class string of document.timeline expected "[object DocumentTimeline]" but got "[object Object]"', - }, - - 'test/web-platform-tests/web-animations/interfaces/Document/getAnimations.html': { - 'Test document.getAnimations for non-animated content': - 'document.getAnimations is not a function', - - 'Test document.getAnimations for script-generated animations': - 'document.getAnimations is not a function', - - 'Test document.getAnimations with null target': - 'KeyframeEffectReadOnly is not defined', - - 'Test the order of document.getAnimations with script generated animations': - 'document.getAnimations is not a function', - }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html': { - 'Invalid KeyframeEffectReadOnly option by -Infinity': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by NaN': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a NaN duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a NaN iterations': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a blank easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a multi-value easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative Infinity duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative Infinity iterations': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative iterations': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a negative value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a string duration': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by a variable easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by an \'inherit\' easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by an \'initial\' easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid KeyframeEffectReadOnly option by an unrecognized easing': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target,\n { left: ["10px", "20px"] },\n stest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'Invalid easing [a blank easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [a multi-value easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [a variable easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [an \'inherit\' easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [an \'initial\' easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'Invalid easing [an unrecognized easing] in keyframe sequence should be thrown': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "TypeError" ("TypeError")', - - 'KeyframeEffect constructor creates an AnimationEffectTiming timing object': - 'assert_equals: expected "[object KeyframeEffect]" but got "[object Object]"', - - 'KeyframeEffectReadOnly constructor throws with a keyframe sequence with an invalid easing value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes not loosely sorted by offset': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes with an invalid composite value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes with an out-of-bounded negative offset': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with keyframes with an out-of-bounded positive offset': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'KeyframeEffectReadOnly constructor throws with property-indexed keyframes with an invalid easing value': - 'assert_throws: function "function () {\n new KeyframeEffectReadOnly(target, subtest.input);\n }" threw object "ReferenceError: KeyframeEffectReadOnly is not defined" ("ReferenceError") expected object "[object Object]" ("TypeError")', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where greater shorthand precedes lesser shorthand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where lesser shorthand precedes greater shorthand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where longhand precedes shorthand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence where shorthand precedes longhand': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with a CSS variable reference': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with a CSS variable reference in a shorthand property': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with different composite values, but the same composite value for a given offset': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with different easing values, but the same easing value for a given offset': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with duplicate values for a given interior offset': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with duplicate values for offsets 0 and 1': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a keyframe sequence with repeated values at offset 1 with different easings': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property keyframe sequence with all omitted offsets': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property keyframe sequence with some omitted offsets': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property one keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property one non-array value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property one value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two keyframe sequence that needs to stringify its values': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', - - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification that needs to stringify its values': - 'KeyframeEffectReadOnly is not defined', + }, + }, + { + configuration: { + target: 'web-animations', + withNativeFallback: false, + }, + failures: { + 'test/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context.html': { + 'Effect values reflect changes to font-size from reparenting': + 'animation.ready is undefined', - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification where the first value is invalid': - 'KeyframeEffectReadOnly is not defined', + 'Effect values reflect changes to font-size when computed style is not immediately flushed': + 'animation.ready is undefined', - 'a KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification where the second value is invalid': - 'KeyframeEffectReadOnly is not defined', + 'Effect values reflect changes to target element': + 'animation.effect is undefined', + }, - 'a KeyframeEffectReadOnly can be constructed with a one shorthand property two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/interfaces/Animation/cancel.html': { + 'After cancelling an animation, it can still be re-used': + 'animation.ready is undefined', - 'a KeyframeEffectReadOnly can be constructed with a one shorthand property two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', + 'After cancelling an animation, it can still be seeked': + 'animation.effect is undefined', - 'a KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with a CSS variable reference': - 'KeyframeEffectReadOnly is not defined', + 'Animated style is cleared after calling Animation.cancel()': + 'animation.ready is undefined', + }, - 'a KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/interfaces/Animation/pause.html': { + 'pause() a running animation': + 'animation.ready is undefined', - 'a KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with an invalid value': - 'KeyframeEffectReadOnly is not defined', + 'pause() from idle': + 'assert_true: initially pause-pending expected true got undefined', - 'a KeyframeEffectReadOnly can be constructed with a single keyframe sequence with omitted offsets': - 'KeyframeEffectReadOnly is not defined', + 'pause() from idle with a negative playbackRate': + 'animation.ready is undefined', - 'a KeyframeEffectReadOnly can be constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'pause() on a finished animation': + 'animation.ready is undefined', + }, - 'a KeyframeEffectReadOnly can be constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/interfaces/Animation/play.html': { + 'play() throws when seeking an infinite-duration animation played in reverse': + 'animation.ready is undefined', + }, - 'a KeyframeEffectReadOnly can be constructed with a two property four keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/interfaces/Animation/startTime.html': { + 'startTime is resolved when running': + 'animation.ready is undefined', + }, - 'a KeyframeEffectReadOnly can be constructed with a two property keyframe sequence where one property is missing from the first keyframe': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/timing-model/animation-effects/active-time.html': { + 'Active time in active phase and negative start delay is the local time minus the start delay': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly can be constructed with a two property keyframe sequence where one property is missing from the last keyframe': - 'KeyframeEffectReadOnly is not defined', + 'Active time in active phase and no start delay is the local time': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly can be constructed with a two property keyframe sequence with some omitted offsets': - 'KeyframeEffectReadOnly is not defined', + 'Active time in active phase and positive start delay is the local time minus the start delay': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly can be constructed with a two property property-indexed keyframes specification with different numbers of values': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with \'both\' fill is the active duration': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly can be constructed with a two property two keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with backwards-only fill is unresolved': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly can be constructed with a two property two value property-indexed keyframes specification': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and negative end delay greater in magnitude than the active duration is zero': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly can be constructed with no frames': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and negative end delay greater in magnitude than the sum of the active duration and start delay is zero': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly constructed by +Infinity': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and negative end delay is the active duration + end delay': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly constructed by a double value': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and positive end delay is the active duration': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly constructed by a forwards fill': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill is the active duration': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly constructed by a normal KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill, zero-duration, and infinite iteration count is the active duration': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly constructed by an Infinity duration': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with no fill is unresolved': + 'anim.effect is undefined', - 'a KeyframeEffectReadOnly constructed by an Infinity iterations': - 'KeyframeEffectReadOnly is not defined', + 'Active time in before phase': + 'anim.effect is undefined', + }, - 'a KeyframeEffectReadOnly constructed by an auto duration': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/timing-model/animation-effects/simple-iteration-progress.html': { + 'Test end delay: duration:100 delay:1 fill:both endDelay:-100': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed by an auto fill': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: duration:100 delay:1 fill:both endDelay:-200': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed by an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: duration:100 delay:1 fill:both endDelay:-50': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where greater shorthand precedes lesser shorthand roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: duration:100 delay:1 fill:both endDelay:50': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where lesser shorthand precedes greater shorthand roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:-100': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where longhand precedes shorthand roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:-50': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence where shorthand precedes longhand roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:50': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference in a shorthand property roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterations:1 iterationStart:2 duration:100 delay:1 fill:both endDelay:-100': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterations:1 iterationStart:2 duration:100 delay:1 fill:both endDelay:-50': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with different composite values, but the same composite value for a given offset roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterations:2 duration:100 delay:1 fill:both endDelay:-100': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with different easing values, but the same easing value for a given offset roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with duplicate values for a given interior offset roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with duplicate values for offsets 0 and 1 roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a keyframe sequence with repeated values at offset 1 with different easings roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property keyframe sequence with all omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property keyframe sequence with some omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property one keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property one non-array value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property one value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property two keyframe sequence that needs to stringify its values roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification that needs to stringify its values roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the first value is invalid roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the second value is invalid roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one shorthand property two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a one shorthand property two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:0 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with an invalid value roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:0 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a single keyframe sequence with omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property four keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the first keyframe roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:3 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the last keyframe roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:3 duration:100 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property keyframe sequence with some omitted offsets roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property property-indexed keyframes specification with different numbers of values roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test negative playback rate: duration:0 delay:1 fill:both playbackRate:-1': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property two keyframe sequence roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test negative playback rate: duration:0 iterations:0 delay:1 fill:both playbackRate:-1': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with a two property two value property-indexed keyframes specification roundtrips': - 'KeyframeEffectReadOnly is not defined', + 'Test negative playback rate: duration:1 delay:1 fill:both playbackRate:-1': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed with null target': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:0 duration:0 delay:1 fill:both': + 'effect is undefined', - 'a KeyframeEffectReadOnly constructed without any KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:0 duration:100 delay:1 fill:both': + 'effect is undefined', - 'composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in KeyframeTimingOptions': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in property-indexed keyframes': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect is undefined', - 'composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in regular keyframes': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect is undefined', - 'easing values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in KeyframeTimingOptions': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect is undefined', - 'easing values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in a property-indexed keyframe': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:3 duration:0 delay:1 fill:both': + 'effect is undefined', - 'easing values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in regular keyframes': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:3 duration:100 delay:1 fill:both': + 'effect is undefined', - 'the KeyframeEffectReadOnly constructor reads keyframe properties in the expected order': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect is undefined', }, - - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing-steps.html': { - 'Test bounds point of step(4, start) easing with iterationStart 0.75 and delay': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-end easing with iterationStart and delay': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-end easing with iterationStart not at a transition point': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing in keyframe': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with alternate direction': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with alternate-reverse direction': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with compositor': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with iterationStart and delay': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with iterationStart and reverse direction': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with iterationStart not at a transition point': - 'animation.effect.getComputedTiming is not a function', - - 'Test bounds point of step-start easing with reverse direction': - 'animation.effect.getComputedTiming is not a function', + }, + }, + { + configuration: { + target: 'web-animations-next', + withNativeFallback: true, + }, + failures: { + 'test/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context.html': { + 'Effect values reflect changes to target element': + 'assert_equals: Effect value after updating target element expected "300px" but got "0px"', }, - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing.html': { - 'effect easing produces negative values 1 with keyframe easing cubic-bezier(0, 0, 0, 0)': - 'assert_approx_equals: The left of the animation should be approximately -29.501119758965654 at 250ms expected -29.501119758965654 +/- 0.01 but got 0', - - 'effect easing produces values greater than 1 with keyframe easing cubic-bezier(1, 1, 1, 1)': - 'assert_approx_equals: The left of the animation should be approximately 102.40666638411385 at 250ms expected 102.40666638411385 +/- 0.01 but got 100', - - 'effect easing which produces values greater than 1 and the tangent on the upper boundary is infinity with keyframe easing producing values greater than 1': - 'assert_approx_equals: The left of the animation should be approximately 100 at 240ms expected 100 +/- 0.01 but got 99.5333', + 'test/web-platform-tests/web-animations/interfaces/Animation/cancel.html': { + 'After cancelling an animation, it can still be seeked': + 'animation.effect.updateTiming is not a function', }, - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/getComputedTiming.html': { - 'getComputedTiming().activeDuration for a non-zero duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a non-zero duration and fractional iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a non-zero duration and integral iteration count': - 'KeyframeEffectReadOnly is not defined', - - 'getComputedTiming().activeDuration for a zero duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/interfaces/Animation/pause.html': { + 'pause() from idle': + 'assert_true: initially pause-pending expected true got undefined', + }, - 'getComputedTiming().activeDuration for a zero duration and fractional iteration count': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/interfaces/Animation/startTime.html': { + 'startTime is resolved when running': + 'assert_greater_than: startTime when running expected a number but got a "object"', + }, - 'getComputedTiming().activeDuration for a zero duration and infinite iteration count': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/timing-model/animation-effects/active-time.html': { + 'Active time in active phase and negative start delay is the local time minus the start delay': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for a zero duration and zero iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in active phase and no start delay is the local time': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', + 'Active time in active phase and positive start delay is the local time minus the start delay': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for an infinite duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with \'both\' fill is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for an infinite duration and fractional iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with backwards-only fill is unresolved': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for an infinite duration and infinite iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and negative end delay greater in magnitude than the active duration is zero': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for an infinite duration and zero iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and negative end delay greater in magnitude than the sum of the active duration and start delay is zero': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for an non-zero duration and infinite iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and negative end delay is the active duration + end delay': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().activeDuration for an non-zero duration and zero iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill and positive end delay is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for a non-zero duration and default iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for a non-zero duration and non-default iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with forwards fill, zero-duration, and infinite iteration count is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for a non-zero duration and non-zero delay': - 'KeyframeEffectReadOnly is not defined', + 'Active time in after phase with no fill is unresolved': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for a non-zero duration, non-zero delay and non-default iteration': - 'KeyframeEffectReadOnly is not defined', + 'Active time in before phase': + 'anim.effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for a zero duration and negative delay': - 'KeyframeEffectReadOnly is not defined', + 'Active time when the local time is unresolved, is unresolved': + 'effect.getComputedTiming is not a function', + }, - 'getComputedTiming().endTime for an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', + 'test/web-platform-tests/web-animations/timing-model/animation-effects/simple-iteration-progress.html': { + 'Test end delay: duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for an infinite duration': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: duration:100 delay:1 fill:both endDelay:-200': + 'effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for an infinite duration and delay': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: duration:100 delay:1 fill:both endDelay:-50': + 'effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for an infinite duration and negative delay': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: duration:100 delay:1 fill:both endDelay:50': + 'effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for an infinite iteration count': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for an non-zero duration and negative delay': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:-50': + 'effect.getComputedTiming is not a function', - 'getComputedTiming().endTime for an non-zero duration and negative delay greater than active duration': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:50': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by +Infinity': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterations:1 iterationStart:2 duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by a double value': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterations:1 iterationStart:2 duration:100 delay:1 fill:both endDelay:-50': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by a forwards fill': - 'KeyframeEffectReadOnly is not defined', + 'Test end delay: iterations:2 duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by a normal KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an Infinity duration': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an Infinity iterations': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an auto duration': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an auto fill': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed by an empty KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'values of getComputedTiming() when a KeyframeEffectReadOnly is constructed without any KeyframeEffectOptions object': - 'KeyframeEffectReadOnly is not defined', - }, + 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html': { - 'non-animatable property \'animation\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animation\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationDelay\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationDelay\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationDirection\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationDirection\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationDuration\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationDuration\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationFillMode\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationFillMode\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationIterationCount\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationIterationCount\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:0 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationName\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:0 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationName\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationPlayState\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationPlayState\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationTimingFunction\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'animationTimingFunction\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:3 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'display\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:3 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'display\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test integer iterations: iterations:3 iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transition\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test negative playback rate: duration:0 delay:1 fill:both playbackRate:-1': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transition\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test negative playback rate: duration:0 iterations:0 delay:1 fill:both playbackRate:-1': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionDelay\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test negative playback rate: duration:1 delay:1 fill:both playbackRate:-1': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionDelay\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:0 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionDuration\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:0 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionDuration\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:0 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionProperty\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:2.5 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionProperty\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:2.5 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionTimingFunction\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:2.5 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'transitionTimingFunction\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:3 duration:0 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'unsupportedProperty\' is not accessed when using a keyframe sequence': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:3 duration:100 delay:1 fill:both': + 'effect.getComputedTiming is not a function', - 'non-animatable property \'unsupportedProperty\' is not accessed when using a property-indexed keyframe object': - 'KeyframeEffectReadOnly is not defined', + 'Test zero iterations: iterations:0 iterationStart:3 duration:Infinity delay:1 fill:both': + 'effect.getComputedTiming is not a function', + }, + }, + }, + { + configuration: { + target: 'web-animations-next', + withNativeFallback: false, + }, + failures: { + 'test/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context.html': { + 'Effect values reflect changes to target element': + 'assert_equals: Effect value after updating target element expected "300px" but got "0px"', }, - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes.html': { - 'Keyframes can be replaced with a keyframe sequence where greater shorthand precedes lesser shorthand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence where lesser shorthand precedes greater shorthand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence where longhand precedes shorthand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence where shorthand precedes longhand': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with a CSS variable reference': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with a CSS variable reference in a shorthand property': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with different composite values, but the same composite value for a given offset': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with different easing values, but the same easing value for a given offset': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with duplicate values for a given interior offset': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with duplicate values for offsets 0 and 1': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a keyframe sequence with repeated values at offset 1 with different easings': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property keyframe sequence with all omitted offsets': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property keyframe sequence with some omitted offsets': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property one keyframe sequence': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property one non-array value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property one value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', - - 'Keyframes can be replaced with a one property two keyframe sequence': - 'effect.setKeyframes is not a function', + 'test/web-platform-tests/web-animations/interfaces/Animation/cancel.html': { + 'After cancelling an animation, it can still be seeked': + 'animation.effect.updateTiming is not a function', + }, - 'Keyframes can be replaced with a one property two keyframe sequence that needs to stringify its values': - 'effect.setKeyframes is not a function', + 'test/web-platform-tests/web-animations/interfaces/Animation/pause.html': { + 'pause() from idle': + 'assert_true: initially pause-pending expected true got undefined', + }, - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', + 'test/web-platform-tests/web-animations/timing-model/animation-effects/active-time.html': { + 'Active time in active phase and negative start delay is the local time minus the start delay': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification that needs to stringify its values': - 'effect.setKeyframes is not a function', + 'Active time in active phase and no start delay is the local time': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification where the first value is invalid': - 'effect.setKeyframes is not a function', + 'Active time in active phase and positive start delay is the local time minus the start delay': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a one property two value property-indexed keyframes specification where the second value is invalid': - 'effect.setKeyframes is not a function', + 'Active time in after phase with \'both\' fill is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a one shorthand property two keyframe sequence': - 'effect.setKeyframes is not a function', + 'Active time in after phase with backwards-only fill is unresolved': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a one shorthand property two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', + 'Active time in after phase with forwards fill and negative end delay greater in magnitude than the active duration is zero': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable reference': - 'effect.setKeyframes is not a function', + 'Active time in after phase with forwards fill and negative end delay greater in magnitude than the sum of the active duration and start delay is zero': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable reference in a shorthand property': - 'effect.setKeyframes is not a function', + 'Active time in after phase with forwards fill and negative end delay is the active duration + end delay': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a property-indexed keyframes specification with an invalid value': - 'effect.setKeyframes is not a function', + 'Active time in after phase with forwards fill and positive end delay is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a single keyframe sequence with omitted offsets': - 'effect.setKeyframes is not a function', + 'Active time in after phase with forwards fill is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property (a shorthand and one of its component longhands) two keyframe sequence': - 'effect.setKeyframes is not a function', + 'Active time in after phase with forwards fill, zero-duration, and infinite iteration count is the active duration': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', + 'Active time in after phase with no fill is unresolved': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property four keyframe sequence': - 'effect.setKeyframes is not a function', + 'Active time in before phase': + 'anim.effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property keyframe sequence where one property is missing from the first keyframe': - 'effect.setKeyframes is not a function', + 'Active time when the local time is unresolved, is unresolved': + 'effect.getComputedTiming is not a function', + }, - 'Keyframes can be replaced with a two property keyframe sequence where one property is missing from the last keyframe': - 'effect.setKeyframes is not a function', + 'test/web-platform-tests/web-animations/timing-model/animation-effects/simple-iteration-progress.html': { + 'Test end delay: duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property keyframe sequence with some omitted offsets': - 'effect.setKeyframes is not a function', + 'Test end delay: duration:100 delay:1 fill:both endDelay:-200': + 'effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property property-indexed keyframes specification with different numbers of values': - 'effect.setKeyframes is not a function', + 'Test end delay: duration:100 delay:1 fill:both endDelay:-50': + 'effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property two keyframe sequence': - 'effect.setKeyframes is not a function', + 'Test end delay: duration:100 delay:1 fill:both endDelay:50': + 'effect.getComputedTiming is not a function', - 'Keyframes can be replaced with a two property two value property-indexed keyframes specification': - 'effect.setKeyframes is not a function', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', - 'Keyframes can be replaced with an empty keyframe': - 'effect.setKeyframes is not a function', - }, + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:-50': + 'effect.getComputedTiming is not a function', - 'test/web-platform-tests/web-animations/interfaces/KeyframeEffect/setTarget.html': { - 'Test setting target from a valid target to another target': - 'assert_equals: Value of 1st element (currently not targeted) after changing the effect target expected "10px" but got "50px"', + 'Test end delay: iterationStart:0.5 duration:100 delay:1 fill:both endDelay:50': + 'effect.getComputedTiming is not a function', - 'Test setting target from a valid target to null': - 'assert_equals: Value after clearing the target expected "10px" but got "50px"', + 'Test end delay: iterations:1 iterationStart:2 duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', - 'Test setting target from null to a valid target': - 'assert_equals: Value at 50% progress after setting new target expected "50px" but got "10px"', - }, + 'Test end delay: iterations:1 iterationStart:2 duration:100 delay:1 fill:both endDelay:-50': + 'effect.getComputedTiming is not a function', - 'test/web-platform-tests/web-animations/timing-model/animation-effects/current-iteration.html': { - 'Test currentIteration during before and after phase when fill is none': - 'anim.effect.getComputedTiming is not a function', + 'Test end delay: iterations:2 duration:100 delay:1 fill:both endDelay:-100': + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test fractional iterations: iterations:3.5 iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test infinity iterations: iterations:Infinity iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test integer iterations: iterations:3 iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', + + 'Test negative playback rate: duration:0 delay:1 fill:both playbackRate:-1': + 'effect.getComputedTiming is not a function', + + 'Test negative playback rate: duration:0 iterations:0 delay:1 fill:both playbackRate:-1': + 'effect.getComputedTiming is not a function', + + 'Test negative playback rate: duration:1 delay:1 fill:both playbackRate:-1': + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:0 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:0 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:0 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:2.5 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:2.5 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:2.5 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:3 duration:0 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:3 duration:100 delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', + 'effect.getComputedTiming is not a function', 'Test zero iterations: iterations:0 iterationStart:3 duration:Infinity delay:1 fill:both': - 'anim.effect.getComputedTiming is not a function', - }, - - 'test/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html': { - 'Setting an unresolved start time an animation without an active timeline does not clear the current time': - 'Animation with null timeline is not supported', - - 'Setting an unresolved start time sets the hold time': - 'assert_equals: expected "running" but got "idle"', - - 'Setting the start time clears the hold time': - 'assert_approx_equals: The current time is calculated from the start time, not the hold time expected 2000 +/- 0.0005 but got 1000', - - 'Setting the start time of an animation without an active timeline': - 'Animation with null timeline is not supported', - - 'Setting the start time resolves a pending pause task': - 'assert_equals: Animation is in pause-pending state expected "pending" but got "paused"', - - 'Setting the start time updates the finished state': - 'assert_equals: Seeked to finished state using the startTime expected "finished" but got "idle"', + 'effect.getComputedTiming is not a function', }, }, }, - ], };