diff options
author | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2020-05-04 21:35:21 +1000 |
---|---|---|
committer | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2020-05-04 21:35:21 +1000 |
commit | c8cb22863bf8c3ac157f6098be9154908aea9ec2 (patch) | |
tree | b27b1bf6ec4c90bbd0cb335e26bb9ece504285d2 | |
parent | 59f09a1a2317e57d13bbe8f60e1949cc82199ead (diff) | |
download | svg.js-c8cb22863bf8c3ac157f6098be9154908aea9ec2.tar.gz svg.js-c8cb22863bf8c3ac157f6098be9154908aea9ec2.zip |
Fixed IE Polyfills, got rid of ArrayPolyfill in favour of babels own transforms, updated dependencies, finished tests, removed old es5 tests
67 files changed, 3762 insertions, 15646 deletions
diff --git a/.config/karma.conf.js b/.config/karma.conf.js index 660c1d2..67667c7 100644 --- a/.config/karma.conf.js +++ b/.config/karma.conf.js @@ -1,5 +1,4 @@ // Karma configuration - const karmaCommon = require('./karma.conf.common.js') let chromeBin = 'ChromeHeadless' @@ -20,30 +19,52 @@ if (process.platform === 'linux') { module.exports = function (config) { config.set( Object.assign(karmaCommon(config), { + files: [ + 'spec/RAFPlugin.js', + { + pattern: 'spec/fixtures/fixture.css', + included: false, + served: true + }, + { + pattern: 'spec/fixtures/pixel.png', + included: false, + served: true + }, + { + pattern: 'src/**/*.js', + included: false, + served: true, + type: 'modules' + }, + { + pattern: 'spec/helpers.js', + included: false, + served: true, + type: 'module' + }, + { + pattern: 'spec/setupBrowser.js', + included: true, + type: 'module' + }, + { + pattern: 'spec/spec/*/**/*.js', + included: true, + type: 'module' + } + ], + // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { - 'dist/svg.js': ['coverage'] + 'src/**/*.js': ['coverage'] }, - // this specifies which plugins karma should load - // by default all karma plugins, starting with `karma-` will load - // so if you are really puzzled why something isn't working, then comment - // out plugins: [] - it's here to make karma load faster - // get possible karma plugins by `ls node_modules | grep 'karma-*'` - plugins: [ - 'karma-chrome-launcher', - 'karma-coverage', - 'karma-firefox-launcher', - 'karma-jasmine' - ], - // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['progress', 'coverage'], - - // configure the coverage reporter coverageReporter: { // Specify a reporter type. type: 'lcov', @@ -51,6 +72,11 @@ module.exports = function (config) { subdir: function (browser) { // normalization process to keep a consistent browser name accross different OS return browser.toLowerCase().split(/[ /-]/)[0] // output the results into: './coverage/firefox/' + }, + instrumenterOptions: { + istanbul: { + esModules: true + } } }, diff --git a/.config/karma.es6.js b/.config/karma.es6.js deleted file mode 100644 index 8802c2d..0000000 --- a/.config/karma.es6.js +++ /dev/null @@ -1,66 +0,0 @@ -const karmaCommon = require('./karma.conf.common.js') - -module.exports = function (config) { - config.set( - Object.assign(karmaCommon(config), { - files: [ - 'spec/RAFPlugin.js', - { - pattern: 'spec/fixtures/fixture.css', - included: false, - served: true - }, - { - pattern: 'spec/fixtures/pixel.png', - included: false, - served: true - }, - { - pattern: 'src/**/*.js', - included: false, - served: true, - type: 'modules' - }, - { - pattern: 'spec/helpers.js', - included: false, - served: true, - type: 'module' - }, - { - pattern: 'spec/setupBrowser.js', - included: true, - type: 'module' - }, - { - pattern: 'spec/spec/*/**/*.js', - included: true, - type: 'module' - } - ], - - preprocessors: { - 'src/**/*.js': ['coverage'] - }, - - reporters: ['progress', 'coverage'], - coverageReporter: { - // Specify a reporter type. - type: 'lcov', - dir: 'coverage/', - subdir: function (browser) { - // normalization process to keep a consistent browser name accross different OS - return browser.toLowerCase().split(/[ /-]/)[0] // output the results into: './coverage/firefox/' - }, - instrumenterOptions: { - istanbul: { - esModules: true - } - } - }, - browsers: ['ChromeHeadless', 'FirefoxHeadless'], - singleRun: false, - concurrency: Infinity - }) - ) -} diff --git a/.config/polyfillList.js b/.config/polyfillList.js deleted file mode 100644 index c856f61..0000000 --- a/.config/polyfillList.js +++ /dev/null @@ -1,8 +0,0 @@ -import 'core-js/modules/es.object.assign' -import 'core-js/modules/es.object.keys' -import 'core-js/modules/es.function.name' -import 'core-js/modules/es.symbol' -import 'core-js/modules/es.set' -import 'core-js/modules/es.array.includes' -import 'core-js/modules/es.string.includes' -import 'core-js/modules/es.array.from' diff --git a/.config/rollup.config.js b/.config/rollup.config.js index 433bcd9..bcbab0c 100644 --- a/.config/rollup.config.js +++ b/.config/rollup.config.js @@ -1,10 +1,9 @@ -import babel from 'rollup-plugin-babel' import * as pkg from '../package.json' +import babel from '@rollup/plugin-babel' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' import filesize from 'rollup-plugin-filesize' -// import { terser } from 'rollup-plugin-terser' -import resolve from 'rollup-plugin-node-resolve' -import commonjs from 'rollup-plugin-commonjs' -import { uglify } from 'rollup-plugin-uglify' +import { terser } from 'rollup-plugin-terser' const buildDate = Date() @@ -21,22 +20,41 @@ const headerLong = `/*! const headerShort = `/*! ${pkg.name} v${pkg.version} ${pkg.license}*/;` -const getBabelConfig = (targets, corejs = false) => babel({ - include: 'src/**', - runtimeHelpers: true, - babelrc: false, - presets: [['@babel/preset-env', { - modules: false, - targets: targets || pkg.browserslist, - useBuiltIns: 'usage', - corejs: 3 - }]], - plugins: [['@babel/plugin-transform-runtime', { - corejs: corejs, - helpers: true, - useESModules: true - }]] -}) +const getBabelConfig = (node = false) => { + + let targets = pkg.browserslist + const plugins = [ + ['@babel/plugin-transform-classes'], + ['@babel/plugin-transform-runtime', { + corejs: 3, + helpers: true, + useESModules: true, + version: "^7.9.6", + regenerator: false + }] + ] + + if (node) { + plugins.shift() + targets = 'maintained node versions' + } + + return babel({ + include: 'src/**', + babelHelpers: 'runtime', + babelrc: false, + presets: [['@babel/preset-env', { + modules: false, + targets: targets || pkg.browserslist, + // useBuildins and plugin-transform-runtime are mutually exclusive + // https://github.com/babel/babel/issues/10271#issuecomment-528379505 + // use babel-polyfills when released + useBuiltIns: false, + bugfixes: true + }]], + plugins + }) +} // When few of these get mangled nothing works anymore // We loose literally nothing by let these unmangled @@ -94,7 +112,7 @@ const config = (node, min, esm = false) => ({ commonjs(), getBabelConfig(node && 'maintained node versions'), filesize(), - !min ? {} : uglify({ + !min ? {} : terser({ mangle: { reserved: classes }, @@ -102,10 +120,11 @@ const config = (node, min, esm = false) => ({ preamble: headerShort } }) - ] + ], + //external: ['@babel/runtime', '@babel/runtime-corejs3'] }) -// [node, minified] +// [node, minified, esm] const modes = [[false], [false, true], [true], [false, false, true]] export default modes.map(m => config(...m)) diff --git a/.config/rollup.polyfills.js b/.config/rollup.polyfills.js index 1df059a..f089ceb 100644 --- a/.config/rollup.polyfills.js +++ b/.config/rollup.polyfills.js @@ -1,22 +1,21 @@ -import resolve from 'rollup-plugin-node-resolve' -import commonjs from 'rollup-plugin-commonjs' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' import filesize from 'rollup-plugin-filesize' // We dont need babel. All polyfills are compatible const config = (ie) => ({ - input: ie ? './.config/polyfillListIE.js' : './.config/polyfillList.js', + input: './.config/polyfillListIE.js', output: { - file: ie ? 'dist/polyfillsIE.js' : 'dist/polyfills.js', - sourceMap: false, + file: 'dist/polyfillsIE.js', format: 'iife' }, plugins: [ resolve({ browser: true }), commonjs(), - terser(), + //terser(), filesize() ] }) -export default [false, true].map(config) +export default [true].map(config) diff --git a/.config/rollup.tests.js b/.config/rollup.tests.js index e524a79..3620149 100644 --- a/.config/rollup.tests.js +++ b/.config/rollup.tests.js @@ -1,5 +1,33 @@ -import babel from 'rollup-plugin-babel' -import multiEntry from 'rollup-plugin-multi-entry' +import * as pkg from '../package.json' +import babel from '@rollup/plugin-babel' +import multiEntry from '@rollup/plugin-multi-entry' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' + +const getBabelConfig = (targets) => babel({ + include: ['src/**', 'spec/**/*'], + babelHelpers: 'runtime', + babelrc: false, + presets: [['@babel/preset-env', { + modules: false, + targets: targets || pkg.browserslist, + // useBuildins and plugin-transform-runtime are mutually exclusive + // https://github.com/babel/babel/issues/10271#issuecomment-528379505 + // use babel-polyfills when released + useBuiltIns: false, + // corejs: 3, + bugfixes: true + }]], + plugins: [ + ['@babel/plugin-transform-runtime', { + corejs: 3, + helpers: true, + useESModules: true, + version: "^7.9.6", + regenerator: false + }] + ] +}) export default { input: [ @@ -9,24 +37,13 @@ export default { output: { file: 'spec/es5TestBundle.js', name: 'SVGTests', - sourceMap: true, - format: 'iife' + format: 'iife', }, plugins: [ - babel({ - include: 'src/**', - runtimeHelpers: true, - babelrc: false, - presets: [['@babel/preset-env', { - modules: false - }]] - // plugins: [["@babel/plugin-transform-runtime", { - // corejs: false, - // helpers: true, - // regenerator: true, - // useESModules: true - // }]] - }), + resolve({ browser: true }), + commonjs(), + getBabelConfig(), multiEntry() - ] + ], + external: ['@babel/runtime', '@babel/runtime-corejs3'] } diff --git a/.travis.yml b/.travis.yml index 8c6ab1e..8ea60c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,5 +10,5 @@ install: - npm install - npm run build script: - - npm run test - - npm run test:es6
\ No newline at end of file + - npm test + - cat coverage/firefox/lcov.info | node_modules/.bin/coveralls
\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 07f71f1..46b4437 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,30 +5,43 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.8.3" } }, - "@babel/core": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", - "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", + "@babel/compat-data": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.6.tgz", + "integrity": "sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.4", - "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.4", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.3", - "@babel/types": "^7.6.3", - "convert-source-map": "^1.1.0", + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", @@ -53,799 +66,898 @@ } }, "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.6.3", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "@babel/helper-compilation-targets": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz", + "integrity": "sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/compat-data": "^7.9.6", + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.8.3" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", "dev": true, "requires": { - "@babel/types": "^7.5.5" + "@babel/types": "^7.8.3" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-module-transforms": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", "dev": true }, "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", "dev": true, "requires": { "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-replace-supers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", - "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.8.3" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helpers": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", - "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", "dev": true, "requires": { - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0" + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", - "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/plugin-external-helpers": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz", - "integrity": "sha512-QFmtcCShFkyAsNtdCM3lJPmRe1iB+vPZymlB4LnDIKEBj2yKQLQKtoxXxJ8ePT5fwMl4QGg303p4mB0UsSI2/g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.8.3.tgz", + "integrity": "sha512-mx0WXDDiIl5DwzMtzWGRSPugXi9BxROS05GQrhLNbEamhBiicgn994ibwkyiBH+6png7bm/yA7AUsvHyCXi4Vw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", - "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz", + "integrity": "sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", - "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", - "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-plugin-utils": "^7.8.3", "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", - "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", - "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", - "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", - "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz", + "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", - "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz", + "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz", + "integrity": "sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", - "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", "dev": true, "requires": { - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", - "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", "dev": true, "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-runtime": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", - "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz", + "integrity": "sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", "resolve": "^1.8.1", "semver": "^5.5.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", - "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", - "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/polyfill": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.6.0.tgz", - "integrity": "sha512-q5BZJI0n/B10VaQQvln1IlDK3BTBJFbADx7tv+oXDPIDZuTo37H5Adb9jhlXm/fEN4Y7/64qD9mnrJJG7rmaTw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.8.7.tgz", + "integrity": "sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w==", "dev": true, "requires": { "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" }, "dependencies": { "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true } } }, "@babel/preset-env": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", - "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz", + "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.3", - "@babel/plugin-transform-classes": "^7.5.5", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.6.2", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.6.2", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.3", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, "@babel/runtime": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", - "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, - "@babel/runtime-corejs2": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.6.3.tgz", - "integrity": "sha512-nuA2o+rgX2+PrNTZ063ehncVcg7sn+tU71BB81SaWRVUbGwCOlb0+yQA1e0QqmzOfRSYOxfvf8cosYqFbJEiwQ==", + "@babel/runtime-corejs3": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz", + "integrity": "sha512-6toWAfaALQjt3KMZQc6fABqZwUDDuWzz+cAfPhqyEnzxvdWOAkjwPNxgF8xlmo7OWLsSjaKjsskpKHRLaMArOA==", "dev": true, "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", - "dev": true - } + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" @@ -869,257 +981,234 @@ } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { - "esutils": "^2.0.2", + "@babel/helper-validator-identifier": "^7.9.5", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, - "@target/custom-event-polyfill": { - "version": "github:Adobe-Marketing-Cloud/custom-event-polyfill#2a28329ad98fdaf578054e2390f6ecd77d2eae91", - "from": "github:Adobe-Marketing-Cloud/custom-event-polyfill", - "dev": true - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "@npmcli/ci-detect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz", + "integrity": "sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA==", "dev": true }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "@npmcli/git": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.2.tgz", + "integrity": "sha512-uv9+EuP5YWluNPgkEOL+iyB/+MVt4U5PMBCfl+I8korKluFdiSp7RxjXYzpWM/wU4wXaROAUFiOiCMmBftonjw==", "dev": true, "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "@npmcli/promise-spawn": "^1.1.0", + "lru-cache": "^5.1.1", + "mkdirp": "^1.0.3", + "npm-pick-manifest": "^6.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "semver": "^7.3.2", + "unique-filename": "^1.1.1", + "which": "^2.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/node": { - "version": "10.12.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.11.tgz", - "integrity": "sha512-3iIOhNiPGTdcUNVCv9e5G7GotfvJJe2pc9w2UgDXlUwnxSZ3RgcUocIU+xYm+rTU54jIKih998QE4dMOyMN1NQ==", - "dev": true - }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "@npmcli/installed-package-contents": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.5.tgz", + "integrity": "sha512-aKIwguaaqb6ViwSOFytniGvLPb9SMCUm39TgM3SfUo7n0TxUMbwoXfpwyvQ4blm10lzbAwTsvjr7QZ85LvTi4A==", "dev": true, "requires": { - "@types/node": "*" + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1", + "read-package-json-fast": "^1.1.1", + "readdir-scoped-modules": "^1.1.0" } }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "@npmcli/promise-spawn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.2.0.tgz", + "integrity": "sha512-nFtqjVETliApiRdjbYwKwhlSHx2ZMagyj5b9YbNt0BWeeOVxJd47ZVE2u16vxDHyTOZvk+YLV7INwfAE9a2uow==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "infer-owner": "^1.0.4" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "@npmcli/run-script": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.3.1.tgz", + "integrity": "sha512-9Ea57XJjNLtBFRAaiKqqdoqRrL2QkM0vvCbMjPecljhog5IHupStPtZULbl0CoGN00N3lhLWJ4PaIEC0MGjqJw==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@npmcli/promise-spawn": "^1.2.0", + "infer-owner": "^1.0.4", + "node-gyp": "^6.1.0", + "read-package-json-fast": "^1.1.3" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "@rollup/plugin-babel": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.0.0.tgz", + "integrity": "sha512-YpVnwdUeVj/fDFN75Y3CAzJTMYNcqbH05SJs551wqj+BSwLT9pS3dqJrVDPYl3eH4OrI8ueiEseX5VgUn+0HLA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@babel/helper-module-imports": "^7.7.4", + "@rollup/pluginutils": "^3.0.8" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "@rollup/plugin-commonjs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", + "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } } }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "@rollup/plugin-multi-entry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-multi-entry/-/plugin-multi-entry-3.0.0.tgz", + "integrity": "sha512-nFN+1hUHQn7Y6ivdJa/6sYo8LOTmtnQl7g4rQ3WgnJYkL0AByzpb3fXt70ANgJnoLmhcXHBQiQykg835EY7EMg==", "dev": true, "requires": { - "@xtuc/ieee754": "^1.2.0" + "matched": "^1.0.2" } }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", "dev": true, "requires": { - "@xtuc/long": "4.2.2" + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "@rollup/pluginutils": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.10.tgz", + "integrity": "sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + } } }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } + "@target/custom-event-polyfill": { + "version": "github:Adobe-Marketing-Cloud/custom-event-polyfill#2a28329ad98fdaf578054e2390f6ecd77d2eae91", + "from": "github:Adobe-Marketing-Cloud/custom-event-polyfill", + "dev": true }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "@types/node": { + "version": "13.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", + "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" + "@types/node": "*" } }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "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": { @@ -1133,21 +1222,38 @@ } }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, "acorn-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", "dev": true }, "adm-zip": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", - "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", + "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", "dev": true }, "after": { @@ -1165,30 +1271,56 @@ "es6-promisify": "^5.0.0" } }, + "agentkeepalive": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.2.tgz", + "integrity": "sha512-waNHE7tQBBn+2qXucI8HY0o2Y0OBPWldWOWsZwY71JcCm4SvrPnWdceFfB5NIXSqE8Ewq6VR/Qt5b1i69P6KCQ==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "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 + } + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -1205,27 +1337,23 @@ "string-width": "^3.0.0" } }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, "ansi-escapes": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", - "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "dev": true, "requires": { - "type-fest": "^0.5.2" + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } } }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -1242,24 +1370,13 @@ } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "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" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "aproba": { @@ -1268,6 +1385,16 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1277,73 +1404,213 @@ "sprintf-js": "~1.0.2" } }, - "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-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } } }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "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 }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -1353,56 +1620,12 @@ "safer-buffer": "~2.1.0" } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "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 - }, "ast-transform": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", @@ -1446,7 +1669,7 @@ }, "source-map": { "version": "0.1.43", - "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "optional": true, @@ -1458,7 +1681,7 @@ }, "ast-types": { "version": "0.7.8", - "resolved": "http://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", "integrity": "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk=", "dev": true }, @@ -1469,10 +1692,13 @@ "dev": true }, "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } }, "async-array-reduce": { "version": "0.2.1", @@ -1480,16 +1706,10 @@ "integrity": "sha1-yL4BCitc0A3qlsgRFgNGk9/dgtE=", "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==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true }, "asynckit": { @@ -1498,12 +1718,6 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "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-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -1511,29 +1725,29 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, "babel-eslint": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", - "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", "eslint-visitor-keys": "^1.0.0", "resolve": "^1.12.0" } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -1550,9 +1764,9 @@ }, "dependencies": { "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, "regenerator-runtime": { @@ -1575,61 +1789,6 @@ "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" - } - } - } - }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", @@ -1648,10 +1807,10 @@ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", "dev": true }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "basic-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", + "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", "dev": true }, "bcrypt-pbkdf": { @@ -1672,16 +1831,10 @@ "callsite": "1.0.0" } }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, "blob": { @@ -1690,18 +1843,6 @@ "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", "dev": true }, - "bluebird": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", - "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -1720,12 +1861,6 @@ "type-is": "~1.6.17" }, "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -1734,40 +1869,61 @@ } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, "boxen": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.1.0.tgz", - "integrity": "sha512-Iwq1qOkmEsl0EVABa864Bbj3HCL4186DRZgFW/NrFs5y5GMM3ljsxzMLgOHdWISDRvcM8beh8q4tTNzXz+mSKg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", "dev": true, "requires": { "ansi-align": "^3.0.0", "camelcase": "^5.3.1", - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-boxes": "^2.2.0", "string-width": "^4.1.0", "term-size": "^2.1.0", - "type-fest": "^0.5.2", + "type-fest": "^0.8.1", "widest-line": "^3.1.0" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "emoji-regex": { @@ -1783,14 +1939,32 @@ "dev": true }, "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } @@ -1806,52 +1980,26 @@ } }, "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" - }, - "dependencies": { - "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" - } - } + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" } }, "brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz", + "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==", "dev": true, "requires": { "quote-stream": "^1.0.1", "resolve": "^1.1.5", - "static-module": "^2.2.0", + "static-module": "^3.0.2", "through2": "^2.0.0" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, "brotli": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", @@ -1887,43 +2035,6 @@ } } }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "browserify-optional": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz", @@ -1935,161 +2046,88 @@ "browser-resolve": "^1.8.1" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", - "dev": true - } - } - }, "browserslist": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", - "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001004", - "electron-to-chromium": "^1.3.295", - "node-releases": "^1.1.38" - } - }, - "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==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", "dev": true, "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.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-equal": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "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 }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.3.tgz", + "integrity": "sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "move-file": "^2.0.0", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "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" + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "callsite": { @@ -2105,25 +2143,15 @@ "dev": true }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, "caniuse-lite": { - "version": "1.0.30001006", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001006.tgz", - "integrity": "sha512-MXnUVX27aGs/QINz+QG1sWSLDr3P1A3Hq5EUWoIt0T7K24DuvMxZEnh3Y5aHlJW6Bz2aApJdSewdYLd8zQnUuw==", + "version": "1.0.30001048", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz", + "integrity": "sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==", "dev": true }, "caseless": { @@ -2150,83 +2178,32 @@ "dev": true }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", "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" - }, - "dependencies": { - "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" - } - } + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" } }, "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.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" - }, - "dependencies": { - "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" - } - } - } + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true }, "cli-boxes": { "version": "2.2.0", @@ -2244,20 +2221,60 @@ } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "clone": { @@ -2272,16 +2289,6 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "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" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2313,9 +2320,9 @@ } }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "commondir": { @@ -2331,9 +2338,9 @@ "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==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "component-inherit": { @@ -2342,30 +2349,6 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, - "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "dev": true, - "requires": { - "mime-db": ">= 1.40.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2396,22 +2379,10 @@ "utils-merge": "1.0.1" } }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "contains-path": { @@ -2420,15 +2391,6 @@ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -2436,70 +2398,50 @@ "dev": true }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, "core-js": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.6.tgz", - "integrity": "sha512-u4oM8SHwmDuh5mWZdDg9UwNVq5s1uqq6ZDLLIs07VY+VJU91i3h4f3K/pgFvtUQPGdeStrZ+odKyfyt4EnKHfA==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", "dev": true }, "core-js-compat": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.6.tgz", - "integrity": "sha512-YnwZG/+0/f7Pf6Lr3jxtVAFjtGBW9lsLYcqrxhYJai1GfvrP8DEyEpnNzj/FRQfIkOOfk1j5tTBvPBLWVVJm4A==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "dev": true, "requires": { - "browserslist": "^4.7.2", - "semver": "^6.3.0" + "browserslist": "^4.8.5", + "semver": "7.0.0" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2513,68 +2455,26 @@ "dev": true }, "coveralls": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.7.tgz", - "integrity": "sha512-mUuH2MFOYB2oBaA4D4Ykqi9LaEYpMMlsiOMJOrv358yAjP6enPIk55fod2fNJ8AvwoYXStWQls37rA+s5e7boA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.0.tgz", + "integrity": "sha512-sHxOu2ELzW8/NC1UP5XVLbZDzO4S3VxfFye3XYCznopHy02YjNkHcj5bKaVw2O7hVaBdBjEdQGpie4II1mWhuQ==", "dev": true, "requires": { - "growl": "~> 1.10.0", "js-yaml": "^3.13.1", - "lcov-parse": "^0.0.10", + "lcov-parse": "^1.0.0", "log-driver": "^1.2.7", - "minimist": "^1.2.0", - "request": "^2.86.0" + "minimist": "^1.2.5", + "request": "^2.88.2" }, "dependencies": { - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true } } }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -2588,44 +2488,26 @@ "which": "^1.2.9" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, - "cyclist": { + "d": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", "dev": true }, "dashdash": { @@ -2643,16 +2525,6 @@ "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", "dev": true }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - } - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2662,22 +2534,22 @@ "ms": "2.0.0" } }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, "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-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", - "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "dev": true, "requires": { "is-arguments": "^1.0.4", @@ -2694,46 +2566,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2743,110 +2575,34 @@ "object-keys": "^1.0.12" } }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "asap": "^2.0.0", + "wrappy": "1" } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true - }, "dfa": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", @@ -2859,42 +2615,6 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -2916,12 +2636,6 @@ "void-elements": "^2.0.0" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -2937,18 +2651,6 @@ "readable-stream": "^2.0.2" } }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -2978,51 +2680,31 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.298", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.298.tgz", - "integrity": "sha512-IcgwlR5x4qtsVr1X+GDnbDEp0bAAqRA9EHP+bvIn3g5KF59Eiqjm59p27tg8b4YmgmpjfKWgec3trDRTWiVJgg==", + "version": "1.3.427", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz", + "integrity": "sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A==", "dev": true }, - "elliptic": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", - "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "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.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, + "optional": true, "requires": { - "once": "^1.4.0" + "iconv-lite": "~0.4.13" } }, "engine.io": { @@ -3039,12 +2721,6 @@ "ws": "~3.3.1" }, "dependencies": { - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -3075,12 +2751,6 @@ "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", @@ -3105,43 +2775,23 @@ "has-binary2": "~1.0.2" } }, - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", "dev": true }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true }, "error-ex": { "version": "1.3.2", @@ -3153,27 +2803,36 @@ } }, "es-abstract": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", - "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + } } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -3181,6 +2840,42 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -3196,6 +2891,41 @@ "es6-promise": "^4.0.3" } }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3209,24 +2939,18 @@ "dev": true }, "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", "dev": true, "requires": { - "esprima": "^3.1.3", + "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3237,9 +2961,9 @@ } }, "eslint": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", - "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -3257,7 +2981,7 @@ "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^11.7.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -3270,7 +2994,7 @@ "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", "semver": "^6.1.2", @@ -3301,14 +3025,23 @@ } }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -3329,70 +3062,97 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, "eslint-config-standard": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz", - "integrity": "sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", "dev": true }, "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", "dev": true, "requires": { "debug": "^2.6.9", - "resolve": "^1.5.0" + "resolve": "^1.13.1" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, "eslint-module-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", - "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, "requires": { - "debug": "^2.6.8", + "debug": "^2.6.9", "pkg-dir": "^2.0.0" } }, "eslint-plugin-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", - "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", + "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", "dev": true, "requires": { - "eslint-utils": "^1.4.2", + "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" }, "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true } } }, "eslint-plugin-import": { - "version": "2.18.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", - "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", "dev": true, "requires": { "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.0", + "eslint-module-utils": "^2.4.1", "has": "^1.0.3", "minimatch": "^3.0.4", "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", - "resolve": "^1.11.0" + "resolve": "^1.12.0" }, "dependencies": { "doctrine": { @@ -3404,53 +3164,32 @@ "esutils": "^2.0.2", "isarray": "^1.0.0" } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } } } }, "eslint-plugin-node": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", - "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, "requires": { - "eslint-plugin-es": "^2.0.0", - "eslint-utils": "^1.4.2", + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", "ignore": "^5.1.1", "minimatch": "^3.0.4", "resolve": "^1.10.1", "semver": "^6.1.0" }, "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, "ignore": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", @@ -3477,16 +3216,6 @@ "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", "dev": true }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, "eslint-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", @@ -3509,22 +3238,14 @@ "dev": true }, "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true - } } }, "esprima": { @@ -3534,12 +3255,20 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } } }, "esrecurse": { @@ -3557,6 +3286,12 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", + "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", + "dev": true + }, "estree-walker": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", @@ -3569,77 +3304,21 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", - "dev": true - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "original": "^1.0.0" + "d": "1", + "es5-ext": "~0.10.14" } }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - } - } + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true }, "expand-tilde": { "version": "2.0.2", @@ -3650,69 +3329,19 @@ "homedir-polyfill": "^1.0.1" } }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", "dev": true, "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "type": "^2.0.0" }, "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "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" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", "dev": true } } @@ -3723,27 +3352,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "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" - }, - "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" - } - } - } - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -3755,107 +3363,22 @@ "tmp": "^0.0.33" } }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "falafel": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", - "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", - "dev": true, - "requires": { - "acorn": "^5.0.0", - "foreach": "^2.0.5", - "isarray": "0.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -3864,25 +3387,10 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -3898,32 +3406,18 @@ } }, "filesize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz", - "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", + "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==", "dev": true }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "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" - } - } + "to-regex-range": "^5.0.1" } }, "finalhandler": { @@ -3941,71 +3435,6 @@ "unpipe": "~1.0.0" } }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -4015,29 +3444,6 @@ "locate-path": "^2.0.0" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "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" - } - } - } - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -4066,67 +3472,51 @@ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, "follow-redirects": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", - "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", + "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", "dev": true, "requires": { - "debug": "^3.1.0" + "debug": "^3.0.0" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "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 } } }, "fontkit": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.8.0.tgz", - "integrity": "sha512-EFDRCca7khfQWYu1iFhsqeABpi87f03MBdkT93ZE6YhqCdMzb5Eojb6c4dlJikGv5liuhByyzA7ikpIPTSBWbQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.8.1.tgz", + "integrity": "sha512-BsNCjDoYRxmNWFdAuK1y9bQt+igIxGtTC9u/jSFjR9MKhmI00rP1fwSvERt+5ddE82544l0XH5mzXozQVUy2Tw==", "dev": true, "requires": { - "babel-runtime": "^6.11.6", - "brfs": "^1.4.0", + "babel-runtime": "^6.26.0", + "brfs": "^2.0.0", "brotli": "^1.2.0", - "browserify-optional": "^1.0.0", - "clone": "^1.0.1", + "browserify-optional": "^1.0.1", + "clone": "^1.0.4", "deep-equal": "^1.0.0", - "dfa": "^1.0.0", + "dfa": "^1.2.0", "restructure": "^0.5.3", "tiny-inflate": "^1.0.2", - "unicode-properties": "^1.0.0", + "unicode-properties": "^1.2.2", "unicode-trie": "^0.3.0" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -4144,37 +3534,6 @@ "mime-types": "^2.1.12" } }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "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" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -4186,16 +3545,13 @@ "universalify": "^0.1.0" } }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "minipass": "^3.0.0" } }, "fs.realpath": { @@ -4205,462 +3561,59 @@ "dev": true }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, - "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "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" }, "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, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "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, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -4668,81 +3621,27 @@ "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, + "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" } - }, - "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 } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", "dev": true }, "get-caller-file": { @@ -4751,27 +3650,6 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.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 - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -4781,12 +3659,6 @@ "assert-plus": "^1.0.0" } }, - "gl-matrix": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-2.8.1.tgz", - "integrity": "sha512-0YCjVpE3pS5XWlN3J4X7AiAx65+nqAI54LndtVFnQZB6G/FVLkZH8y8V6R3cIoOQR4pUdfwQGd1iwyoXHJ4Qfw==", - "dev": true - }, "glob": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", @@ -4802,13 +3674,12 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "^4.0.1" } }, "global-modules": { @@ -4841,37 +3712,12 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, "graceful-fs": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "gzip-size": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", @@ -4890,38 +3736,22 @@ } } }, - "handle-thing": { + "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, - "handlebars": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", - "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "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 - } + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4955,9 +3785,9 @@ "dev": true }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-glob": { @@ -4967,65 +3797,30 @@ "dev": true, "requires": { "is-glob": "^3.0.0" - } - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "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=", + "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-buffer": "^1.1.5" + "is-extglob": "^2.1.0" } } } }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true }, "he": { "version": "1.2.0", @@ -5033,17 +3828,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -5054,33 +3838,21 @@ } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, "http-errors": { @@ -5104,68 +3876,70 @@ } } }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "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==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "dependencies": { - "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==", + "agent-base": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "debug": "4" } + }, + "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 } } }, "http-server": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.11.1.tgz", - "integrity": "sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w==", - "dev": true, - "requires": { - "colors": "1.0.3", - "corser": "~2.0.0", - "ecstatic": "^3.0.0", - "http-proxy": "^1.8.1", - "opener": "~1.4.0", - "optimist": "0.6.x", - "portfinder": "^1.0.13", - "union": "~0.4.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - } + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", + "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", + "dev": true, + "requires": { + "basic-auth": "^1.0.3", + "colors": "^1.4.0", + "corser": "^2.0.1", + "ecstatic": "^3.3.2", + "http-proxy": "^1.18.0", + "minimist": "^1.2.5", + "opener": "^1.5.1", + "portfinder": "^1.0.25", + "secure-compare": "3.0.1", + "union": "~0.5.0" } }, "http-signature": { @@ -5179,12 +3953,6 @@ "sshpk": "^1.7.0" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, "https-proxy-agent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", @@ -5212,6 +3980,15 @@ } } }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5221,24 +3998,21 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -5252,79 +4026,15 @@ "dev": true }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5332,13 +4042,10 @@ "dev": true }, "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true }, "indexof": { "version": "0.0.1", @@ -5375,26 +4082,67 @@ "dev": true }, "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.15", "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -5408,34 +4156,36 @@ "dev": true }, "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -5445,56 +4195,12 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "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 - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", - "dev": true - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "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" - }, - "dependencies": { - "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" - } - } - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", @@ -5508,75 +4214,30 @@ "dev": true }, "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=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.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-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "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" - }, - "dependencies": { - "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" - } - } - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, - "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=", + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", "dev": true }, "is-extglob": { @@ -5585,15 +4246,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -5601,14 +4253,20 @@ "dev": true }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "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.0" + "is-extglob": "^2.1.1" } }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -5616,62 +4274,9 @@ "dev": true }, "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" - }, - "dependencies": { - "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" - } - } - } - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.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-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-reference": { @@ -5684,18 +4289,18 @@ } }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true }, "is-symbol": { @@ -5713,12 +4318,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "is-valid-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", @@ -5732,10 +4331,13 @@ "dev": true }, "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } }, "isarray": { "version": "1.0.0", @@ -5744,13 +4346,10 @@ "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" - } + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true }, "isexe": { "version": "2.0.0", @@ -5758,124 +4357,31 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "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 }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "dependencies": { "semver": { @@ -5887,43 +4393,35 @@ } }, "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "dev": true, "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", + "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, "dependencies": { @@ -5951,12 +4449,13 @@ } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "requires": { - "handlebars": "^4.1.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, "jasmine": { @@ -6002,12 +4501,6 @@ } } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6036,10 +4529,10 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "json-parse-even-better-errors": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.2.0.tgz", + "integrity": "sha512-2tLgY7LRNZ9Hd6gmCuBG5/OjRHQpSgJQqJoYyLLOhUgn8LdOYrjaZLcxkWnDads+AD/haWWioPNziXQcgvQJ/g==", "dev": true }, "json-schema": { @@ -6066,19 +4559,21 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "jsonfile": { @@ -6090,6 +4585,12 @@ "graceful-fs": "^4.1.6" } }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -6103,32 +4604,23 @@ } }, "jszip": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", - "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.4.0.tgz", + "integrity": "sha512-gZAOYuPl4EhPTXT0GjhI3o+ZAz3su6EhLrKUoAivcKqyqC7laS5JEv4XWZND9BgcDcF83vI85yGbDmDR6UhrIg==", "dev": true, "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "set-immediate-shim": "~1.0.1" - }, - "dependencies": { - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", - "dev": true - } } }, "karma": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", - "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.4.tgz", + "integrity": "sha512-UGqTe2LBiGQBXRN+Fygeiq63tbfOX45639SKSbPkLpARwnxROWJZg+froGkpHxr84FXCe8UGCf+1PITM6frT5w==", "dev": true, "requires": { - "bluebird": "^3.3.0", "body-parser": "^1.16.1", "braces": "^3.0.2", "chokidar": "^3.0.0", @@ -6140,141 +4632,32 @@ "glob": "^7.1.1", "graceful-fs": "^4.1.2", "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", + "isbinaryfile": "^4.0.2", "lodash": "^4.17.14", "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" + "ua-parser-js": "0.7.21", + "yargs": "^15.3.1" }, "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.2.3.tgz", - "integrity": "sha512-GtrxGuRf6bzHQmXWRepvsGnXpkQkVU+D2/9a7dAe4a7v1NhrfZOZ2oKf76M3nOs46fFYL8D+Q8JYA4GYeJ8Cjw==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz", - "integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", "dev": true }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, "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 - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, @@ -6288,45 +4671,41 @@ } }, "karma-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.1.tgz", - "integrity": "sha512-SnFkHsnLsaXfxkey51rRN9JDLAEKYW2Lb0qOEvcruukk0NkSNDkjobNDZPt9Ni3kIhLZkLtpGOz661hN7OaZvQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.2.tgz", + "integrity": "sha512-zge5qiGEIKDdzWciQwP4p0LSac4k/L6VfrBsERMUn5mpDvxhv1sPVOrSlpzpi70T7NhuEy4bgnpAKIYuumIMCw==", "dev": true, "requires": { - "dateformat": "^1.0.6", - "istanbul": "^0.4.0", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "lodash": "^4.17.11", - "minimatch": "^3.0.0", - "source-map": "^0.5.1" + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.1", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.0", + "minimatch": "^3.0.4" } }, "karma-firefox-launcher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.2.0.tgz", - "integrity": "sha512-j9Zp8M8+VLq1nI/5xZGfzeaEPtGQ/vk3G+Y8vpmFWLvKLNZ2TDjD6cu2dUu7lDbu1HXNgatsAX4jgCZTkR9qhQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.3.0.tgz", + "integrity": "sha512-Fi7xPhwrRgr+94BnHX0F5dCl1miIW4RHnzjIGxF8GaIEp7rNqX7LSi7ok63VXs3PS/5MQaQMhGxw+bvD+pibBQ==", "dev": true, "requires": { "is-wsl": "^2.1.0" } }, "karma-jasmine": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", - "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", + "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", "dev": true, "requires": { - "jasmine-core": "^3.3" + "jasmine-core": "^3.5.0" } }, "karma-sauce-launcher": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz", - "integrity": "sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-4.1.4.tgz", + "integrity": "sha512-ZKVAYs2QHDDO1wiYU4L2V4dUdo7Dqvllt2ScA3Yq2vizIYGlXDn62PCbLFfEZTHuwIr/YS1JUgSMohEC/wHJ5w==", "dev": true, "requires": { "sauce-connect-launcher": "^1.2.4", @@ -6334,33 +4713,27 @@ "selenium-webdriver": "^4.0.0-alpha.1" } }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", "dev": true }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "leven": "^3.1.0" } }, - "lcov-parse": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", - "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", - "dev": true - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -6392,34 +4765,6 @@ "strip-bom": "^3.0.0" } }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -6436,12 +4781,6 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -6478,12 +4817,6 @@ } } }, - "loglevel": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", - "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==", - "dev": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6493,16 +4826,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6513,66 +4836,88 @@ } }, "magic-string": { - "version": "0.22.5", - "resolved": "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { - "vlq": "^0.2.2" + "sourcemap-codec": "^1.4.4" } }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "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-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "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=", + "make-fetch-happen": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.5.tgz", + "integrity": "sha512-01z8ZJSvzECQ5XzeUbRY9dDh1h69LHU/dWaZdLwJPIJ4Mi4XjQp+muOsNP0pcqNvINkkl7/KjobEb83sR2Nshw==", "dev": true, "requires": { - "object-visit": "^1.0.0" + "agentkeepalive": "^4.1.0", + "cacache": "^15.0.0", + "http-cache-semantics": "^4.0.4", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.1.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + }, + "dependencies": { + "agent-base": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "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" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "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 + } } }, "matched": { @@ -6589,68 +4934,12 @@ "resolve-dir": "^1.0.0" } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "media-typer": { "version": "0.3.0", "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, "merge-source-map": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", @@ -6666,43 +4955,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "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" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -6730,18 +4982,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -6752,46 +4992,122 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.2.1.tgz", + "integrity": "sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-pipeline": "^1.2.2", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" }, "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==", + "minizlib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } } } @@ -6813,18 +5129,21 @@ } } }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ==", "dev": true, "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "ms": { @@ -6833,54 +5152,12 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "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" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6893,10 +5170,10 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, "nice-try": { @@ -6905,86 +5182,81 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" + "node-gyp": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-6.1.0.tgz", + "integrity": "sha512-h4A2zDlOujeeaaTx06r4Vy+8MZ1679lU+wbCKDS4ZtvY2A37DESo37oejIw0mtmR3+rvNwts5B6Kpt1KrNYdNw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" }, "dependencies": { - "buffer": { - "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "minipass": "^2.6.0" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } } } }, "node-releases": { - "version": "1.1.39", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", - "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true }, "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "1", + "osenv": "^0.1.4" } }, "normalize-package-data": { @@ -7005,13 +5277,157 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", "dev": true, "requires": { - "path-key": "^2.0.0" + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.1.tgz", + "integrity": "sha512-95TSDvGwujIhqfSpIiRRLodEF+y6mJMopuZdahoGzqtRDFZXGav46S0p6ngeWaiAkb5R72w6eVARhzej0HvZeQ==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + } + } + }, + "npm-pick-manifest": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", + "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-8.0.0.tgz", + "integrity": "sha512-975WwLvZjX97y9UWWQ8nAyr7bw02s9xKPHqvEm5T900LQsB1HXb8Gb9ebYtCBLSX+K8gSOrO5KS/9yV/naLZmQ==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^8.0.2", + "minipass": "^3.0.0", + "minipass-fetch": "^1.1.2", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "dependencies": { + "minizlib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": 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": { @@ -7020,6 +5436,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7032,48 +5454,21 @@ "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - } - } - }, "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true }, "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } }, "object-keys": { "version": "1.1.1", @@ -7081,15 +5476,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "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.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", @@ -7102,43 +5488,99 @@ "object-keys": "^1.0.11" } }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "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" - } - }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } } }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -7148,12 +5590,6 @@ "ee-first": "1.1.1" } }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -7173,145 +5609,46 @@ } }, "opener": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", - "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", "dev": true }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } - } - }, - "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" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, - "original": { + "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, "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 }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } }, "p-limit": { "version": "1.3.0", @@ -7332,18 +5669,12 @@ } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { - "retry": "^0.12.0" + "aggregate-error": "^3.0.0" } }, "p-try": { @@ -7352,23 +5683,56 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "pacote": { + "version": "11.1.8", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.1.8.tgz", + "integrity": "sha512-oBXbdsqA0pnk4lNmWDHMm20uSbZiYCjE0MHeSFG3esxw1mubhSJizVc1rKVI0KMkYTMz4M7OTEqY1h2lx+wbPw==", + "dev": true, + "requires": { + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.5", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.3.0", + "cacache": "^15.0.3", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.0.1", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^8.0.0", + "promise-retry": "^1.1.1", + "read-package-json-fast": "^1.1.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -7378,20 +5742,6 @@ "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -7431,24 +5781,6 @@ "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-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "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-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -7461,12 +5793,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -7479,34 +5805,13 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "pify": "^2.0.0" } }, "performance-now": { @@ -7516,9 +5821,9 @@ "dev": true }, "picomatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.0.tgz", - "integrity": "sha512-uhnEDzAbrcJ8R3g2fANnSuXZMBtkpSjxTTgn2LeSiQlfmq72enQJWdQllXW24MBLYnA1SBD2vfvx2o0Zw3Ielw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "pify": { @@ -7527,47 +5832,52 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "pinkie": "^2.0.0" + "find-up": "^2.1.0" } }, - "pkg-dir": { + "pkg-up": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { "find-up": "^2.1.0" } }, "portfinder": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.19.tgz", - "integrity": "sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "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 + } } }, - "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 - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -7580,12 +5890,6 @@ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -7604,81 +5908,22 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "dev": true, "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "err-code": "^1.0.0", + "retry": "^0.10.0" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "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.4.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", - "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -7697,24 +5942,6 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", - "dev": true - }, "quote-stream": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", @@ -7726,25 +5953,6 @@ "through2": "^2.0.0" } }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -7761,86 +5969,43 @@ "http-errors": "1.7.2", "iconv-lite": "0.4.24", "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - } + } + }, + "read-package-json-fast": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.1.3.tgz", + "integrity": "sha512-MmFqiyfCXV2Dmm4jH24DEGhxdkUDFivJQj4oPZQPOKywxR7HWBE6WnMWDAapfFHi3wm1b+mhR+XHlUH0CL8axg==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "^1.0.0", + "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } + "path-type": "^2.0.0" } }, "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -7852,25 +6017,25 @@ "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==", + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "picomatch": "^2.2.1" } }, "regenerate": { @@ -7880,46 +6045,38 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", "dev": true }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", - "dev": true, - "requires": { - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" } }, "regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "dev": true, "requires": { - "define-properties": "^1.1.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "regexpp": { @@ -7929,17 +6086,17 @@ "dev": true }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { @@ -7949,9 +6106,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -7965,37 +6122,10 @@ } } }, - "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 - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -8005,7 +6135,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -8015,49 +6145,9 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" - }, - "dependencies": { - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } } }, "require-directory": { @@ -8087,23 +6177,6 @@ "path-parse": "^1.0.6" } }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -8120,12 +6193,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "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 - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -8145,16 +6212,10 @@ "browserify-optional": "^1.0.0" } }, - "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 - }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", "dev": true }, "rfdc": { @@ -8172,158 +6233,58 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "rollup": { - "version": "1.26.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.26.2.tgz", - "integrity": "sha512-TLM8hlYP85TFFptYlXmr2VnhCLA8GaYXG4LBdWsHu9oBH/Wm5MMPAE9wsAnohfV21Dqq0ZvRHdmsKXomshaDSg==", + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.7.6.tgz", + "integrity": "sha512-AdHosxHBKyBsdtbT1/AqbWNQ87O4SSxS4N9iMwEpoCDAT6e4Du3uJSy83mp3ckgmCxly5VeXGx0WHsm21Djytg==", "dev": true, "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true - } - } - }, - "rollup-plugin-babel": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz", - "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "magic-string": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", - "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - } + "fsevents": "~2.1.2" } }, "rollup-plugin-filesize": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-6.2.1.tgz", - "integrity": "sha512-JQ2+NMoka81lCR2caGWyngqMKpvJCl7EkFYU7A+T0dA7U1Aml13FW5Ky0aiZIeU3/13cjsKQLRr35SQVmk6i/A==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-8.0.2.tgz", + "integrity": "sha512-PcOYHPvpRh2sYWLX/1XbaLcRZ//rqwihl9iBiJWWo39XiyQlWv5623XWoXM9PjYcxP1q+7L7hjmlqzNx4kptlw==", "dev": true, "requires": { - "boxen": "^4.1.0", + "boxen": "^4.2.0", "brotli-size": "4.0.0", - "colors": "^1.3.3", - "filesize": "^4.1.2", + "colors": "^1.4.0", + "filesize": "^6.1.0", "gzip-size": "^5.1.1", - "lodash.merge": "^4.6.2", - "terser": "^4.1.3" - } - }, - "rollup-plugin-multi-entry": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-multi-entry/-/rollup-plugin-multi-entry-2.1.0.tgz", - "integrity": "sha512-YVVsI15uvbxMKdeYS5NXQa5zbVr/DYdDBBwseC80+KAc7mqDUjM6Qe4wl+jFucVw1yvBDZFk0PPSBZqoLq8xUA==", - "dev": true, - "requires": { - "matched": "^1.0.2" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" + "pacote": "^11.1.6", + "terser": "^4.6.12" } }, "rollup-plugin-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.1.2.tgz", - "integrity": "sha512-sWKBCOS+vUkRtHtEiJPAf+WnBqk/C402fBD9AVHxSIXMqjsY7MnYWKYEUqGixtr0c8+1DjzUEPlNgOYQPVrS1g==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", + "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "jest-worker": "^24.6.0", - "rollup-pluginutils": "^2.8.1", - "serialize-javascript": "^1.7.0", - "terser": "^4.1.0" - } - }, - "rollup-plugin-uglify": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.3.tgz", - "integrity": "sha512-PIv3CfhZJlOG8C85N0GX+uK09TPggmAS6Nk6fpp2ELzDAV5VUhNzOURDU2j7+MwuRr0zq9IZttUTADc/jH8Gkg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "jest-worker": "^24.0.0", - "serialize-javascript": "^1.9.0", - "uglify-js": "^3.4.9" - } - }, - "rollup-plugin-uglify-es": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-uglify-es/-/rollup-plugin-uglify-es-0.0.1.tgz", - "integrity": "sha1-5FZE8raFpZq9uTY0ByB6A6e1qbc=", - "dev": true, - "requires": { - "uglify-es": "3.0.3" + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^2.1.2", + "terser": "^4.6.2" }, "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } + "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 }, - "uglify-es": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.0.3.tgz", - "integrity": "sha1-Y8yEqpRos0lzpIh3h8ZMAaiodXY=", + "terser": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", "dev": true, "requires": { - "commander": "~2.9.0", - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0" + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" } } } @@ -8338,27 +6299,15 @@ } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -8370,15 +6319,6 @@ "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", @@ -8396,17 +6336,6 @@ "https-proxy-agent": "^3.0.0", "lodash": "^4.16.6", "rimraf": "^2.5.4" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } } }, "saucelabs": { @@ -8451,33 +6380,36 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "scope-analyzer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.1.tgz", + "integrity": "sha512-azEAihtQ9mEyZGhfgTJy3IbOWEzeOrYbg7NcYEshPKnKd+LZmC3TNd5dmDxbLBsTG/JVWmCp+vDJ03vJjeXMHg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "array-from": "^2.1.1", + "dash-ast": "^1.0.0", + "es6-map": "^0.1.5", + "es6-set": "^0.1.5", + "es6-symbol": "^3.1.1", + "estree-is-function": "^1.0.0", + "get-assigned-identifiers": "^1.1.0" } }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", "dev": true }, "selenium-webdriver": { - "version": "4.0.0-alpha.5", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.5.tgz", - "integrity": "sha512-hktl3DSrhzM59yLhWzDGHIX9o56DvA+cVK7Dw6FcJR6qQ4CGzkaHeXQPcdrslkWMTeq0Ci9AmCxq0EMOvm2Rkg==", + "version": "4.0.0-alpha.7", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.7.tgz", + "integrity": "sha512-D4qnTsyTr91jT8f7MfN+OwY0IlU5+5FmlO5xlgRUV6hDEV8JyYx2NerdTEqDDkNq7RZDYc4VoPALk8l578RBHw==", "dev": true, "requires": { - "jszip": "^3.1.5", - "rimraf": "^2.6.3", - "tmp": "0.0.30", - "xml2js": "^0.4.19" + "jszip": "^3.2.2", + "rimraf": "^2.7.1", + "tmp": "0.0.30" }, "dependencies": { "tmp": { @@ -8491,109 +6423,18 @@ } } }, - "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", - "dev": true, - "requires": { - "node-forge": "0.9.0" - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", "dev": true }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -8606,51 +6447,12 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "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" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shallow-copy": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", @@ -8673,9 +6475,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "slice-ansi": { @@ -8689,112 +6491,11 @@ "is-fullwidth-code-point": "^2.0.0" } }, - "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": { - "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" - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true }, "socket.io": { "version": "2.1.1", @@ -8822,9 +6523,9 @@ } }, "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=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", "dev": true }, "socket.io-client": { @@ -8849,12 +6550,6 @@ "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", @@ -8877,12 +6572,6 @@ "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", @@ -8900,46 +6589,43 @@ } } }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "ip": "1.1.5", + "smart-buffer": "^4.1.0" } }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "socks-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", + "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", "dev": true, "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "agent-base": "6", + "debug": "4", + "socks": "^2.3.3" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "agent-base": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", "dev": true, "requires": { - "ms": "^2.1.1" + "debug": "4" } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "websocket-driver": ">=0.5.1" + "ms": "^2.1.1" } }, "ms": { @@ -8950,31 +6636,12 @@ } } }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "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-support": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", @@ -8993,16 +6660,10 @@ } } }, - "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 - }, "sourcemap-codec": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", - "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, "spdx-correct": { @@ -9016,9 +6677,9 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { @@ -9037,87 +6698,6 @@ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, - "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "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 - } - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "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 - }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "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" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -9142,71 +6722,53 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "minipass": "^3.1.1" } }, "static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "dev": true, - "requires": { - "escodegen": "^1.8.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz", + "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==", "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "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" - } - } + "escodegen": "^1.11.1" } }, "static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz", + "integrity": "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==", "dev": true, "requires": { + "acorn-node": "^1.3.0", "concat-stream": "~1.6.0", "convert-source-map": "^1.5.1", "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", + "escodegen": "^1.11.1", "has": "^1.0.1", - "magic-string": "^0.22.4", + "magic-string": "0.25.1", "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", + "object-inspect": "^1.6.0", "readable-stream": "~2.3.3", + "scope-analyzer": "^2.0.1", "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", + "static-eval": "^2.0.5", "through2": "~2.0.3" }, "dependencies": { - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", - "dev": true + "magic-string": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", + "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.1" + } } } }, @@ -9216,45 +6778,6 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, "streamroller": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", @@ -9268,15 +6791,6 @@ "lodash": "^4.17.14" }, "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -9305,24 +6819,208 @@ "strip-ansi": "^5.1.0" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" } }, "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } } }, "string_decoder": { @@ -9349,25 +7047,10 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", "dev": true }, "supports-color": { @@ -9388,13 +7071,12 @@ } }, "svgdom": { - "version": "0.0.21", - "resolved": "https://registry.npmjs.org/svgdom/-/svgdom-0.0.21.tgz", - "integrity": "sha512-uTtDg/X7fpMKwpG1WC0eQUzqebHcNkpJoH0ZQEe13801+y4UK2Jtl21zlCvCD+OMoC17nkeMGUG2rDPjRcPNHQ==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svgdom/-/svgdom-0.1.3.tgz", + "integrity": "sha512-qVZGdM6oVTNd0z+T83sN/Y+gGuuAMDyKqBpq9H2c2oa/PDA83THScKXhL9YL5rhTg6CP5d5yJhdbhnpBqx7XhQ==", "dev": true, "requires": { "fontkit": "^1.5.4", - "gl-matrix": "^2.3.2", "image-size": "^0.5.1", "sax": "^1.2.2" } @@ -9411,66 +7093,61 @@ "string-width": "^3.0.0" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "term-size": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.1.0.tgz", - "integrity": "sha512-I42EWhJ+2aeNQawGx1VtpO0DFI9YcfuvAMNIdKyf/6sRbHJ4P+ZQ/zIT87tE+ln1ymAGcCJds4dolfSAS0AcNg==", - "dev": true - }, - "terser": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", - "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", + "tar": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", + "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", "dev": true, "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "minizlib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, - "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, + "terser": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", "dev": true, "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" }, "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -9501,25 +7178,10 @@ "xtend": "~4.0.1" } }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, "tiny-inflate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.2.tgz", - "integrity": "sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "dev": true }, "tmp": { @@ -9537,58 +7199,19 @@ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", "dev": true }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "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" - }, - "dependencies": { - "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" - } - } - } - }, - "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" - } - }, "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=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "toidentifier": { @@ -9597,22 +7220,20 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, "tunnel-agent": { @@ -9630,6 +7251,12 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -9640,9 +7267,9 @@ } }, "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "type-is": { @@ -9667,30 +7294,11 @@ "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", "dev": true }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "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 + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true }, "ultron": { "version": "1.1.1", @@ -9715,25 +7323,31 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-properties": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.2.2.tgz", - "integrity": "sha512-+WhsOj19c93rPymvnPnFisbgFzrI4LjTV8ejMcCCfwS0XhdllZB4NsMFiYb4xUmpn3+aj3PM40h+wlzoG7PCnQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz", + "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==", "dev": true, "requires": { "base64-js": "^1.3.0", - "unicode-trie": "^1.0.0" + "unicode-trie": "^2.0.0" }, "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, "unicode-trie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-1.0.0.tgz", - "integrity": "sha512-v5raLKsobbFbWLMoX9+bChts/VhPPj3XpkNr/HbqkirXR1DPk8eo9IYKyvk0MQZFkaoRsFj2Rmaqgi2rfAZYtA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", "dev": true, "requires": { "pako": "^0.2.5", @@ -9743,9 +7357,9 @@ } }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "unicode-trie": { @@ -9756,35 +7370,23 @@ "requires": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" - } - }, - "union": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz", - "integrity": "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=", - "dev": true, - "requires": { - "qs": "~2.3.3" }, "dependencies": { - "qs": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", - "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true } } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "qs": "^6.4.0" } }, "unique-filename": { @@ -9817,52 +7419,6 @@ "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.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -9872,113 +7428,18 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, "url-join": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", "dev": true }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "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" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -9986,15 +7447,15 @@ "dev": true }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, "validate-npm-package-license": { @@ -10007,11 +7468,14 @@ "spdx-expression-parse": "^3.0.0" } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } }, "verror": { "version": "1.10.0", @@ -10024,627 +7488,160 @@ "extsprintf": "^1.2.0" } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", - "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 }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "minimalistic-assert": "^1.0.0" + "isexe": "^2.0.0" } }, - "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", - "dev": true - } - } + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, - "webpack-cli": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.10.tgz", - "integrity": "sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==", + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" + "string-width": "^1.0.2 || 2" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { + "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" + "ansi-regex": "^3.0.0" } } } }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", - "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dev": true, "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.4", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.25", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "12.0.5" + "string-width": "^4.0.0" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "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" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" - }, - "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" - } - } - } - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } + "ansi-regex": "^5.0.0" } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "color-name": "~1.1.4" } }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - }, - "dependencies": { + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -10658,44 +7655,27 @@ "dev": true }, "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" } } } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -10722,23 +7702,6 @@ "ultron": "~1.1.0" } }, - "xml2js": { - "version": "0.4.22", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz", - "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "util.promisify": "~1.0.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true - }, "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", @@ -10764,65 +7727,77 @@ "dev": true }, "yargs": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", - "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "dev": true, "requires": { - "cliui": "^5.0.0", + "cliui": "^6.0.0", "decamelize": "^1.2.0", - "find-up": "^3.0.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^15.0.0" + "yargs-parser": "^18.1.1" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "locate-path": { + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -10831,34 +7806,42 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "ansi-regex": "^5.0.0" } } } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } }, "yeast": { diff --git a/package.json b/package.json index 97bfb9b..f5e3921 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,13 @@ "files": [ "/dist", "/src", - "/svg.js.d.ts" + "/svg.js.d.ts", + "/.config" ], "maintainers": [ { "name": "Wout Fierens", - "email": "wout@mick-wout.com", - "web": "https://svgdotjs.github.io/" + "email": "wout@mick-wout.com" }, { "name": "Alex Ewerlöf", @@ -34,7 +34,8 @@ }, { "name": "Ulrich-Matthias Schäfer", - "email": "ulima.ums@googlemail.com" + "email": "ulima.ums@googlemail.com", + "web": "https://svgdotjs.github.io/" }, { "name": "Jon Ege Ronnenberg", @@ -63,64 +64,59 @@ "lint": "npx eslint ./src", "rollup": "npx rollup -c .config/rollup.config.js", "server": "npx http-server ./ -d", - "demo": "run () { cd playgrounds; ../node_modules/.bin/webpack-dev-server --env=$1; }; run", - "test": "npx karma start .config/karma.conf.js", + "test": "npx karma start .config/karma.conf.js || true", "test:ci": "karma start .config/karma.conf.saucelabs.js", "test:svgdom": "node -r esm ./spec/runSVGDomTest.js || true", - "test:es6": "npx karma start .config/karma.es6.js --single-run || true", "zip": "zip -j dist/svg.js.zip -- LICENSE.txt README.md CHANGELOG.md dist/svg.js dist/svg.js.map dist/svg.min.js dist/svg.min.js.map dist/polyfills.js dist/polyfillsIE.js", "prepublishOnly": "rm -rf ./dist && npm run build && npm run build:polyfills && npm test", "postpublish": "npm run zip", "checkTests": "node spec/checkForAllTests.js" }, "devDependencies": { - "@babel/core": "^7.6.4", - "@babel/plugin-external-helpers": "^7.2.0", - "@babel/plugin-transform-runtime": "^7.6.2", - "@babel/polyfill": "^7.6.0", - "@babel/preset-env": "^7.6.3", - "@babel/runtime": "^7.6.3", - "@babel/runtime-corejs2": "^7.6.3", + "@babel/core": "^7.9.6", + "@babel/plugin-external-helpers": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-runtime": "^7.9.6", + "@babel/polyfill": "^7.8.7", + "@babel/preset-env": "^7.9.6", + "@babel/runtime": "^7.9.6", + "@babel/runtime-corejs3": "^7.9.6", + "@rollup/plugin-babel": "^5.0.0", + "@rollup/plugin-commonjs": "^11.1.0", + "@rollup/plugin-multi-entry": "^3.0.0", + "@rollup/plugin-node-resolve": "^7.1.3", "@target/custom-event-polyfill": "github:Adobe-Marketing-Cloud/custom-event-polyfill", - "babel-eslint": "^10.0.3", - "core-js": "^3.3.6", - "coveralls": "^3.0.7", - "eslint": "^6.6.0", - "eslint-config-standard": "^14.1.0", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-node": "^10.0.0", + "babel-eslint": "^10.1.0", + "core-js": "^3.6.5", + "coveralls": "^3.1.0", + "eslint": "^6.8.0", + "eslint-config-standard": "^14.1.1", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-standard": "^4.0.1", "esm": "^3.2.25", - "http-server": "^0.11.1", + "http-server": "^0.12.3", "jasmine": "^3.5.0", "jasmine-core": "^3.5.0", - "karma": "^4.4.1", + "karma": "^5.0.4", "karma-chrome-launcher": "^3.1.0", - "karma-coverage": "^2.0.1", - "karma-firefox-launcher": "^1.2.0", - "karma-jasmine": "^2.0.1", - "karma-sauce-launcher": "^2.0.2", - "rollup": "^1.26.2", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-filesize": "^6.2.1", - "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-terser": "^5.1.2", - "rollup-plugin-uglify": "^6.0.3", - "rollup-plugin-uglify-es": "0.0.1", - "svgdom": "0.0.21", + "karma-coverage": "^2.0.2", + "karma-firefox-launcher": "^1.3.0", + "karma-jasmine": "^3.1.1", + "karma-sauce-launcher": "^4.1.4", + "rollup": "^2.7.6", + "rollup-plugin-filesize": "^8.0.2", + "rollup-plugin-terser": "^5.3.0", + "svgdom": "^0.1.3", "typescript": "^3.8.3", - "webpack": "^4.41.2", - "webpack-cli": "^3.3.10", - "webpack-dev-server": "^3.9.0", - "yargs": "^14.2.0" + "yargs": "^15.3.1" }, "browserslist": [ "last 1 version", "> 0.25%", "not maintained node versions", "not dead" - ] + ], + "dependencies": {} } diff --git a/spec/RAFPlugin.js b/spec/RAFPlugin.js index c644ee4..61eed46 100644 --- a/spec/RAFPlugin.js +++ b/spec/RAFPlugin.js @@ -1,3 +1,4 @@ +/* globals jasmine */ /** * Jasmine RequestAnimationFrame: a set of helpers for testing funcionality * that uses requestAnimationFrame under the Jasmine BDD framework for JavaScript. @@ -83,9 +84,4 @@ function RAFPlugin (jasmine) { jasmine.RequestAnimationFrame = new MockRAF() } -// if (!module) { RAFPlugin(jasmine) -// } else { -// module.exports.RAFPlugin = RAFPlugin - -// } diff --git a/spec/SpecRunner.html b/spec/SpecRunner.html index d5b20af..56a8885 100644 --- a/spec/SpecRunner.html +++ b/spec/SpecRunner.html @@ -14,91 +14,14 @@ <link rel="stylesheet" href="fixtures/fixture.css"> - <!-- include source files here... --> - <script src="../dist/polyfills.js" charset="utf-8"></script> - <script src="../dist/polyfillsIE.js" charset="utf-8"></script> - <script src="../dist/svg.js" charset="utf-8"></script> - </head> <body> - <svg height="0" width="0" id="inlineSVG"> - <defs> - <linearGradient> - <stop offset="5%" stop-color="green"/> - <stop offset="95%" stop-color="gold"/> - </linearGradient> - <radialGradient> - <stop offset="10%" stop-color="gold"/> - <stop offset="95%" stop-color="green"/> - </radialGradient> - </defs> - <desc>Some description</desc> - <path id="lineAB" d="M 100 350 l 150 -300" stroke="red" stroke-width="3" fill="none" /> - <path id="lineBC" d="M 250 50 l 150 300" stroke="red" stroke-width="3" fill="none" /> - <path d="M 175 200 l 150 0" stroke="green" stroke-width="3" fill="none" /> - <path d="M 100 350 q 150 -300 300 0" stroke="blue" stroke-width="5" fill="none" /> - <g stroke="black" stroke-width="3" fill="black" id="pointGroup"> - <circle id="pointA" cx="100" cy="350" r="3" /> - <circle id="pointB" cx="250" cy="50" r="3" /> - <circle id="pointC" cx="400" cy="350" r="3" /> - </g> - <g font-size="30" font="sans-serif" fill="black" stroke="none" text-anchor="middle" id="labelGroup"> - <text x="100" y="350" dx="-30">A</text> - <text x="250" y="50" dy="-10">B</text> - <text x="400" y="350" dx="30">C</text> - </g> - <polygon points="200,10 250,190 160,210" /> - <polyline points="20,20 40,25 60,40 80,120 120,140 200,180" /> - </svg> - <!-- include spec files here... --> - <script src="spec/adopter.js"></script> - <script src="spec/arrange.js"></script> - <script src="spec/array.js"></script> - <script src="spec/bare.js"></script> - <script src="spec/boxes.js"></script> - <script src="spec/circle.js"></script> - <script src="spec/clip.js"></script> - <script src="spec/color.js"></script> - <script src="spec/container.js"></script> - <script src="spec/defs.js"></script> - <script src="spec/doc.js"></script> - <script src="spec/easing.js"></script> - <script src="spec/element.js"></script> - <script src="spec/ellipse.js"></script> - <script src="spec/event.js"></script> - <script src="spec/fx.js"></script> - <script src="spec/gradient.js"></script> - <script src="spec/helper.js"></script> - <script src="spec/image.js"></script> - <script src="spec/line.js"></script> - <script src="spec/mask.js"></script> - <script src="spec/matrix.js"></script> - <script src="spec/memory.js"></script> - <script src="spec/number.js"></script> - <script src="spec/path.js"></script> - <script src="spec/pattern.js"></script> - <script src="spec/point.js"></script> - <script src="spec/polygon.js"></script> - <script src="spec/polyline.js"></script> - <script src="spec/rect.js"></script> - <script src="spec/regex.js"></script> - <script src="spec/selector.js"></script> - <script src="spec/sugar.js"></script> - <script src="spec/svg.js"></script> - <script src="spec/symbol.js"></script> - <script src="spec/textpath.js"></script> - <script src="spec/transformations.js"></script> - <script src="spec/use.js"></script> - <script src="spec/utils.js"></script> - <script src="spec/morphing.js"></script> - <script src="spec/animator.js"></script> - <script src="spec/runner.js"></script> - <script src="spec/queue.js"></script> - <script src="spec/timeline.js"></script> + <script src="../dist/polyfillsIE.js"></script> + <script src="es5TestBundle.js"></script> </body> </html> diff --git a/spec/spec/adopter.js b/spec/spec/adopter.js deleted file mode 100644 index 05c1517..0000000 --- a/spec/spec/adopter.js +++ /dev/null @@ -1,79 +0,0 @@ -describe('Adopter', function() { - var path, polyline, polygon, linearGradient, radialGradient - - beforeEach(function() { - path = SVG('#lineAB') - polyline = SVG('#inlineSVG').find('polyline')[0] - polygon = SVG('#inlineSVG').find('polygon')[0] - linearGradient = SVG('#inlineSVG').find('linearGradient')[0] - radialGradient = SVG('#inlineSVG').find('radialGradient')[0] - }) - - describe('with SVG.Svg instance', function() { - it('adopts the main svg document when parent() method is called on first level children', function() { - expect(path.parent() instanceof SVG.Svg).toBeTruthy() - }) - it('defines a xmlns attribute', function() { - expect(path.parent().node.getAttribute('xmlns')).toBe(SVG.namespaces.ns) - }) - it('defines a version attribute', function() { - expect(path.parent().node.getAttribute('version')).toBe('1.1') - }) - it('defines a xmlns:xlink attribute', function() { - expect(path.parent().node.getAttribute('xmlns:xlink')).toBe(SVG.namespaces.xlink) - }) - it('initializes a defs node', function() { - expect(path.defs() instanceof SVG.Defs).toBe(true) - }) - }) - - describe('with SVG.Path instance', function() { - it('adopts an exiting path element', function() { - expect(path instanceof SVG.Path).toBeTruthy() - }) - it('modifies an adopted element', function() { - path.fill('#f06') - expect(path.node.getAttribute('fill')).toBe('#ff0066') - }) - it('parses d attribute to SVG.PathArray', function() { - expect(path.array() instanceof SVG.PathArray).toBeTruthy() - }) - }) - - describe('with SVG.Polyline instance', function() { - it('parses points attribute to SVG.PointArray', function() { - expect(polyline.array() instanceof SVG.PointArray).toBeTruthy() - }) - }) - - describe('with SVG.Polygon instance', function() { - it('parses points attribute to SVG.PointArray', function() { - expect(polygon.array() instanceof SVG.PointArray).toBeTruthy() - }) - }) - - describe('with linear SVG.Gradient instance', function() { - it('is instance of SVG.Gradient', function() { - expect(linearGradient instanceof SVG.Gradient).toBeTruthy() - }) - it('has type of linearGradient', function() { - expect(linearGradient.type).toBe('linearGradient') // actually it should be 'linear'. see #606 - }) - }) - - describe('with radial SVG.Gradient instance', function() { - it('is instance of SVG.Gradient', function() { - expect(radialGradient instanceof SVG.Gradient).toBeTruthy() - }) - it('has type of radialGradient', function() { - expect(radialGradient.type).toBe('radialGradient') // actually it should be 'radial'. see #606 - }) - }) - - describe('with node that has no matching svg.js class', function() { - it('wraps the node in the Dom class', function() { - var desc = SVG('#inlineSVG').find('desc')[0] - expect(desc instanceof SVG.Dom).toBeTruthy() - }) - }) -}) diff --git a/spec/spec/animation/Morphable.js b/spec/spec/animation/Morphable.js index f703f97..510398c 100644 --- a/spec/spec/animation/Morphable.js +++ b/spec/spec/animation/Morphable.js @@ -360,5 +360,14 @@ describe('Morphable.js', () => { expect(bag.valueOf()).toEqual({ fill: objectContaining(new Color()), bar: 2 }) }) }) + + describe('align()', () => { + it('aligns color spaces between two object bags', () => { + const bag1 = new ObjectBag({ x: 1, y: '#fff' }) + const bag2 = new ObjectBag({ x: 2, y: new Color().hsl() }) + bag1.align(bag2.toArray()) + expect(bag1.toArray()).toEqual([ 'x', SVGNumber, 2, 1, '', 'y', Color, 5, 0, 0, 100, 0, 'hsl' ]) + }) + }) }) }) diff --git a/spec/spec/animation/Runner.js b/spec/spec/animation/Runner.js index 08fdbdc..b22bdcc 100644 --- a/spec/spec/animation/Runner.js +++ b/spec/spec/animation/Runner.js @@ -1,6 +1,6 @@ /* globals describe, expect, it, beforeEach, afterEach, spyOn, jasmine */ -import { Runner, defaults, Ease, Controller, SVG, Timeline, Rect, Morphable, Animator, Queue, Matrix, Color, Box, Polygon, PathArray, PointArray } from '../../../src/main.js' +import { Runner, defaults, Ease, Controller, SVG, Timeline, Rect, Morphable, Animator, Queue, Matrix, Color, Box, Polygon, PointArray } from '../../../src/main.js' import { FakeRunner, RunnerArray } from '../../../src/animation/Runner.js' import { getWindow } from '../../../src/utils/window.js' import SVGNumber from '../../../src/types/SVGNumber.js' diff --git a/spec/spec/arrange.js b/spec/spec/arrange.js deleted file mode 100644 index ea0ea2b..0000000 --- a/spec/spec/arrange.js +++ /dev/null @@ -1,172 +0,0 @@ -describe('Arrange', function() { - var e1, e2, e3 - - beforeEach(function() { - draw.clear() - - e1 = draw.rect(100,100).move(10,10).attr('id', 'e1') - e2 = draw.ellipse(100,100).move(20,20).attr('id', 'e2') - e3 = draw.line(0,0,100,100).move(30,30).attr('id', 'e3') - }) - - describe('siblings()', function() { - it('returns all siblings of targeted element', function() { - expect(e1.siblings().length).toBe(3+parserInDoc) - expect(parser.concat([e1,e2,e3])).toEqual(e2.siblings()) - }) - }) - - describe('position()', function() { - it('returns the index position within it\'s parent', function() { - expect(e1.siblings().length).toBe(3+parserInDoc) - expect(e1.position()).toBe(0+parserInDoc) - expect(e2.position()).toBe(1+parserInDoc) - expect(e3.position()).toBe(2+parserInDoc) - }) - }) - - describe('next()', function() { - it('returns the next sibling within the parent element', function() { - expect(e1.next()).toBe(e2) - expect(e2.next()).toBe(e3) - expect(e3.next()).toBe(undefined) - }) - }) - - describe('prev()', function() { - it('returns the previous sibling within the parent element', function() { - expect(e1.prev()).toBe(parser[0]) - expect(e2.prev()).toBe(e1) - expect(e3.prev()).toBe(e2) - }) - }) - - describe('forward()', function() { - it('returns the element itself', function() { - expect(e1.forward()).toBe(e1) - }) - it('moves the element one step forward within its parent', function() { - e1.forward() - expect(e1.position()).toBe(1+parserInDoc) - expect(e2.position()).toBe(0+parserInDoc) - expect(e3.position()).toBe(2+parserInDoc) - }) - it('keeps the last element at the same position', function() { - e3.forward() - expect(e3.position()).toBe(2+parserInDoc) - }) - it('keeps the defs on top of the stack', function() { - draw.defs() - e3.forward() - - expect(draw.node.childNodes[2+parserInDoc]).toBe(e3.node) - expect(draw.node.childNodes[3+parserInDoc]).toBe(draw.defs().node) - }) - }) - - describe('backward()', function() { - it('returns the element itself', function() { - if(parserInDoc){ - expect(parser[0].backward()).toBe(parser[0]) - }else{ - expect(e1.backward()).toBe(e1) - } - }) - it('moves the element one step backwards within its parent', function() { - e3.backward() - expect(e1.position()).toBe(0+parserInDoc) - expect(e2.position()).toBe(2+parserInDoc) - expect(e3.position()).toBe(1+parserInDoc) - }) - it('keeps the first element at the same position', function() { - e3.backward() - expect(e1.position()).toBe(0+parserInDoc) - }) - }) - - describe('front()', function() { - it('returns the element itself', function() { - expect(e3.front()).toBe(e3) - }) - it('moves the element to the top of the stack within its parent', function() { - e1.front() - expect(e1.position()).toBe(2+parserInDoc) - expect(e2.position()).toBe(0+parserInDoc) - expect(e3.position()).toBe(1+parserInDoc) - }) - it('keeps the last element at the same position', function() { - e3.front() - expect(e3.position()).toBe(2+parserInDoc) - }) - it('keeps the defs on top of the stack', function() { - e1.front() - expect(draw.node.childNodes[2+parserInDoc]).toBe(e1.node) - expect(draw.node.childNodes[3+parserInDoc]).toBe(draw.defs().node) - }) - }) - - describe('back()', function() { - it('returns the element itself', function() { - expect(e3.back()).toBe(e3) - }) - it('moves the element to the bottom of the stack within its parent', function() { - e3.back() - expect(e1.position()).toBe(1+parserInDoc) - expect(e2.position()).toBe(2+parserInDoc) - expect(e3.position()).toBe(0) - }) - it('keeps the first element at the same position', function() { - e1.back() - expect(e1.position()).toBe(0) - }) - }) - - describe('before()', function() { - it('returns the targeted element itself', function() { - expect(e3.before(e1)).toBe(e3) - }) - it('inserts a given element before the targeted element', function() { - e3.before(e1) - expect(e1.position()).toBe(1+parserInDoc) - expect(e2.position()).toBe(0+parserInDoc) - expect(e3.position()).toBe(2+parserInDoc) - }) - it('moves elements between containers', function() { - var group = draw.group() - , e4 = group.rect(80,120) - , e5 = group.rect(80,120) - , e6 = group.rect(80,120) - - e2.before(e5) - expect(e1.position()).toBe(0+parserInDoc) - expect(e2.position()).toBe(2+parserInDoc) - expect(e3.position()).toBe(3+parserInDoc) - expect(e5.position()).toBe(1+parserInDoc) - }) - }) - - describe('after()', function() { - it('returns the targeted element itself', function() { - expect(e3.after(e1)).toBe(e3) - }) - it('inserts a given element after the targeted element', function() { - e3.after(e1) - expect(e1.position()).toBe(2+parserInDoc) - expect(e2.position()).toBe(0+parserInDoc) - expect(e3.position()).toBe(1+parserInDoc) - }) - it('moves elements between containers', function() { - var group = draw.group() - , e4 = group.rect(80,120) - , e5 = group.rect(80,120) - , e6 = group.rect(80,120) - - e2.after(e5) - expect(e1.position()).toBe(0+parserInDoc) - expect(e2.position()).toBe(1+parserInDoc) - expect(e3.position()).toBe(3+parserInDoc) - expect(e5.position()).toBe(2+parserInDoc) - }) - }) - -}) diff --git a/spec/spec/array.js b/spec/spec/array.js deleted file mode 100644 index 03cffa3..0000000 --- a/spec/spec/array.js +++ /dev/null @@ -1,324 +0,0 @@ -describe('Array', function () { - var array, arr1, arr2 - - it('parses a matrix array correctly to string', function() { - array = new SVG.Array([ .343, .669, .119, 0, 0 - , .249, -.626, .130, 0, 0 - , .172, .334, .111, 0, 0 - , .000, .000, .000, 1, -0 ]) - - expect(array + '').toBe('0.343 0.669 0.119 0 0 0.249 -0.626 0.13 0 0 0.172 0.334 0.111 0 0 0 0 0 1 0') - }) - it('parses space seperated string and converts it to array', function() { - expect((new SVG.Array('1 2 3 4')).valueOf()).toEqual([1,2,3,4]) - }) - it('parses comma seperated string and converts it to array', function() { - expect((new SVG.Array('1,2,3,4')).valueOf()).toEqual([1,2,3,4]) - }) - describe('reverse()', function() { - it('reverses the array', function() { - array = new SVG.Array([1 ,2 ,3, 4, 5]).reverse() - expect(array.valueOf()).toEqual([5, 4, 3, 2, 1]) - }) - it('returns itself', function() { - array = new SVG.Array() - expect(array.reverse()).toBe(array) - }) - }) - describe('clone()', function() { - it('creates a deep clone of the array', function() { - array = new SVG.Array([1, 2, 3, 4, 5]) - - clone = array.clone() - - expect(array).toEqual(clone) - expect(array).not.toBe(clone) - - array = new SVG.Array([[1,2], [3, 4], [5]]) - clone = array.clone() - - expect(array).toEqual(array) - for(var i = 0, len = array.length; i; ++i){ - expect(array[i]).not.toBe(clone[i]) - } - }) - it('also works with PointArray', function() { - array = new SVG.PointArray([1,2,3,4,5,6]) - clone = array.clone() - - expect(array).toEqual(clone) - expect(array).not.toBe(clone) - - for(var i = 0, len = array.length; i; ++i){ - expect(array[i]).not.toBe(clone[i]) - } - }) - it('also works with PathArray', function() { - array = new SVG.PathArray([['M',1,2],['L',3,4],['L',5,6]]) - clone = array.clone() - - expect(array).toEqual(clone) - expect(array).not.toBe(clone) - - for(var i = 0, len = array.length; i; ++i){ - expect(array[i]).not.toBe(clone[i]) - } - }) - }) -}) - - -describe('PointArray', function () { - it('parses a string to a point array', function() { - var array = new SVG.PointArray('0,1 -.05,7.95 1000.0001,-200.222') - - expect(array.valueOf()).toEqual([[0, 1], [-0.05, 7.95], [1000.0001, -200.222]]) - }) - it('parses a points array correctly to string', function() { - var array = new SVG.PointArray([[0,.15], [-100,-3.141592654], [50,100]]) - - expect(array + '').toBe('0,0.15 -100,-3.141592654 50,100') - }) - it('parses a flat array of x/y coordinates to a point array', function() { - var array = new SVG.PointArray([1,4, 5,68, 12,24]) - - expect(array.valueOf()).toEqual([[1,4], [5,68], [12,24]]) - }) - it('parses points with space delimitered x/y coordinates', function() { - var array = new SVG.PointArray('221.08 191.79 0.46 191.79 0.46 63.92 63.8 0.46 284.46 0.46 284.46 128.37 221.08 191.79') - - expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79') - }) - it('parses points with comma delimitered x/y coordinates', function() { - var array = new SVG.PointArray('221.08,191.79,0.46,191.79,0.46,63.92,63.8,0.46,284.46,0.46,284.46,128.37,221.08,191.79') - - expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79') - }) - it('parses points with comma and space delimitered x/y coordinates', function() { - var array = new SVG.PointArray('221.08, 191.79, 0.46, 191.79, 0.46, 63.92, 63.8, 0.46, 284.46, 0.46, 284.46, 128.37, 221.08, 191.79') - - expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79') - }) - it('parses points with space and comma delimitered x/y coordinates', function() { - var array = new SVG.PointArray('221.08 ,191.79 ,0.46 ,191.79 ,0.46 ,63.92 ,63.8 ,0.46 ,284.46 ,0.46 ,284.46 ,128.37 ,221.08 ,191.79') - - expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79') - }) - it('parses points with redundant spaces at the end', function() { - var array = new SVG.PointArray('2176.6,1708.8 2176.4,1755.8 2245.8,1801.5 2297,1787.8 ') - - expect(array + '').toBe('2176.6,1708.8 2176.4,1755.8 2245.8,1801.5 2297,1787.8') - }) - it('parses points with space delimitered x/y coordinates - even with leading or trailing space', function() { - var array = new SVG.PointArray(' 1 2 3 4 ') - - expect(array + '').toBe('1,2 3,4') - }) - it('parses odd number of points with space delimitered x/y coordinates and silently remove the odd point', function() { - // this is according to spec: https://svgwg.org/svg2-draft/shapes.html#DataTypePoints - - var array = new SVG.PointArray('1 2 3') - - expect(array + '').toBe('1,2') - }) - it('parses odd number of points in a flat array of x/y coordinates and silently remove the odd point', function() { - // this is according to spec: https://svgwg.org/svg2-draft/shapes.html#DataTypePoints - - var array = new SVG.PointArray([1, 2, 3]) - - expect(array.valueOf()).toEqual([[1,2]]) - }) - - describe('size()', function() { - it('correctly sizes the points over the whole area', function() { - var array = new SVG.PointArray([10, 10, 20, 20, 30, 30]) - expect(array.size(60, 60).valueOf()).toEqual([[10,10], [40, 40], [70, 70]]) - }) - - it('let coordinates untouched when width/height is zero', function() { - var array = new SVG.PointArray([10, 10, 10, 20, 10, 30]) - expect(array.size(60, 60).valueOf()).toEqual([[10,10], [10, 40], [10, 70]]) - - array = new SVG.PointArray([10, 10, 20, 10, 30, 10]) - expect(array.size(60, 60).valueOf()).toEqual([[10,10], [40, 10], [70, 10]]) - }) - - }) -}) - -describe('PathArray', function () { - var p1, p2, p3, p4, p5, p6, p7 - - beforeEach(function() { - p1 = new SVG.PathArray('m10 10 h 80 v 80 h -80 l 300 400 z') - p2 = new SVG.PathArray('m10 80 c 40 10 65 10 95 80 s 150 150 180 80 t 300 300 q 52 10 95 80 z') - p3 = new SVG.PathArray('m80 80 A 45 45, 0, 0, 0, 125 125 L 125 80 z') - p4 = new SVG.PathArray('M215.458,245.23c0,0,77.403,0,94.274,0S405,216.451,405,138.054S329.581,15,287.9,15c-41.68,0-139.924,0-170.688,0C86.45,15,15,60.65,15,134.084c0,73.434,96.259,112.137,114.122,112.137C146.984,246.221,215.458,245.23,215.458,245.23z') - p5 = new SVG.PathArray('M10 10-45-30.5.5 .89L2e-2.5.5.5-.5C.5.5.5.5.5.5L-3-4z') - p6 = new SVG.PathArray('m 0,0 0,3189 2209,0 0,-3189 -2209,0 z m 154,154 1901,0 0,2881 -1901,0 0,-2881 z') - - }) - - it('converts to absolute values', function() { - expect(p1.toString()).toBe('M10 10H90V90H10L310 490Z ') - expect(p2.toString()).toBe('M10 80C50 90 75 90 105 160S255 310 285 240T585 540Q637 550 680 620Z ') - expect(p3.toString()).toBe('M80 80A45 45 0 0 0 125 125L125 80Z ') - expect(p4.toString()).toBe('M215.458 245.23C215.458 245.23 292.861 245.23 309.73199999999997 245.23S405 216.451 405 138.054S329.581 15 287.9 15C246.21999999999997 15 147.97599999999997 15 117.21199999999999 15C86.45 15 15 60.65 15 134.084C15 207.518 111.259 246.221 129.122 246.221C146.984 246.221 215.458 245.23 215.458 245.23Z ') - expect(p6.toString()).toBe('M0 0L0 3189L2209 3189L2209 0L0 0ZM154 154L2055 154L2055 3035L154 3035L154 154Z ') - }) - - it('parses difficult syntax correctly', function() { - expect(p5.toString()).toBe('M10 10L-45 -30.5L0.5 0.89L0.02 0.5L0.5 -0.5C0.5 0.5 0.5 0.5 0.5 0.5L-3 -4Z ') - }) - - it('parses flat arrays correctly', function() { - p6 = new SVG.PathArray([ 'M', 0, 0, 'L', 100, 100, 'z' ]) - expect(p6.toString()).toBe('M0 0L100 100Z ') - }) - - it('parses nested arrays correctly', function() { - p7 = new SVG.PathArray([ ['M', 0, 0], ['L', 100, 100], ['z'] ]) - expect(p7.toString()).toBe('M0 0L100 100Z ') - }) - - // this test is designed to cover a certain line but it doesnt work because of #608 - it('returns the valueOf when PathArray is given', function() { - var p = new SVG.PathArray('m10 10 h 80 v 80 h -80 l 300 400 z') - - expect((new SVG.PathArray(p))).toEqual(p) - }) - - it('can handle all formats which can be used', function() { - // when no command is specified after move, line is used automatically (specs say so) - expect(new SVG.PathArray('M10 10 80 80 30 30 Z').toString()).toBe('M10 10L80 80L30 30Z ') - - // parsing can handle 0.5.3.3.2 stuff - expect(new SVG.PathArray('M10 10L.5.5.3.3Z').toString()).toBe('M10 10L0.5 0.5L0.3 0.3Z ') - }) - - describe('move()', function() { - it('moves all points in a straight path', function() { - expect(p1.move(100,200).toString()).toBe('M100 200H180V280H100L400 680Z ') - }) - it('moves all points in a curved path', function() { - expect(p2.move(100,200).toString()).toBe('M100 200C140 210 165 210 195 280S345 430 375 360T675 660Q727 670 770 740Z ') - }) - it('moves all points in a arc path', function() { - expect(p3.move(100,200).toString()).toBe('M100 200A45 45 0 0 0 145 245L145 200Z ') - }) - }) - - describe('size()', function() { - it('resizes all points in a straight path', function() { - expect(p1.size(600,200).toString()).toBe('M10 10H170V43.333333333333336H10L610 210Z ') - }) - it('resizes all points in a curved path', function() { - expect(p2.size(600,200).toString()).toBe('M10 80C45.82089552238806 83.70370370370371 68.2089552238806 83.70370370370371 95.07462686567165 109.62962962962963S229.40298507462686 165.1851851851852 256.2686567164179 139.25925925925927T524.9253731343283 250.37037037037038Q571.4925373134329 254.07407407407408 610 280Z ') - }) - it('resizes all points in a arc path', function() { - var expected = [ - ['M', 80, 80], - ['A', 600, 200, 0, 0, 0, 680, 280], - ['L', 680, 80], - ['Z'] - ] - - var toBeTested = p3.size(600,200) - - for(var i = toBeTested.length; i--;) { - expect(toBeTested[i].shift().toUpperCase()).toBe(expected[i].shift().toUpperCase()) - for(var j = toBeTested[i].length; j--;) { - expect(toBeTested[i][j]).toBeCloseTo(expected[i][j]) - } - } - }) - }) - - describe('equalCommands()', function() { - it('return true if the passed path array use the same commands', function() { - var pathArray1 = new SVG.PathArray('m -1500,-478 a 292,195 0 0 1 262,205 l -565,319 c 0,0 -134,-374 51,-251 185,122 251,-273 251,-273 z') - , pathArray2 = new SVG.PathArray('m -680, 527 a 292,195 0 0 1 262,205 l -565,319 c 0,0 -134,-374 51,-251 185,122 251,-273 251,-273 z') - - expect(pathArray1.equalCommands(pathArray2)).toBe(true) - }) - it('return false if the passed path array does not use the same commands', function() { - var pathArray1 = new SVG.PathArray('m -1500,-478 a 292,195 0 0 1 262,205 l -565,319 c 0,0 -134,-374 51,-251 185,122 251,-273 251,-273 z') - , pathArray2 = new SVG.PathArray('m - 663, 521 c 147,178 118,-25 245,210 l -565,319 c 0,0 -134,-374 51,-251 185,122 268,-278 268,-278 z') - - expect(pathArray1.equalCommands(pathArray2)).toBe(false) - }) - }) - // - // describe('morph()', function() { - // it('should set the attribute destination to the passed path array when it have the same comands as this path array', function() { - // var pathArray1 = new SVG.PathArray('m -1500,-478 a 292,195 0 0 1 262,205 l -565,319 c 0,0 -134,-374 51,-251 185,122 251,-273 251,-273 z') - // , pathArray2 = new SVG.PathArray('m -680, 527 a 292,195 0 0 1 262,205 l -565,319 c 0,0 -134,-374 51,-251 185,122 251,-273 251,-273 z') - // - // pathArray1.morph(pathArray2) - // expect(pathArray1.destination).toEqual(pathArray2) - // }) - // it('should set the attribute destination to null when the passed path array does not have the same comands as this path array', function() { - // var pathArray1 = new SVG.PathArray('m -1500,-478 a 292,195 0 0 1 262,205 l -565,319 c 0,0 -134,-374 51,-251 185,122 251,-273 251,-273 z') - // , pathArray2 = new SVG.PathArray('m - 663, 521 c 147,178 118,-25 245,210 l -565,319 c 0,0 -134,-374 51,-251 185,122 268,-278 268,-278 z') - // - // pathArray1.morph(pathArray2) - // expect(pathArray1.destination).toBeNull() - // }) - // }) - // - // describe('at()', function() { - // it('returns a morphed path array at a given position', function() { - // var pathArray1 = new SVG.PathArray("M 63 25 A 15 15 0 0 1 73 40 A 15 15 0 0 1 61 53 C 49 36 50 59 50 59 L 33 55 Z") - // , pathArray2 = new SVG.PathArray("M 132 40 A 15 15 0 0 1 141 54 A 15 15 0 0 1 130 67 C 118 51 119 73 119 73 L 103 69 Z") - // , morphedPathArray = pathArray1.morph(pathArray2).at(0.5) - // , sourceArray = pathArray1, destinationArray = pathArray1.destination - // , morphedArray = morphedPathArray - // , i, il, j, jl - // - // expect(morphedArray.length).toBe(sourceArray.length) - // - // // For all the commands - // for(i = 0, il = sourceArray.length; i < il; i++) { - // // Expect the current command to be the same - // expect(morphedArray[i][0]).toBe(sourceArray[i][0]) - // expect(morphedArray[i].length).toBe(sourceArray[i].length) - // - // // For all the parameters of the current command - // for(j = 1, jl = sourceArray[i].length; j < jl; j++) { - // expect(morphedArray[i][j]).toBe((sourceArray[i][j] + destinationArray[i][j]) / 2) - // } - // } - // }) - // it('should interpolate flags and booleans as fractions between zero and one, with any non-zero value considered to be a value of one/true', function() { - // // Only the Elliptical arc command use flags, it has the following form: - // // A rx ry x-axis-rotation large-arc-flag sweep-flag x y - // var pathArray1 = new SVG.PathArray('M 13 13 A 25 37 0 0 1 43 25') - // , pathArray2 = new SVG.PathArray('M 101 55 A 25 37 0 1 0 130 67') - // , morphedPathArray - // - // pathArray1.morph(pathArray2) - // - // // The morphedPathArray contain 2 commands: [['M', ...], ['A', ...]] - // // Elliptical arc command in a path array followed by corresponding indexes: - // // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y] - // // 0 1 2 3 4 5 6 7 - // morphedPathArray = pathArray1.at(0) - // expect(morphedPathArray[1][4]).toBe(0) - // expect(morphedPathArray[1][5]).toBe(1) - // - // morphedPathArray = pathArray1.at(0.5) - // expect(morphedPathArray[1][4]).toBe(1) - // expect(morphedPathArray[1][5]).toBe(1) - // - // morphedPathArray = pathArray1.at(1) - // expect(morphedPathArray[1][4]).toBe(1) - // expect(morphedPathArray[1][5]).toBe(0) - // }) - // it('return itself if the destination attribute is null', function(){ - // var pathArray = new SVG.PathArray('M 13 13 A 25 37 0 0 1 43 25') - // pathArray.destination = null - // expect(pathArray.at(0.45)).toBe(pathArray) - // }) - // }) - -}) diff --git a/spec/spec/boxes.js b/spec/spec/boxes.js deleted file mode 100644 index d5581b2..0000000 --- a/spec/spec/boxes.js +++ /dev/null @@ -1,237 +0,0 @@ -describe('Box', function() { - describe('initialization', function() { - var box - - it('creates a new box with default values', function() { - box = new SVG.Box - - expect(box instanceof SVG.Box).toBe(true) - expect(box).toEqual(jasmine.objectContaining({ - x:0, y:0, cx:0, cy:0, width:0, height:0 - })) - }) - - it('creates a new box from parsed string', function() { - box = new SVG.Box('10. 100 200 300') - expect(box.x).toBe(10) - expect(box.y).toBe(100) - expect(box.width).toBe(200) - expect(box.height).toBe(300) - expect(box.cx).toBe(110) - expect(box.cy).toBe(250) - expect(box.x2).toBe(210) - expect(box.y2).toBe(400) - }) - - it('creates a new box from parsed string with comma as delimiter', function() { - box = new SVG.Box('10,100, 200 , 300') - expect(box.x).toBe(10) - expect(box.y).toBe(100) - expect(box.width).toBe(200) - expect(box.height).toBe(300) - }) - - it('creates a new box from array', function() { - box = new SVG.Box([10, 100, 200, 300]) - - expect(box.x).toBe(10) - expect(box.y).toBe(100) - expect(box.width).toBe(200) - expect(box.height).toBe(300) - }) - - it('creates a new box from object', function() { - box = new SVG.Box({x:10, y:100, width:200, height:300}) - - expect(box.x).toBe(10) - expect(box.y).toBe(100) - expect(box.width).toBe(200) - expect(box.height).toBe(300) - }) - - it('creates a new box from object width left and top instead of x and y', function() { - box = new SVG.Box({left:10, top:100, width:200, height:300}) - - expect(box.x).toBe(10) - expect(box.y).toBe(100) - expect(box.width).toBe(200) - expect(box.height).toBe(300) - }) - - it('creates a new viewbox from 4 arguments', function() { - box = new SVG.Box(10, 100, 200, 300) - - expect(box.x).toBe(10) - expect(box.y).toBe(100) - expect(box.width).toBe(200) - expect(box.height).toBe(300) - }) - - it('creates a new box from parsed string with exponential values', function() { - box = new SVG.Box('-1.12e1 1e-2 +2e2 +.3e+4') - - expect(box.x).toBe(-11.2) - expect(box.y).toBe(0.01) - expect(box.width).toBe(200) - expect(box.height).toBe(3000) - }) - - }) - - describe('merge()', function() { - it('merges various bounding boxes', function() { - var box1 = new SVG.Box(50, 50, 100, 100) - var box2 = new SVG.Box(300, 400, 100, 100) - var box3 = new SVG.Box(500, 100, 100, 100) - var merged = box1.merge(box2).merge(box3) - - expect(merged).toEqual(jasmine.objectContaining({ - x: 50, y: 50, cx: 325, cy: 275, width: 550, height: 450 - })) - }) - it('returns a new instance', function() { - var box1 = new SVG.Box(50, 50, 100, 100) - var box2 = new SVG.Box(300, 400, 100, 100) - var merged = box1.merge(box2) - expect(box1).not.toBe(merged) - expect(box2).not.toBe(merged) - - expect(merged instanceof SVG.Box).toBe(true) - }) - }) - - describe('transform()', function() { - it('transforms the box with given matrix', function() { - var box1 = new SVG.Box(50, 50, 100, 100).transform(new SVG.Matrix(1,0,0,1,20,20)) - var box2 = new SVG.Box(50, 50, 100, 100).transform(new SVG.Matrix(2,0,0,2,0,0)) - var box3 = new SVG.Box(-200, -200, 100, 100).transform(new SVG.Matrix(1,0,0,1,-20,-20)) - - expect(box1).toEqual(jasmine.objectContaining({ - x: 70, y: 70, cx: 120, cy: 120, width: 100, height: 100 - })) - - expect(box2).toEqual(jasmine.objectContaining({ - x: 100, y: 100, cx: 200, cy: 200, width: 200, height: 200 - })) - - expect(box3).toEqual(jasmine.objectContaining({ - x: -220, y: -220, cx: -170, cy: -170, width: 100, height: 100 - })) - }) - }) -}) - - -describe('Boxes', function() { - var rect, nested, offset - - beforeEach(function() { - offset = draw.screenCTM() - draw.viewbox(100,100, 200, 200) - nested = draw.nested().size(200, 200).move(100,100).viewbox(0, 0, 100, 100) - rect = nested.rect(50, 180).stroke({width:0}).move(25, 90).transform({scale: 2, origin: [0, 0]}).relative(10, 10) - }) - afterEach(function() { - draw.clear().attr('viewBox', null) - }) - - describe('bbox()', function() { - it('returns an instance of SVG.Box', function() { - expect(rect.bbox() instanceof SVG.Box).toBeTruthy() - }) - it('matches the size of the target element, ignoring transformations', function() { - var box = rect.bbox() - - expect(box).toEqual(jasmine.objectContaining({ - x: 25, y: 90, cx: 50, cy: 180, width: 50, height: 180 - })) - }) - it('returns a box even if the element is not in the dom', function() { - var line = new SVG.Line().plot(0, 0, 50, 50) - var box = line.bbox() - - expect(box).toEqual(jasmine.objectContaining({ - x: 0, y: 0, width: 50, height: 50 - })) - - expect('Should not result into infinite loop').toBe('Should not result into infinite loop') - }) - it('returns a box even if the element is not in the dom and invisible', function() { - var line = new SVG.Line().plot(0, 0, 50, 50).hide() - var box = line.bbox() - - expect(box).toEqual(jasmine.objectContaining({ - x: 0, y: 0, width: 50, height: 50 - })) - - expect('Should not result into infinite loop').toBe('Should not result into infinite loop') - }) - }) - - describe('rbox()', function() { - it('returns an instance of SVG.Box', function() { - expect(rect.rbox() instanceof SVG.Box).toBeTruthy() - }) - - it('returns the elements box in absolute screen coordinates by default', function() { - var box = rect.rbox() - - expect(window.roundBox(box)).toEqual(jasmine.objectContaining(window.roundBox({ - x: 70 + offset.e, y: 200 + offset.f, width: 100, height: 360 - }))) - - }) - - it('returns the elements box in coordinates of given element (root)', function() { - var box = rect.rbox(draw) - - expect(window.roundBox(box)).toEqual(jasmine.objectContaining({ - x: 240, y: 500, width: 200, height: 720 - })) - }) - - it('returns the elements box in coordinates of given element (nested)', function() { - var box = rect.rbox(nested) - - expect(window.roundBox(box)).toEqual(jasmine.objectContaining({ - x: 70, y: 200, width: 100, height: 360 - })) - }) - }) - - describe('viewbox()', function() { - - beforeEach(function() { - draw.attr('viewBox', null) - }) - - it('should set the viewbox when four arguments are provided', function() { - draw.viewbox(0,0,100,100) - expect(draw.node.getAttribute('viewBox')).toBe('0 0 100 100') - }) - it('should set the viewbox when an object is provided as first argument', function() { - draw.viewbox({ x: 0, y: 0, width: 50, height: 50 }) - expect(draw.node.getAttribute('viewBox')).toBe('0 0 50 50') - }) - it('should set the viewbox when a string is provided as first argument', function() { - draw.viewbox('0 0 50 50') - expect(draw.node.getAttribute('viewBox')).toBe('0 0 50 50') - }) - it('should set the viewbox when an array is provided as first argument', function() { - draw.viewbox([0, 0, 50, 50]) - expect(draw.node.getAttribute('viewBox')).toBe('0 0 50 50') - }) - it('should accept negative values', function() { - draw.size(100,100).viewbox(-100, -100, 50, 50) - expect(draw.node.getAttribute('viewBox')).toEqual('-100 -100 50 50') - }) - it('should get the viewbox if no arguments are given', function() { - draw.viewbox(0, 0, 100, 100) - expect(draw.viewbox()).toEqual(new SVG.Box(0,0,100,100)) - }) - it('should get a nulled viewbox when no viewbox attribute is set', function() { - expect(draw.viewbox()).toEqual(new SVG.Box()) - }) - }) - -}) diff --git a/spec/spec/circle.js b/spec/spec/circle.js deleted file mode 100644 index 0f2c8f4..0000000 --- a/spec/spec/circle.js +++ /dev/null @@ -1,177 +0,0 @@ - -describe('Circle', function() { - var circle - - beforeEach(function() { - circle = draw.circle(240) - }) - - afterEach(function() { - draw.clear() - }) - - describe('x()', function() { - it('returns the value of x without an argument', function() { - expect(circle.x()).toBe(0) - }) - it('sets the value of x with the first argument', function() { - circle.x(123) - var box = circle.bbox() - expect(box.x).toBeCloseTo(123) - }) - }) - - describe('y()', function() { - it('returns the value of y without an argument', function() { - expect(circle.y()).toBe(0) - }) - it('sets the value of cy with the first argument', function() { - circle.y(345) - var box = circle.bbox() - expect(box.y).toBe(345) - }) - }) - - describe('cx()', function() { - it('returns the value of cx without an argument', function() { - expect(circle.cx()).toBe(120) - }) - it('sets the value of cx with the first argument', function() { - circle.cx(123) - var box = circle.bbox() - expect(box.cx).toBe(123) - }) - }) - - describe('cy()', function() { - it('returns the value of cy without an argument', function() { - expect(circle.cy()).toBe(120) - }) - it('sets the value of cy with the first argument', function() { - circle.cy(345) - var box = circle.bbox() - expect(box.cy).toBe(345) - }) - }) - - describe('radius()', function() { - it('sets the r attribute with the first argument', function() { - circle.radius(10) - expect(circle.node.getAttribute('r')).toBe('10') - }) - }) - - describe('rx()', function() { - it('sets the r attribute with the first argument', function() { - circle.rx(11) - expect(circle.node.getAttribute('r')).toBe('11') - }) - it('gets the r attribute without and argument', function() { - circle.rx() - expect(circle.node.getAttribute('r')).toBe('120') - }) - }) - - describe('ry()', function() { - it('sets the r attribute with the first argument', function() { - circle.ry(12) - expect(circle.node.getAttribute('r')).toBe('12') - }) - it('gets the r attribute without and argument', function() { - circle.ry() - expect(circle.node.getAttribute('r')).toBe('120') - }) - }) - - describe('move()', function() { - it('sets the x and y position', function() { - circle.move(123, 456) - var box = circle.bbox() - expect(box.x).toBeCloseTo(123) - expect(box.y).toBe(456) - }) - }) - - describe('dx()', function() { - it('moves the x positon of the element relative to the current position', function() { - circle.move(50, 60) - circle.dx(100) - expect(circle.node.getAttribute('cx')).toBe('270') - }) - }) - - describe('dy()', function() { - it('moves the y positon of the element relative to the current position', function() { - circle.move(50, 60) - circle.dy(120) - expect(circle.node.getAttribute('cy')).toBe('300') - }) - }) - - describe('dmove()', function() { - it('moves the x and y positon of the element relative to the current position', function() { - circle.move(50,60) - circle.dmove(80, 25) - expect(circle.node.getAttribute('cx')).toBe('250') - expect(circle.node.getAttribute('cy')).toBe('205') - }) - }) - - describe('center()', function() { - it('sets the cx and cy position', function() { - circle.center(321,567) - var box = circle.bbox() - expect(box.cx).toBe(321) - expect(box.cy).toBe(567) - }) - }) - - describe('width()', function() { - it('sets the width and height of the element', function() { - circle.width(82) - expect(circle.node.getAttribute('r')).toBe('41') - }) - it('gets the width and height of the element if the argument is null', function() { - expect((circle.width() / 2).toString()).toBe(circle.node.getAttribute('r')) - }) - }) - - describe('height()', function() { - it('sets the height and width of the element', function() { - circle.height(1236) - expect(circle.node.getAttribute('r')).toBe('618') - }) - it('gets the height and width of the element if the argument is null', function() { - expect((circle.height() / 2).toString()).toBe(circle.node.getAttribute('r')) - }) - }) - - describe('size()', function() { - it('defines the r of the element', function() { - circle.size(987) - expect(circle.node.getAttribute('r')).toBe((987 / 2).toString()) - }) - }) - - describe('scale()', function() { - it('should scale the element universally with one argument', function() { - var box = circle.scale(2).rbox() - - expect(box.width).toBe(circle.attr('r') * 2 * 2) - expect(box.height).toBe(circle.attr('r') * 2 * 2) - }) - it('should scale the element over individual x and y axes with two arguments', function() { - var box = circle.scale(2, 3.5).rbox() - - expect(box.width).toBe(circle.attr('r') * 2 * 2) - expect(box.height).toBe(circle.attr('r') * 2 * 3.5) - }) - }) - - describe('translate()', function() { - it('sets the translation of an element', function() { - circle.transform({ tx: 12, ty: 12 }) - expect(window.matrixStringToArray(circle.node.getAttribute('transform'))).toEqual([1,0,0,1,12,12]) - }) - }) -}) diff --git a/spec/spec/clip.js b/spec/spec/clip.js deleted file mode 100644 index f333039..0000000 --- a/spec/spec/clip.js +++ /dev/null @@ -1,62 +0,0 @@ -describe('ClipPath', function() { - var rect, circle - - beforeEach(function() { - rect = draw.rect(100,100) - circle = draw.circle(100).move(50, 50) - rect.clipWith(circle) - }) - - afterEach(function() { - draw.clear() - }) - - it('moves the clipping element to a new clip node', function() { - expect(circle.parent() instanceof SVG.ClipPath).toBe(true) - }) - - it('creates the clip node in the defs node', function() { - expect(circle.parent().parent()).toBe(draw.defs()) - }) - - it('sets the "clip-path" attribute on the cliped element with the clip id', function() { - expect(rect.attr('clip-path')).toBe('url("#' + circle.parent().id() + '")') - }) - - it('references the clip element in the masked element', function() { - expect(rect.clipper()).toBe(circle.parent()) - }) - - it('references the clipped element in the clipPath target list', function() { - expect(rect.clipper().targets().indexOf(rect) > -1).toBe(true) - }) - - it('reuses clip element when clip was given', function() { - var clip = rect.clipper() - expect(draw.rect(100,100).clipWith(clip).clipper()).toBe(clip) - }) - - it('unclips all clipped elements when being removed', function() { - rect.clipper().remove() - expect(rect.attr('clip-path')).toBe(undefined) - }) - - describe('unclip()', function() { - - it('clears the "clip-path" attribute on the clipped element', function() { - rect.unclip() - expect(rect.attr('clip-path')).toBe(undefined) - }) - - it('removes the reference to the clipping element', function() { - rect.unclip() - expect(rect.clipper()).toBe(null) - }) - - it('returns the clipPath element', function() { - expect(rect.unclip()).toBe(rect) - }) - - }) - -})
\ No newline at end of file diff --git a/spec/spec/container.js b/spec/spec/container.js deleted file mode 100644 index 6f63ba5..0000000 --- a/spec/spec/container.js +++ /dev/null @@ -1,377 +0,0 @@ -describe('Container', function() { - - beforeEach(function() { - draw.clear() - }) - - describe('rect()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.rect(100,100) - expect(draw.children().length).toBe(initial + 1) - }) - it('should create a rect', function() { - expect(draw.rect(100,100).type).toBe('rect') - }) - it('should create an instance of SVG.Rect', function() { - expect(draw.rect(100,100) instanceof SVG.Rect).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.rect(100,100) instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.rect(100,100) instanceof SVG.Element).toBe(true) - }) - }) - - describe('ellipse()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.ellipse(100,100) - expect(draw.children().length).toBe(initial + 1) - }) - it('should create an ellipse', function() { - expect(draw.ellipse(100,100).type).toBe('ellipse') - }) - it('should create an instance of SVG.Ellipse', function() { - expect(draw.ellipse(100,100) instanceof SVG.Ellipse).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.ellipse(100,100) instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.ellipse(100,100) instanceof SVG.Element).toBe(true) - }) - }) - - describe('circle()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.circle(100) - expect(draw.children().length).toBe(initial + 1) - }) - it('should create an circle', function() { - expect(draw.circle(100).type).toBe('circle') - }) - it('should create an instance of SVG.Circle', function() { - expect(draw.circle(100) instanceof SVG.Circle).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.circle(100) instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.circle(100) instanceof SVG.Element).toBe(true) - }) - }) - - describe('line()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.line(0,100,100,0) - expect(draw.children().length).toBe(initial + 1) - }) - it('should create a line', function() { - expect(draw.line(0,100,100,0).type).toBe('line') - }) - it('should create an instance of SVG.Line', function() { - expect(draw.line(0,100,100,0) instanceof SVG.Line).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.line(0,100,100,0) instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.line(0,100,100,0) instanceof SVG.Element).toBe(true) - }) - }) - - describe('polyline()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.polyline('0,0 100,0 100,100 0,100') - expect(draw.children().length).toBe(initial + 1) - }) - it('should create a polyline', function() { - expect(draw.polyline('0,0 100,0 100,100 0,100').type).toBe('polyline') - }) - it('should be an instance of SVG.Polyline', function() { - expect(draw.polyline('0,0 100,0 100,100 0,100') instanceof SVG.Polyline).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.polyline('0,0 100,0 100,100 0,100') instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.polyline('0,0 100,0 100,100 0,100') instanceof SVG.Element).toBe(true) - }) - }) - - describe('polygon()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.polygon('0,0 100,0 100,100 0,100') - expect(draw.children().length).toBe(initial + 1) - }) - it('should create a polygon', function() { - expect(draw.polygon('0,0 100,0 100,100 0,100').type).toBe('polygon') - }) - it('should be an instance of SVG.Polygon', function() { - expect(draw.polygon('0,0 100,0 100,100 0,100') instanceof SVG.Polygon).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.polygon('0,0 100,0 100,100 0,100') instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.polygon('0,0 100,0 100,100 0,100') instanceof SVG.Element).toBe(true) - }) - }) - - describe('path()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.path(svgPath) - expect(draw.children().length).toBe(initial + 1) - }) - it('should create a path', function() { - expect(draw.path(svgPath).type).toBe('path') - }) - it('should be an instance of SVG.Path', function() { - expect(draw.path(svgPath) instanceof SVG.Path).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.path(svgPath) instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.path(svgPath) instanceof SVG.Element).toBe(true) - }) - }) - - describe('image()', function() { - it('should increase children by 1', function() { - var initial = draw.children().length - draw.image(imageUrl) - expect(draw.children().length).toBe(initial + 1) - }) - it('should create a rect', function() { - expect(draw.image(imageUrl).type).toBe('image') - }) - it('should create an instance of SVG.Rect', function() { - expect(draw.image(imageUrl) instanceof SVG.Image).toBe(true) - }) - it('should be an instance of SVG.Shape', function() { - expect(draw.image(imageUrl) instanceof SVG.Shape).toBe(true) - }) - it('should be an instance of SVG.Element', function() { - expect(draw.image(imageUrl) instanceof SVG.Element).toBe(true) - }) - }) - - describe('text()', function() { - it('increases children by 1', function() { - var initial = draw.children().length - draw.text(loremIpsum) - expect(draw.children().length).toBe(initial + 1) - }) - it('creates a text element', function() { - expect(draw.text(loremIpsum).type).toBe('text') - }) - it('creates an instance of SVG.Text', function() { - expect(draw.text(loremIpsum) instanceof SVG.Text).toBe(true) - }) - it('is an instance of SVG.Shape', function() { - expect(draw.text(loremIpsum) instanceof SVG.Shape).toBe(true) - }) - it('is an instance of SVG.Element', function() { - expect(draw.text(loremIpsum) instanceof SVG.Element).toBe(true) - }) - }) - - describe('plain()', function() { - it('increases children by 1', function() { - var initial = draw.children().length - draw.plain(loremIpsum) - expect(draw.children().length).toBe(initial + 1) - }) - it('creates a plain element', function() { - expect(draw.plain(loremIpsum).type).toBe('text') - }) - it('creates an instance of SVG.Rect', function() { - expect(draw.plain(loremIpsum) instanceof SVG.Text).toBe(true) - }) - it('is an instance of SVG.Parent', function() { - expect(draw.plain(loremIpsum) instanceof SVG.Shape).toBe(true) - }) - it('is an instance of SVG.Element', function() { - expect(draw.plain(loremIpsum) instanceof SVG.Element).toBe(true) - }) - }) - - describe('clear()', function() { - it('removes all children except the parser if present', function() { - draw.rect(100,100) - draw.clear() - expect(draw.children().length).toBe(parserInDoc) - }) - it('creates a new defs node', function() { - var oldDefs = draw.defs() - draw.rect(100,100).maskWith(draw.circle(100, 100)) - draw.clear() - expect(draw.defs()).not.toBe(oldDefs) - }) - it('clears all children in the defs node', function() { - draw.rect(100,100).maskWith(draw.circle(100, 100)) - draw.clear() - expect(draw.defs().children().length).toBe(0) - }) - }) - - describe('each()', function() { - it('should iterate over all children', function() { - var children = [] - - draw.rect(100,100) - draw.ellipse(100, 100) - draw.polygon() - - draw.each(function() { - children.push(this.type) - }) - expect(children).toEqual((parserInDoc ? [parser[0].type] : []).concat(['rect', 'ellipse', 'polygon'])) - }) - it('should only include its own children', function() { - var children = [] - , group = draw.group() - - draw.rect(100,200) - draw.circle(300) - - group.rect(100,100) - group.ellipse(100, 100) - group.polygon() - - group.each(function() { - children.push(this) - }) - - expect(children).toEqual(group.children()) - }) - it('should traverse recursively when set to deep', function() { - var children = [] - , group = draw.group() - - draw.rect(100,200) - draw.circle(300) - - group.rect(100,100) - group.ellipse(100, 100) - group.polygon() - - draw.each(function() { - children.push(this) - }, true) - - expect(children.length).toEqual(draw.children().length + group.children().length + (parserInDoc ? parser[0].children().length : 0)) - }) - }) - - describe('get()', function() { - it('gets an element at a given index', function() { - draw.clear() - var rect = draw.rect(100,100) - var circle = draw.circle(100) - var line = draw.line(0,0,100,100) - expect(draw.get(0+parserInDoc)).toBe(rect) - expect(draw.get(1+parserInDoc)).toBe(circle) - expect(draw.get(2+parserInDoc)).toBe(line) - expect(draw.get(3+parserInDoc)).toBeNull() - }) - }) - - describe('first()', function() { - it('gets the first child', function() { - draw.clear() - var rect = draw.rect(100,100) - var circle = draw.circle(100) - var line = draw.line(0,0,100,100) - expect(draw.first()).toBe(parserInDoc ? parser[0] : rect) - }) - }) - - describe('last()', function() { - it('gets the last child', function() { - draw.clear() - var rect = draw.rect(100,100) - var circle = draw.circle(100) - var line = draw.line(0,0,100,100) - expect(draw.last()).toBe(line) - }) - }) - - describe('has()', function() { - it('determines if a given element is a child of the parent', function() { - var rect = draw.rect(100,100) - var circle = draw.circle(100) - var group = draw.group() - var line = group.line(0,0,100,100) - expect(draw.has(rect)).toBe(true) - expect(draw.has(circle)).toBe(true) - expect(draw.has(group)).toBe(true) - expect(draw.has(line)).toBe(false) - expect(group.has(line)).toBe(true) - }) - }) - - describe('index()', function() { - it('determines the index of given element', function() { - var rect = draw.rect(100,100) - var circle = draw.circle(100) - var group = draw.group() - var line = group.line(0,0,100,100) - expect(draw.index(rect)).toBe(0+parserInDoc) - expect(draw.index(circle)).toBe(1+parserInDoc) - expect(draw.index(group)).toBe(2+parserInDoc) - expect(draw.index(line)).toBe(-1) - expect(group.index(line)).toBe(0) - }) - }) - - describe('parent()', function() { - it('returns the parent element instance', function() { - var rect = draw.rect(100,100) - expect(rect.parent()).toBe(rect.node.parentNode.instance) - }) - }) - - describe('add()', function() { - it('adds element at the end of the parent element when no position given', function() { - var rect = draw.rect(100,100) - var line = draw.line(100,100, 50, 50) - var group = draw.group() - group.circle(10,10) - - expect(group.add(rect)).toBe(group) - expect(rect.position()).toBe(1) - }) - it('adds element at the given position', function() { - var rect = draw.rect(100,100) - var line = draw.line(100,100, 50, 50) - var group = draw.group() - group.circle(10,10) - - expect(group.add(rect)).toBe(group) - expect(group.add(line, 1)).toBe(group) - expect(line.position()).toBe(1) - }) - }) - - describe('put()', function() { - it('calls add() but returns added element', function() { - var rect = draw.rect(100,100) - var group = draw.group() - - spyOn(group, 'add') - - expect(group.put(rect, 0)).toBe(rect) - expect(group.add).toHaveBeenCalledWith(rect, 0) - }) - }) - -}) diff --git a/spec/spec/defs.js b/spec/spec/defs.js deleted file mode 100644 index 5e5da08..0000000 --- a/spec/spec/defs.js +++ /dev/null @@ -1,12 +0,0 @@ -describe('Defs', function() { - var defs - - beforeEach(function() { - defs = draw.defs() - }) - - it('creates an instance of SVG.Defs', function() { - expect(defs instanceof SVG.Defs).toBeTruthy() - }) - -})
\ No newline at end of file diff --git a/spec/spec/doc.js b/spec/spec/doc.js deleted file mode 100644 index 19dda04..0000000 --- a/spec/spec/doc.js +++ /dev/null @@ -1,66 +0,0 @@ -describe('Svg', function() { - - describe('create()', function(){ - it('doenst alter size when adopting width SVG()', function() { - var svg = SVG('#inlineSVG') - expect(svg.width()).toBe(0) - expect(svg.height()).toBe(0) - }) - }) - - it('is an instance of SVG.Container', function() { - expect(draw instanceof SVG.Container).toBe(true) - }) - - it('is an instance of SVG.Svg', function() { - expect(draw instanceof SVG.Svg).toBe(true) - }) - - it('returns itself as Svg when root', function() { - expect(draw.root()).toBe(draw) - }) - - it('has a defs element when root', function() { - expect(draw.defs() instanceof SVG.Defs).toBe(true) - }) - - describe('defs()', function() { - it('returns defs element', function(){ - expect(draw.defs()).toBe(draw.node.getElementsByTagName('defs')[0].instance) - }) - it('references parent node', function(){ - expect(draw.defs().parent()).toBe(draw) - }) - }) - - describe('isRoot()', function() { - it('returns true when the Svg is not attached to dom', function() { - expect(SVG().isRoot()).toBe(true) - }) - it('returns true when its outer element is not an svg element', function () { - expect(SVG().addTo(document.createElement('div')).isRoot()).toBe(true) - }) - it('returns true when its the root element of the dom', function () { - expect(draw.isRoot()).toBe(true) - }) - it('returns false when parent is svg element', function () { - expect(SVG().addTo(SVG()).isRoot()).toBe(false) - }) - }) - - describe('remove()', function() { - it('removes the Svg from the dom only if Svg is not root element', function() { - var cnt = window.document.querySelectorAll('svg').length - draw.remove() - if(parserInDoc){ - expect(window.document.querySelectorAll('svg').length).toBe(cnt) - }else{ - expect(window.document.querySelectorAll('svg').length).toBe(cnt-1) - } - - draw = SVG().addTo(drawing).size(100,100); - expect(window.document.querySelectorAll('svg').length).toBe(cnt) - }) - }) - -}) diff --git a/spec/spec/element.js b/spec/spec/element.js deleted file mode 100644 index 87f4481..0000000 --- a/spec/spec/element.js +++ /dev/null @@ -1,1090 +0,0 @@ -describe('Element', function () { - - beforeEach(function () { - draw.clear() - draw.attr('viewBox', null) - }) - - it('should create a circular reference on the node', function () { - var rect = draw.rect(100, 100) - expect(rect.node.instance).toBe(rect) - }) - - describe('attr()', function () { - var rect - - beforeEach(function () { - rect = draw.rect(100, 100) - }) - - afterEach(function () { - rect.remove() - // draw.defs().find('pattern').forEach(function(el) { el.remove() }) - draw.defs().clear() - }) - - it('sets one attribute when two arguments are given', function () { - rect.attr('fill', '#ff0066') - expect(rect.node.getAttribute('fill')).toBe('#ff0066') - }) - it('sets various attributes when an object is given', function () { - rect.attr({ fill: '#00ff66', stroke: '#ff2233', 'stroke-width': 10 }) - expect(rect.node.getAttribute('fill')).toBe('#00ff66') - expect(rect.node.getAttribute('stroke')).toBe('#ff2233') - expect(rect.node.getAttribute('stroke-width')).toBe('10') - }) - it('gets the value of the string value given as first argument', function () { - rect.attr('fill', '#ff0066') - expect(rect.attr('fill')).toEqual('#ff0066') - }) - it('gets an object with all attributes without any arguments', function () { - rect.attr({ fill: '#00ff66', stroke: '#ff2233' }) - var attr = rect.attr() - expect(attr.fill).toBe('#00ff66') - expect(attr.stroke).toBe('#ff2233') - }) - it('removes an attribute if the second argument is explicitly set to null', function () { - rect.attr('stroke-width', 10) - expect(rect.node.getAttribute('stroke-width')).toBe('10') - rect.attr('stroke-width', null) - expect(rect.node.getAttribute('stroke-width')).toBe(null) - }) - it('correctly parses numeric values as a getter', function () { - rect.attr('stroke-width', 11) - expect(rect.node.getAttribute('stroke-width')).toBe('11') - expect(rect.attr('stroke-width')).toBe(11) - }) - it('correctly parses negative numeric values as a getter', function () { - rect.attr('x', -120) - expect(rect.node.getAttribute('x')).toBe('-120') - expect(rect.attr('x')).toBe(-120) - }) - it('falls back on default values if attribute is not present', function () { - expect(rect.attr('stroke-linejoin')).toBe('miter') - }) - it('gets the "style" attribute as a string', function () { - rect.css('cursor', 'pointer') - expect(rect.node.style.cursor).toBe('pointer') - }) - it('sets the style attribute correctly', function () { - rect.attr('style', 'cursor:move;') - expect(rect.node.style.cursor).toBe('move') - }) - it('acts as a global getter when no arguments are given', function () { - rect.fill('#ff0066') - expect(rect.attr().fill).toBe('#ff0066') - }) - it('correctly parses numeric values as a global getter', function () { - rect.stroke({ width: 20 }) - expect(rect.attr()['stroke-width']).toBe(20) - }) - it('correctly parses negative numeric values as a global getter', function () { - rect.x(-30) - expect(rect.attr().x).toBe(-30) - }) - it('leaves unit values alone as a global getter', function () { - rect.attr('x', '69%') - expect(rect.attr().x).toBe('69%') - }) - it('acts as getter for an array of values passed', function () { - rect.attr({ - x: 1, - y: 2, - width: 20, - 'fill-opacity': 0.5 - }) - - expect(rect.attr([ 'x', 'fill-opacity' ])).toEqual(jasmine.objectContaining({ - x: 1, - 'fill-opacity': 0.5 - })) - }) - it('creates an image in defs when image path is specified for fill', function () { - rect.attr('fill', imageUrl) - expect(draw.defs().find('pattern').length).toBe(1) - expect(draw.defs().find('pattern image').length).toBe(1) - expect(draw.defs().find('pattern image')[0].attr('href')).toBe(imageUrl) - }) - it('creates pattern in defs when image object is specified for fill', function () { - rect.attr('fill', new SVG.Image().load(imageUrl)) - expect(draw.defs().find('pattern').length).toBe(1) - expect(draw.defs().find('pattern image').length).toBe(1) - expect(draw.defs().find('pattern image')[0].attr('href')).toBe(imageUrl) - }) - it('correctly creates SVG.Array if array given', function () { - rect.attr('something', [ 2, 3, 4 ]) - expect(rect.attr('something')).toBe('2 3 4') - }) - it('redirects to the leading() method when setting leading', function () { - var text = draw.text(loremIpsum) - spyOn(text, 'leading') - - text.attr('leading', 2) - expect(text.leading).toHaveBeenCalled() - text.remove() - }) - }) - - describe('id()', function () { - var rect - - beforeEach(function () { - rect = draw.rect(100, 100) - }) - - it('generates an id when getting if no id is set on the element', function () { - expect(rect.attr('id')).toBe(undefined) - expect(rect.id()).not.toBe(null) - expect(rect.node.id).not.toBe(null) - }) - // it('increases the global id sequence', function() { - // var did = SVG.did - // rect.id() - // - // expect(did + 1).toBe(SVG.did) - // }) - it('adds a unique id containing the node name', function () { - rect.id() - - expect(rect.attr('id').includes('Rect')).toBe(true) - }) - it('gets the value if the id attribute without an argument', function () { - expect(rect.id()).toBe(rect.attr('id')) - }) - it('sets the value of the id', function () { - rect.id('new_id') - expect(rect.id()).toBe('new_id') - }) - }) - - describe('css()', function () { - it('sets the style with key and value arguments', function () { - var rect = draw.rect(100, 100).css('cursor', 'crosshair') - expect(window.stripped(rect.node.style.cssText)).toBe('cursor:crosshair') - }) - it('sets multiple styles with an object as the first argument', function () { - var rect = draw.rect(100, 100).css({ cursor: 'help', display: 'block' }) - expect(window.stripped(rect.node.style.cssText)).toMatch(/cursor:help/) - expect(window.stripped(rect.node.style.cssText)).toMatch(/display:block/) - expect(window.stripped(rect.node.style.cssText).length).toBe(('display:block;cursor:help').length) - }) - it('gets a style with a string key as the first argument', function () { - var rect = draw.rect(100, 100).css({ cursor: 'progress', display: 'block' }) - expect(rect.css('cursor')).toBe('progress') - }) - it('gets multiple sytyles with array as first argument', function () { - var rect = draw.rect(100, 100).css({ cursor: 'progress', display: 'block' }) - expect(rect.css([ 'cursor', 'display' ])).toEqual({ cursor: 'progress', display: 'block' }) - }) - it('gets an object with all styles with zero arguments', function () { - var rect = draw.rect(100, 100).css({ cursor: 's-resize', display: 'none' }) - expect(rect.css()).toEqual({ cursor: 's-resize', display: 'none' }) - }) - it('removes a style if the value is an empty string', function () { - var rect = draw.rect(100, 100).css({ cursor: 'n-resize', display: '' }) - expect(rect.css('display')).toBe('') - }) - it('removes a style if the value explicitly set to null', function () { - var rect = draw.rect(100, 100).css('cursor', 'w-resize') - expect(rect.css()).toEqual({ cursor: 'w-resize' }) - rect.css('cursor', null) - expect(rect.css('cursor')).toBe('') - }) - }) - - describe('transform()', function () { - var rect, ctm - - beforeEach(function () { - rect = draw.rect(100, 100) - }) - - it('gets the current transformation matrix', function () { - expect(rect.transform()).toEqual(jasmine.objectContaining({ - a: 1, - b: 0, - c: 0, - d: 1, - e: 0, - f: 0, - scaleX: 1, - scaleY: 1, - shear: 0, - rotate: 0, - translateX: 0, - translateY: 0 - })) - }) - it('sets the translation of and element', function () { - rect.transform({ translate: [ 10, 11 ] }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 1, 0, 0, 1, 10, 11 ]) - }) - it('performs an absolute translation', function () { - rect.transform({ translate: [ 10, 11 ] }).transform({ translate: [ 20, 21 ] }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 1, 0, 0, 1, 20, 21 ]) - }) - it('performs a relative translation with relative flag', function () { - rect.transform({ translate: [ 10, 11 ] }).transform({ translate: [ 20, 21 ] }, true) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 1, 0, 0, 1, 30, 32 ]) - }) - it('sets the scaleX and scaleY of an element', function () { - rect.transform({ scaleX: 0.5, scaleY: 2 }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 0.5, 0, 0, 2, 25, -50 ]) - }) - it('performs a uniform scale with scale given', function () { - rect.transform({ scale: 3 }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 3, 0, 0, 3, -100, -100 ]) - }) - it('also works with only skaleX', function () { - rect.transform({ scaleX: 3 }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 3, 0, 0, 1, -100, 0 ]) - }) - it('also works with only skaleY', function () { - rect.transform({ scaleY: 3 }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 1, 0, 0, 3, 0, -100 ]) - }) - - it('performs an absolute scale by default', function () { - rect.transform({ scale: 3 }).transform({ scale: 0.5 }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 0.5, 0, 0, 0.5, 25, 25 ]) - }) - it('performs a relative scale with a relative flag', function () { - rect.transform({ scaleX: 0.5, scaleY: 2 }).transform({ scaleX: 3, scaleY: 4 }, true) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 1.5, 0, 0, 8, -25, -350 ]) - }) - it('sets the skewX of an element with center on the element', function () { - ctm = rect.transform({ skewX: 10 }).ctm() - expect(ctm.a).toBe(1) - expect(ctm.b).toBe(0) - expect(ctm.c).toBeCloseTo(0.17632698070846498) - expect(ctm.d).toBe(1) - expect(ctm.e).toBeCloseTo(-8.81634903542325) - expect(ctm.f).toBe(0) - }) - it('sets the skewX of an element with given center', function () { - ctm = rect.transform({ skewX: 10, ox: 0, oy: 0 }).ctm() - expect(ctm.a).toBe(1) - expect(ctm.b).toBe(0) - expect(ctm.c).toBeCloseTo(0.17632698070846498) - expect(ctm.d).toBe(1) - expect(ctm.e).toBe(0) - expect(ctm.f).toBe(0) - }) - it('sets the skewY of an element', function () { - ctm = rect.transform({ skewY: -10, ox: 0, oy: 0 }).ctm() - expect(ctm.a).toBe(1) - expect(ctm.b).toBeCloseTo(-0.17632698070846498) - expect(ctm.c).toBe(0) - expect(ctm.d).toBe(1) - expect(ctm.e).toBe(0) - expect(ctm.f).toBe(0) - }) - it('sets the skewX and skewY of an element', function () { - ctm = rect.transform({ skewX: 10, skewY: -10, ox: 0, oy: 0 }).ctm() - expect(ctm.a).toBe(1) - expect(ctm.b).toBeCloseTo(-0.17632698070846498) - expect(ctm.c).toBeCloseTo(0.17632698070846498) - expect(ctm.d).toBe(1) - expect(ctm.e).toBe(0) - expect(ctm.f).toBe(0) - }) - it('performs a uniform skew with skew given', function () { - ctm = rect.transform({ skew: 5, ox: 0, oy: 0 }).ctm() - expect(ctm.a).toBe(1) - expect(ctm.b).toBeCloseTo(0.08748866352592401) - expect(ctm.c).toBeCloseTo(0.08748866352592401) - expect(ctm.d).toBe(1) - expect(ctm.e).toBe(0) - expect(ctm.f).toBe(0) - }) - it('rotates the element around its centre if no rotation point is given', function () { - ctm = rect.center(100, 100).transform({ rotate: 45 }).ctm() - expect(ctm.a).toBeCloseTo(0.7071068286895752) - expect(ctm.b).toBeCloseTo(0.7071068286895752) - expect(ctm.c).toBeCloseTo(-0.7071068286895752) - expect(ctm.d).toBeCloseTo(0.7071068286895752) - expect(ctm.e).toBeCloseTo(100) - expect(ctm.f).toBeCloseTo(-41.421356201171875) - }) - it('rotates the element around the given rotation point', function () { - ctm = rect.transform({ rotate: 55, origin: [ 80, 2 ] }).ctm() - expect(ctm.a).toBeCloseTo(0.5735765099525452) - expect(ctm.b).toBeCloseTo(0.8191521167755127) - expect(ctm.c).toBeCloseTo(-0.8191521167755127) - expect(ctm.d).toBeCloseTo(0.5735765099525452) - expect(ctm.e).toBeCloseTo(35.75218963623047) - expect(ctm.f).toBeCloseTo(-64.67931365966797) - }) - it('transforms element using a matrix', function () { - rect.transform({ a: 0.5, c: 0.5 }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 0.5, 0, 0.5, 1, 0, 0 ]) - }) - it('transforms relative using a matrix', function () { - rect.transform({ a: 0.5, c: 0.5 }).transform(new SVG.Matrix({ e: 20, f: 20 }), true) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 0.5, 0, 0.5, 1, 20, 20 ]) - }) - it('flips the element on x axis', function () { - rect.transform({ flip: 'x' }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ -1, 0, 0, 1, 100, 0 ]) - }) - it('flips the element on x axis with offset', function () { - rect.transform({ flip: 'x', origin: [ 20, 0 ] }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ -1, 0, 0, 1, 40, 0 ]) - }) - it('flips the element on y axis with offset', function () { - rect.transform({ flip: 'y', origin: [ 0, 20 ] }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ 1, 0, 0, -1, 0, 40 ]) - }) - it('flips the element on both axis with offset', function () { - rect.transform({ flip: 'both', origin: [ 20, 20 ] }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ -1, 0, 0, -1, 40, 40 ]) - }) - it('flips the element on both axis', function () { - rect.transform({ flip: 'both' }) - expect(window.matrixStringToArray(rect.node.getAttribute('transform'))).toEqual([ -1, 0, 0, -1, 100, 100 ]) - }) - }) - - describe('untransform()', function () { - var circle - - beforeEach(function () { - circle = draw.circle(100).translate(50, 100) - }) - - it('removes the transform attribute', function () { - expect(window.matrixStringToArray(circle.node.getAttribute('transform'))).toEqual([ 1, 0, 0, 1, 50, 100 ]) - circle.untransform() - expect(circle.node.getAttribute('transform')).toBeNull() - }) - it('resets the current transform matix', function () { - expect(circle.ctm()).toEqual(new SVG.Matrix(1, 0, 0, 1, 50, 100)) - circle.untransform() - expect(circle.ctm()).toEqual(new SVG.Matrix()) - }) - }) - - describe('matrixify', function () { - var rect - - beforeEach(function () { - rect = draw.rect(100, 100) - }) - - it('allow individual transform definitions to be separated by whitespace', function () { - // One space - rect.attr('transform', 'translate(20) translate(20)') - expect(rect.matrixify().toString()).toBe('matrix(1,0,0,1,40,0)') - - // More than one space - rect.attr('transform', 'translate(20) translate(-60)') - expect(rect.matrixify().toString()).toBe('matrix(1,0,0,1,-40,0)') - }) - - it('allow individual transform definitions to be separated by a comma', function () { - rect.attr('transform', 'translate(20,16),translate(20)') - expect(rect.matrixify().toString()).toBe('matrix(1,0,0,1,40,16)') - }) - - it('allow individual transform definitions to be separated by whitespace and a comma', function () { - // Spaces before the comma - rect.attr('transform', 'translate(20,16) ,translate(20)') - expect(rect.matrixify().toString()).toBe('matrix(1,0,0,1,40,16)') - - // Spaces after the comma - rect.attr('transform', 'translate(12), translate(10,14)') - expect(rect.matrixify().toString()).toBe('matrix(1,0,0,1,22,14)') - - // Spaces before and after the comma - rect.attr('transform', 'translate(24,14) , translate(36,6)') - expect(rect.matrixify().toString()).toBe('matrix(1,0,0,1,60,20)') - }) - - it('merges non-commutative transformations correctly', function () { - // Spaces before the comma - rect.attr('transform', 'scale(3, 2) translate(20,16)') - expect(rect.matrixify().toString()).toBe('matrix(3,0,0,2,60,32)') - }) - - it('doesn\'t care if you have matrices there', function () { - // Spaces before the comma - rect.attr('transform', 'matrix(3, 0, 0, 2, 0, 0) translate(20,16)') - expect(rect.matrixify().toString()).toBe('matrix(3,0,0,2,60,32)') - }) - - }) - - describe('toParent()', function () { - var nested, g1, g2, rect1 - - beforeEach(function () { - nested = draw.nested() - g1 = nested.group().translate(20, 20) - g2 = g1.group().translate(100, 100) - rect1 = g2.rect(100, 100).scale(2) - rect2 = nested.rect(100, 100).scale(0.5) - }) - - afterEach(function () { - draw.clear() - }) - - it('returns itself when given parent and it is the same', function () { - expect(g2.toParent(g2)).toBe(g2) - }) - - it('moves the element to other parent while maintaining the same visal representation', function () { - expect(window.roundMatrix(rect1.toParent(nested).matrix())) - .toEqual(new SVG.Matrix(2, 0, 0, 2, 70, 70)) - expect(rect1.parent()).toEqual(nested) - expect(window.roundMatrix(rect2.toParent(g2).matrix())) - .toEqual(new SVG.Matrix(0.5, 0, 0, 0.5, -95, -95)) - expect(rect2.parent()).toEqual(g2) - }) - }) - - describe('toRoot()', function () { - var nested, g1, g2, rect - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'toParent') - }) - - afterEach(function () { - draw.clear() - }) - - it('redirects to toParent(root)', function () { - rect.toRoot() - expect(rect.toParent).toHaveBeenCalledWith(rect.root(), undefined) - }) - }) - - // FIXME - // describe('flatten()', function() { - // var nested, g1, g2, rect1 - // - // beforeEach(function() { - // draw.defs() - // nested = draw.nested() - // g1 = nested.group().translate(20, 20) - // g2 = g1.group().translate(100, 100) - // rect1 = g2.rect(100,100).scale(2) - // rect2 = g1.rect(100,100).scale(0.5) - // }) - // - // afterEach(function() { - // draw.clear() - // }) - // - // it('returns itself when depths is 0 or this is SVG.Defs', function() { - // expect(draw.defs().flatten()).toBe(draw.defs()) - // expect(g1.flatten(null, 0)).toBe(g1) - // }) - // - // it('breaks up all container and move the elements to the parent', function() { - // g1.flatten() - // expect(rect1.parent()).toBe(nested) - // expect(rect2.parent()).toBe(nested) - // - // expect(g1.node.parentNode).toBeFalsy() - // expect(g2.node.parentNode).toBeFalsy() - // - // expect(window.roundMatrix(rect1.matrix())).toEqual(new SVG.Matrix(2, 0, 0, 2, 70, 70)) - // expect(window.roundMatrix(rect2.matrix())).toEqual(new SVG.Matrix(0.5, 0, 0, 0.5, 45, 45)) - // }) - // - // it('ungroups everything to the doc root when called on SVG.Doc / does not ungroup defs/parser', function() { - // draw.flatten() - // - // expect(rect1.parent()).toBe(draw) - // expect(rect2.parent()).toBe(draw) - // - // expect(g1.node.parentNode).toBeFalsy() - // expect(g2.node.parentNode).toBeFalsy() - // expect(nested.node.parentNode).toBeFalsy() - // - // expect(window.roundMatrix(rect1.matrix())).toEqual(new SVG.Matrix(2, 0, 0, 2, 70, 70)) - // expect(window.roundMatrix(rect2.matrix())).toEqual(new SVG.Matrix(0.5, 0, 0, 0.5, 45, 45)) - // - // expect(draw.children().length).toBe(3+parserInDoc) // 2 * rect + defs - // }) - // }) - - describe('ctm()', function () { - var rect - - beforeEach(function () { - rect = draw.rect(100, 100) - }) - - it('gets the current transform matrix of the element', function () { - rect.translate(10, 20) - expect(rect.ctm().toString()).toBe('matrix(1,0,0,1,10,20)') - }) - it('returns an instance of SVG.Matrix', function () { - expect(rect.ctm() instanceof SVG.Matrix).toBeTruthy() - }) - }) - - describe('data()', function () { - it('sets a data attribute and convert value to json', function () { - var rect = draw.rect(100, 100).data('test', 'value') - expect(rect.node.getAttribute('data-test')).toBe('value') - }) - it('sets a data attribute and not convert value to json if flagged raw', function () { - var rect = draw.rect(100, 100).data('test', 'value', true) - expect(rect.node.getAttribute('data-test')).toBe('value') - }) - it('sets multiple data attributes and convert values to json when an object is passed', function () { - var rect = draw.rect(100, 100).data({ - forbidden: 'fruit', - multiple: { - values: 'in', - an: 'object' - } - }) - expect(rect.node.getAttribute('data-forbidden')).toBe('fruit') - expect(rect.node.getAttribute('data-multiple')).toEqual('{"values":"in","an":"object"}') - }) - it('gets data value if only one argument is passed', function () { - var rect = draw.rect(100, 100).data('test', 101) - expect(rect.data('test')).toBe(101) - }) - it('gets the raw value when value is no valid json', function () { - var rect = draw.rect(100, 100).data('test', '{["sd":12}]', true) - expect(rect.data('test')).toBe('{["sd":12}]') - }) - it('removes data when null given', function () { - var rect = draw.rect(100, 100).data('test', '{"sd":12}', true) - expect(rect.data('test', null).attr('data-test')).toBeFalsy() - }) - it('maintains data type for a number', function () { - var rect = draw.rect(100, 100).data('test', 101) - expect(typeof rect.data('test')).toBe('number') - }) - it('maintains data type for an object', function () { - var rect = draw.rect(100, 100).data('test', { string: 'value', array: [ 1, 2, 3 ] }) - expect(typeof rect.data('test')).toBe('object') - expect(Array.isArray(rect.data('test').array)).toBe(true) - }) - }) - - describe('remove()', function () { - it('removes an element and return it', function () { - var rect = draw.rect(100, 100) - expect(rect.remove()).toBe(rect) - }) - it('removes an element from its parent', function () { - var rect = draw.rect(100, 100) - rect.remove() - expect(draw.has(rect)).toBe(false) - }) - }) - - describe('addTo()', function () { - it('adds an element to a given parent and returns itself', function () { - var rect = draw.rect(100, 100) - var group = draw.group() - - expect(rect.addTo(group)).toBe(rect) - expect(rect.parent()).toBe(group) - }) - }) - - describe('putIn()', function () { - it('adds an element to a given parent and returns parent', function () { - var rect = draw.rect(100, 100) - var group = draw.group() - - expect(rect.putIn(group)).toBe(group) - expect(rect.parent()).toBe(group) - }) - }) - - describe('rbox()', function () { - it('returns an instance of SVG.Box', function () { - var rect = draw.rect(100, 100) - expect(rect.rbox() instanceof SVG.Box).toBe(true) - }) - it('returns the correct rectangular box', function () { - // stroke has to be set in order to get the correct result when calling getBoundingClientRect in IE11 - var rect = draw.size(200, 150).viewbox(0, 0, 200, 150).rect(105, 210).move(2, 12)// .stroke({width:0}) - var box = rect.rbox(draw) - expect(box.x).toBeCloseTo(2) - expect(box.y).toBeCloseTo(12) - expect(box.cx).toBeCloseTo(54.5) - expect(box.cy).toBeCloseTo(117) - expect(box.width).toBeCloseTo(105) - expect(box.height).toBeCloseTo(210) - }) - }) - - describe('root()', function () { - it('returns the parent document', function () { - var rect = draw.rect(100, 100) - expect(rect.root()).toBe(draw) - }) - }) - - describe('parent()', function () { - it('contains the parent svg', function () { - var rect = draw.rect(100, 100) - expect(rect.parent()).toBe(draw) - }) - it('contains the parent group when in a group', function () { - var group = draw.group() - var rect = group.rect(100, 100) - expect(rect.parent()).toBe(group) - }) - it('contains the parent which matches type', function () { - var group = draw.group() - var rect = group.rect(100, 100) - expect(rect.parent(SVG.Svg)).toBe(draw) - }) - it('contains the parent which matches selector', function () { - var group1 = draw.group().addClass('test') - var group2 = group1.group() - var rect = group2.rect(100, 100) - expect(rect.parent('.test')).toBe(group1) - }) - }) - - describe('parents()', function () { - it('returns array of parents until the passed element or root svg', function () { - var group1 = draw.group().addClass('test') - var group2 = group1.group() - var group3 = group2.group() - var rect = group3.rect(100, 100) - - expect(rect.parents('.test')).toEqual([ group3, group2, group1 ]) - expect(rect.parents(group2)).toEqual([ group3, group2 ]) - expect(rect.parents(group1).length).toBe(3) - }) - }) - - describe('clone()', function () { - var rect, group, circle - - beforeEach(function () { - rect = draw.rect(100, 100).center(321, 567).fill('#f06') - group = draw.group().add(rect) - circle = group.circle(100) - }) - - it('makes an exact copy of the element', function () { - clone = rect.clone() - expect(clone.attr('id', null).attr()).toEqual(rect.attr('id', null).attr()) - }) - it('assigns a new id to the cloned element', function () { - clone = rect.clone() - expect(clone.id()).not.toBe(rect.id()) - }) - it('copies all child nodes as well', function () { - clone = group.clone() - expect(clone.children().length).toBe(group.children().length) - }) - it('assigns a new id to cloned child elements', function () { - clone = group.clone() - expect(clone.id()).not.toEqual(group.id()) - expect(clone.get(0).id()).not.toBe(group.get(0).id()) - expect(clone.get(1).id()).not.toBe(group.get(1).id()) - }) - it('deep copies over dom data', function () { - group.dom = { foo: 'bar' } - rect.dom = { foo: 'baz' } - clone = group.clone() - expect(clone.dom.foo).toBe('bar') - expect(clone.get(0).dom.foo).toBe('baz') - }) - }) - - describe('toString()', function () { - it('returns the element id', function () { - var rect = draw.rect(100, 100).center(321, 567).fill('#f06') - expect(rect + '').toBe(rect.id()) - }) - }) - - describe('replace()', function () { - it('replaces the original element by another given element', function () { - var rect = draw.rect(100, 100).center(321, 567).fill('#f06') - var circle = draw.circle(200) - var rectIndex = draw.children().indexOf(rect) - - rect.replace(circle) - - expect(rectIndex).toBe(draw.children().indexOf(circle)) - }) - it('removes the original element', function () { - var rect = draw.rect(100, 100).center(321, 567).fill('#f06') - - rect.replace(draw.circle(200)) - - expect(draw.has(rect)).toBe(false) - }) - it('returns the new element', function () { - var circle = draw.circle(200) - var element = draw.rect(100, 100).center(321, 567).fill('#f06').replace(circle) - - expect(element).toBe(circle) - }) - }) - - describe('classes()', function () { - it('returns an array of classes on the node', function () { - var element = draw.rect(100, 100) - element.node.setAttribute('class', 'one two') - expect(element.classes()).toEqual([ 'one', 'two' ]) - }) - }) - - describe('hasClass()', function () { - it('returns true if the node has the class', function () { - var element = draw.rect(100, 100) - element.node.setAttribute('class', 'one') - expect(element.hasClass('one')).toBeTruthy() - }) - - it('returns false if the node does not have the class', function () { - var element = draw.rect(100, 100) - element.node.setAttribute('class', 'one') - expect(element.hasClass('two')).toBeFalsy() - }) - }) - - describe('addClass()', function () { - it('adds the class to the node', function () { - var element = draw.rect(100, 100) - element.addClass('one') - expect(element.hasClass('one')).toBeTruthy() - }) - - it('does not add duplicate classes', function () { - var element = draw.rect(100, 100) - element.addClass('one') - element.addClass('one') - expect(element.node.getAttribute('class')).toEqual('one') - }) - - it('returns the svg instance', function () { - var element = draw.rect(100, 100) - expect(element.addClass('one')).toEqual(element) - }) - }) - - describe('removeClass()', function () { - it('removes the class from the node when the class exists', function () { - var element = draw.rect(100, 100) - element.addClass('one') - element.removeClass('one') - expect(element.hasClass('one')).toBeFalsy() - }) - - it('does nothing when the class does not exist', function () { - var element = draw.rect(100, 100) - element.removeClass('one') - expect(element.hasClass('one')).toBeFalsy() - }) - - it('returns the element', function () { - var element = draw.rect(100, 100) - expect(element.removeClass('one')).toEqual(element) - }) - }) - - describe('toggleClass()', function () { - it('adds the class when it does not already exist', function () { - var element = draw.rect(100, 100) - element.toggleClass('one') - expect(element.hasClass('one')).toBeTruthy() - }) - it('removes the class when it already exists', function () { - var element = draw.rect(100, 100) - element.addClass('one') - element.toggleClass('one') - expect(element.hasClass('one')).toBeFalsy() - }) - it('returns the svg instance', function () { - var element = draw.rect(100, 100) - expect(element.toggleClass('one')).toEqual(element) - }) - }) - - describe('reference()', function () { - it('gets a referenced element from a given attribute', function () { - var rect = draw.defs().rect(100, 100) - var use = draw.use(rect) - var mark = draw.marker(10, 10) - var path = draw.path(svgPath).marker('end', mark) - - expect(use.reference('href')).toBe(rect) - expect(path.reference('marker-end')).toBe(mark) - }) - }) - - describe('svg()', function () { - describe('without an argument', function () { - it('returns full raw svg when called on the root svg', function () { - draw.size(100, 100).rect(100, 100).id(null) - draw.circle(100).fill('#f06').id(null) - - var toBeTested = draw.svg() - - // Test for different browsers namely Firefox and Chrome - expect( - // IE - toBeTested === '<svg xmlns:svgjs="http://svgjs.com/svgjs" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" height="100" width="100"><rect height="100" width="100"></rect><circle fill="#ff0066" cy="50" cx="50" r="50"></circle></svg>' - - // Firefox - || toBeTested === '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs" width="100" height="100"><rect width="100" height="100"></rect><circle r="50" cx="50" cy="50" fill="#ff0066"></circle></svg>' - - // svgdom - || toBeTested === '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs" width="100" height="100"><svg id="SvgjsSvg1002" width="2" height="0" style="overflow: hidden; top: -100%; left: -100%; position: absolute; opacity: 0"><polyline id="SvgjsPolyline1003" points="10,10 20,10 30,10"></polyline><path id="SvgjsPath1004" d="M80 80A45 45 0 0 0 125 125L125 80Z "></path></svg><rect width="100" height="100"></rect><circle r="50" cx="50" cy="50" fill="#ff0066"></circle></svg>' - ).toBeTruthy() - - }) - it('returns partial raw svg when called on a sub group', function () { - var group = draw.group().id(null) - group.rect(100, 100).id(null) - group.circle(100).fill('#f06').id(null) - - var toBeTested = group.svg() - - expect( - toBeTested === '<g><rect width="100" height="100"></rect><circle r="50" cx="50" cy="50" fill="#ff0066"></circle></g>' - || toBeTested === '<g><rect height="100" width="100"></rect><circle fill="#ff0066" cy="50" cx="50" r="50"></circle></g>' - || toBeTested === '<g xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100"></rect><circle r="50" cx="50" cy="50" fill="#ff0066"></circle></g>' - ).toBeTruthy() - }) - it('returns a single element when called on an element', function () { - var group = draw.group().id(null) - group.rect(100, 100).id(null) - var circle = group.circle(100).fill('#f06').id(null) - var toBeTested = circle.svg() - - expect( - toBeTested === '<circle r="50" cx="50" cy="50" fill="#ff0066"></circle>' - || toBeTested === '<circle fill="#ff0066" cy="50" cx="50" r="50"></circle>' - || toBeTested === '<circle xmlns="http://www.w3.org/2000/svg" r="50" cx="50" cy="50" fill="#ff0066"></circle>' - ).toBeTruthy() - }) - }) - describe('with raw svg given', function () { - it('imports a full svg document', function () { - draw.svg('<svg id="SvgjsSvg1000" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100" viewBox="0 0 50 50"><rect id="SvgjsRect1183" width="100" height="100"></rect><circle id="SvgjsCircle1184" r="50" cx="25" cy="25" fill="#ff0066"></circle></svg>') - - expect(draw.get(0 + parserInDoc).type).toBe('svg') - expect(draw.get(0 + parserInDoc).children().length).toBe(2) - expect(draw.get(0 + parserInDoc).get(0).type).toBe('rect') - expect(draw.get(0 + parserInDoc).get(1).type).toBe('circle') - expect(draw.get(0 + parserInDoc).get(1).attr('fill')).toBe('#ff0066') - }) - it('imports partial svg content', function () { - draw.svg('<g id="SvgjsG1185"><rect id="SvgjsRect1186" width="100" height="100"></rect><circle id="SvgjsCircle1187" r="50" cx="25" cy="25" fill="#ff0066"></circle></g>') - expect(draw.get(0 + parserInDoc).type).toBe('g') - expect(draw.get(0 + parserInDoc).get(0).type).toBe('rect') - expect(draw.get(0 + parserInDoc).get(1).type).toBe('circle') - expect(draw.get(0 + parserInDoc).get(1).attr('fill')).toBe('#ff0066') - }) - }) - describe('with a modifier function', function () { - var rect, circle, group - beforeEach(function () { - rect = draw.rect(10, 10) - circle = draw.circle(20, 20) - group = draw.group() - - group.add(rect) - group.add(circle) - }) - - it('executes the modifier', function () { - var result = group.svg(function (instance) { - instance.addClass('test') - }) - - expect( - result === '<g class="test"><rect width="10" height="10" class="test"></rect><circle r="10" cx="10" cy="10" class="test"></circle></g>' - || result === '<g class="test"><rect height="10" width="10" class="test"></rect><circle r="10" cx="10" cy="10" class="test"></circle></g>' - || result === '<g class="test" xmlns="http://www.w3.org/2000/svg"><rect width="10" height="10" class="test"></rect><circle r="10" cx="10" cy="10" class="test"></circle></g>' - ).toBeTruthy() - }) - - it('execute the modifier to replace the node', function () { - var result = group.svg(function (instance) { - if (instance instanceof SVG.Circle) { - return draw.rect(15, 15) - } - }) - - expect( - result === '<g><rect width="10" height="10"></rect><rect width="15" height="15"></rect></g>' - || result === '<g><rect height="10" width="10"></rect><rect height="15" width="15"></rect></g>' - || result === '<g xmlns="http://www.w3.org/2000/svg"><rect width="10" height="10"></rect><rect width="15" height="15"></rect></g>' - ).toBeTruthy() - }) - - it('it deletes the node if the modifier returns false', function () { - var result = group.svg(function (instance) { - if (instance instanceof SVG.Circle) { - return false - } - }) - - expect( - result === '<g><rect width="10" height="10"></rect></g>' - || result === '<g><rect height="10" width="10"></rect></g>' - || result === '<g xmlns="http://www.w3.org/2000/svg"><rect width="10" height="10"></rect></g>' - ).toBeTruthy() - }) - }) - }) - - describe('writeDataToDom()', function () { - it('set all properties in el.dom to the svgjs:data attribute', function () { - var rect = draw.rect(100, 100) - rect.dom.foo = 'bar' - rect.dom.number = new SVG.Number('3px') - - rect.writeDataToDom() - - expect(rect.attr('svgjs:data')).toBe('{"foo":"bar","number":"3px"}') - }) - it('recursively dumps the data', function () { - var g = draw.group() - rect = g.rect(100, 100) - g.dom.foo = 'bar' - rect.dom.number = new SVG.Number('3px') - - g.writeDataToDom() - - expect(g.attr('svgjs:data')).toBe('{"foo":"bar"}') - expect(rect.attr('svgjs:data')).toBe('{"number":"3px"}') - }) - }) - - describe('setData()', function () { - it('read all data from the svgjs:data attribute and assign it to el.dom', function () { - var rect = draw.rect(100, 100) - - rect.attr('svgjs:data', '{"foo":"bar","number":"3px"}') - rect.setData(JSON.parse(rect.attr('svgjs:data'))) - - expect(rect.dom.foo).toBe('bar') - expect(rect.dom.number).toBe('3px') - }) - }) - - describe('point()', function () { - it('creates a point from screen coordinates transformed in the elements space', function () { - var rect = draw.rect(100, 100) - - var m = draw.node.getScreenCTM() - // alert([m.a, m.a, m.c, m.d, m.e, m.f].join(', ')) - - var translation = { x: m.e, y: m.f } - var pos = { x: 2, y: 5 } - - expect(rect.point(pos.x, pos.y).x).toBeCloseTo(pos.x - translation.x) - expect(rect.point(pos.x, pos.y).y).toBeCloseTo(pos.y - translation.y) - }) - }) - - describe('inside()', function () { - it('checks whether the given point inside the bounding box of the element', function () { - var rect = draw.rect(100, 100) - expect(rect.inside(50, 50)).toBeTruthy() - expect(rect.inside(150, 150)).toBeFalsy() - }) - }) - describe('show()', function () { - it('sets display property to ""', function () { - var rect = draw.rect(100, 100).show() - expect(rect.css('display')).toBe('') - }) - }) - describe('hide()', function () { - it('sets display property to none', function () { - var rect = draw.rect(100, 100).hide() - expect(rect.css('display')).toBe('none') - }) - }) - describe('visible()', function () { - it('checks if element is hidden or not', function () { - var rect = draw.rect(100, 100).hide() - expect(rect.visible()).toBeFalsy() - rect.show() - expect(rect.visible()).toBeTruthy() - }) - }) - // describe('is()', function() { - // it('checks if element is instance of a certain kind', function() { - // var rect = draw.rect(100,100) - // expect(rect.is(SVG.Rect)).toBeTruthy() - // expect(rect.is(SVG.Element)).toBeTruthy() - // expect(rect.is(SVG.Parent)).toBeFalsy() - // }) - // }) - describe('defs()', function () { - it('returns the defs from the svg', function () { - var g = draw.group() - expect(g.defs()).toBe(draw.root().defs()) - expect(g.defs() instanceof SVG.Defs).toBeTruthy() - }) - }) - describe('round()', function () { - it('round all attribues of a node to a specific precision', function () { - var rect = draw.rect(100.123456, 200.987654) - - expect(rect.round(2).attr()).toEqual(jasmine.objectContaining({ - width: 100.12, - height: 200.99 - })) - }) - it('round specified attributes of a node to a specific precision', function () { - var rect = draw.rect(100.123456, 200.987654) - - expect(rect.round(2, [ 'width' ]).attr()).toEqual(jasmine.objectContaining({ - width: 100.12, - height: 200.987654 - })) - }) - }) - - describe('words()', function () { - it('inserts plain text in a node', function () { - var element = draw.element('title').words('These are some words.').id(null) - var result = element.svg() - expect( - result == '<title>These are some words.</title>' - || result == '<title xmlns="http://www.w3.org/2000/svg">These are some words.</title>' - ).toBe(true) - }) - it('removes all nodes before adding words', function () { - var element = draw.element('title').words('These are some words.').id(null) - element.words('These are some words.') - var result = element.svg() - expect( - result == '<title>These are some words.</title>' - || result == '<title xmlns="http://www.w3.org/2000/svg">These are some words.</title>' - ).toBe(true) - }) - }) - - describe('element()', function () { - var element - - beforeEach(function () { - element = draw.element('rect') - }) - - it('creates an instance of Dom', function () { - expect(element instanceof SVG.Dom).toBeTruthy() - }) - it('creates element in called parent', function () { - expect(element.parent()).toBe(draw) - }) - }) -}) diff --git a/spec/spec/elements/Dom.js b/spec/spec/elements/Dom.js index 2310473..bcf0ed5 100644 --- a/spec/spec/elements/Dom.js +++ b/spec/spec/elements/Dom.js @@ -2,6 +2,7 @@ import { SVG, G, Rect, Svg, Dom, List, Fragment, Circle, Tspan, create } from '../../../src/main.js' import { getWindow } from '../../../src/utils/window.js' +import { svg, html } from '../../../src/modules/core/namespaces.js' const { any, createSpy, objectContaining } = jasmine describe('Dom.js', function () { @@ -58,7 +59,7 @@ describe('Dom.js', function () { it('handles svg strings', () => { const g = new G() - g.add('<rect>') + g.add('<rect />') expect(g.children().length).toBe(1) expect(g.get(0)).toEqual(any(Rect)) }) @@ -98,7 +99,7 @@ describe('Dom.js', function () { it('works with svg strings', () => { const rect = new Rect() - rect.addTo('<g>') + rect.addTo('<g />') expect(rect.parent()).toEqual(any(G)) }) @@ -269,6 +270,15 @@ describe('Dom.js', function () { }) }) + describe('html()', () => { + it('calls xml with the html namespace', () => { + const group = new G() + const spy = spyOn(group, 'xml') + group.html('<foo>') + expect(spy).toHaveBeenCalledWith('<foo>', undefined, html) + }) + }) + describe('id()', () => { it('returns current element when called as setter', () => { const g = new G() @@ -375,7 +385,7 @@ describe('Dom.js', function () { it('creates object from svg string', () => { const g = new G() - const rect = '<rect>' + const rect = '<rect />' const spy = spyOn(g, 'add').and.callThrough() const ret = g.put(rect, 0) expect(ret).toEqual(any(Rect)) @@ -409,7 +419,7 @@ describe('Dom.js', function () { }) it('returns an instance when svg string given', () => { - const g = '<g>' + const g = '<g />' const rect = new Rect() const ret = rect.putIn(g) expect(ret).toEqual(any(G)) @@ -522,93 +532,12 @@ describe('Dom.js', function () { }) describe('svg()', () => { - describe('as setter', () => { - it('returns itself', () => { - const g = new G() - expect(g.svg('<rect>')).toBe(g) - }) - - it('imports a single element', () => { - const g = new G().svg('<rect>') - expect(g.children()).toEqual([ any(Rect) ]) - }) - - it('imports multiple elements', () => { - const g = new G().svg('<rect /><circle />') - expect(g.children()).toEqual([ any(Rect), any(Circle) ]) - }) - - it('replaces the current element with the imported elements with outerHtml = true', () => { - const canvas = new Svg() - const g = canvas.group() - g.svg('<rect /><circle />', true) - expect(canvas.children()).toEqual([ any(Rect), any(Circle) ]) - }) - - it('returns the parent when outerHtml = true', () => { - const canvas = new Svg() - const g = canvas.group() - expect(g.svg('<rect /><circle />', true)).toBe(canvas) - expect(canvas.children()).toEqual([ any(Rect), any(Circle) ]) - }) - - it('works without a parent', () => { - const canvas = new Svg() - expect(canvas.svg('<rect><circle>')).toBe(canvas) - }) - }) - - describe('as getter', () => { - let canvas, group, rect - - beforeEach(() => { - canvas = new Svg().removeNamespace() - group = canvas.group() - rect = group.rect(123.456, 234.567) - }) - - it('returns the svg string of the element by default', () => { - expect(rect.svg()).toBe('<rect width="123.456" height="234.567"></rect>') - expect(canvas.svg()).toBe('<svg><g><rect width="123.456" height="234.567"></rect></g></svg>') - }) - - it('returns the innerHtml when outerHtml = false', () => { - expect(rect.svg(false)).toBe('') - expect(canvas.svg(false)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') - }) - - it('runs a function on every exported node', () => { - expect(rect.svg((el) => el.round(1))).toBe('<rect width="123.5" height="234.6"></rect>') - }) - - it('runs a function on every exported node and replaces node with returned node if return value is not falsy', () => { - expect(rect.svg((el) => new Circle())).toBe('<circle></circle>') - expect(canvas.svg((el) => new G())).toBe('<g></g>') // outer <svg> was replaced by an empty g - expect(canvas.svg((el) => { - if (el instanceof Rect) return new Circle() - if (el instanceof Svg) el.removeNamespace() - })).toBe('<svg><g><circle></circle></g></svg>') - }) - - it('runs a function on every exported node and removes node if return value is false', () => { - expect(group.svg(() => false)).toBe('') - expect(canvas.svg(() => false)).toBe('') - expect(canvas.svg((el) => { - if (el instanceof Svg) { - el.removeNamespace() - } else { - return false - } - })).toBe('<svg></svg>') - }) - - it('runs a function on every inner node and exports it when outerHtml = false', () => { - expect(canvas.svg(() => false), false).toBe('') - expect(canvas.svg(() => undefined, false)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') - }) - + it('calls xml with the svg namespace', () => { + const group = new G() + const spy = spyOn(group, 'xml') + group.svg('<foo>') + expect(spy).toHaveBeenCalledWith('<foo>', undefined, svg) }) - }) describe('toString()', () => { @@ -662,20 +591,20 @@ describe('Dom.js', function () { }) it('allows to pass an svg string as element', () => { - rect.wrap('<g>') + rect.wrap('<g />') expect(rect.parent()).toEqual(any(G)) expect(rect.parent().parent()).toBe(canvas) }) it('allows to pass an svg string as element', () => { - rect.wrap('<g>') + rect.wrap('<g />') expect(rect.parent()).toEqual(any(G)) expect(rect.parent().parent()).toBe(canvas) }) it('allows to pass an svg string as element when element not in the dom', () => { var rect = new Rect() - rect.wrap(SVG('<g>')) + rect.wrap(SVG('<g />')) expect(rect.parent()).toEqual(any(G)) expect(rect.parent().parent()).toBe(null) }) @@ -692,4 +621,95 @@ describe('Dom.js', function () { describe('writeDataToDom()', () => { // not really testable }) + + describe('xml()', () => { + describe('as setter', () => { + it('returns itself', () => { + const g = new G() + expect(g.xml('<rect />', undefined, svg)).toBe(g) + }) + + it('imports a single element', () => { + const g = new G().xml('<rect />', undefined, svg) + expect(g.children()).toEqual([ any(Rect) ]) + expect(g.children()[0].node.namespaceURI).toBe(svg) + }) + + it('imports multiple elements', () => { + const g = new G().xml('<rect /><circle />', undefined, svg) + expect(g.children()).toEqual([ any(Rect), any(Circle) ]) + }) + + it('replaces the current element with the imported elements with outerHtml = true', () => { + const canvas = new Svg() + const g = canvas.group() + g.xml('<rect /><circle />', true, svg) + expect(canvas.children()).toEqual([ any(Rect), any(Circle) ]) + }) + + it('returns the parent when outerHtml = true', () => { + const canvas = new Svg() + const g = canvas.group() + expect(g.xml('<rect /><circle />', true, svg)).toBe(canvas) + expect(canvas.children()).toEqual([ any(Rect), any(Circle) ]) + }) + + it('works without a parent', () => { + const canvas = new Svg() + expect(canvas.xml('<rect /><circle>', undefined, svg)).toBe(canvas) + }) + }) + + describe('as getter', () => { + let canvas, group, rect + + beforeEach(() => { + canvas = new Svg().removeNamespace() + group = canvas.group() + rect = group.rect(123.456, 234.567) + }) + + it('returns the svg string of the element by default', () => { + expect(rect.xml(), svg).toBe('<rect width="123.456" height="234.567"></rect>') + expect(canvas.xml(), svg).toBe('<svg><g><rect width="123.456" height="234.567"></rect></g></svg>') + }) + + it('returns the innerHtml when outerHtml = false', () => { + expect(rect.xml(false, svg)).toBe('') + expect(canvas.xml(false, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') + }) + + it('runs a function on every exported node', () => { + expect(rect.xml((el) => el.round(1))).toBe('<rect width="123.5" height="234.6"></rect>') + }) + + it('runs a function on every exported node and replaces node with returned node if return value is not falsy', () => { + expect(rect.xml((el) => new Circle(), svg)).toBe('<circle></circle>') + expect(canvas.xml((el) => new G(), svg)).toBe('<g></g>') // outer <svg> was replaced by an empty g + expect(canvas.xml((el) => { + if (el instanceof Rect) return new Circle() + if (el instanceof Svg) el.removeNamespace() + }, svg)).toBe('<svg><g><circle></circle></g></svg>') + }) + + it('runs a function on every exported node and removes node if return value is false', () => { + expect(group.xml(() => false, svg)).toBe('') + expect(canvas.xml(() => false, svg)).toBe('') + expect(canvas.xml((el) => { + if (el instanceof Svg) { + el.removeNamespace() + } else { + return false + } + }, svg)).toBe('<svg></svg>') + }) + + it('runs a function on every inner node and exports it when outerHtml = false', () => { + expect(canvas.xml(() => false, false, svg)).toBe('') + expect(canvas.xml(() => undefined, false, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') + }) + + }) + + }) }) diff --git a/spec/spec/elements/Fragment.js b/spec/spec/elements/Fragment.js index c0f5f0f..8e6503d 100644 --- a/spec/spec/elements/Fragment.js +++ b/spec/spec/elements/Fragment.js @@ -2,6 +2,7 @@ import { Fragment, Dom } from '../../../src/main.js' import { getWindow } from '../../../src/utils/window.js' +import { svg } from '../../../src/modules/core/namespaces.js' const { any } = jasmine @@ -25,13 +26,13 @@ describe('Fragment.js', () => { }) }) - describe('svg()', () => { + describe('xml()', () => { describe('as setter', () => { it('calls parent method with outerHtml = false', () => { const frag = new Fragment() - const spy = spyOn(Dom.prototype, 'svg').and.callThrough() - frag.svg('<rect>', true) - expect(spy).toHaveBeenCalledWith('<rect>', false) + const spy = spyOn(Dom.prototype, 'xml').and.callThrough() + frag.xml('<rect />', true, svg) + expect(spy).toHaveBeenCalledWith('<rect />', false, svg) }) }) @@ -40,20 +41,20 @@ describe('Fragment.js', () => { const frag = new Fragment() const group = frag.group() group.rect(123.456, 234.567) - const spy = spyOn(Dom.prototype, 'svg').and.callThrough() + const spy = spyOn(Dom.prototype, 'xml').and.callThrough() - expect(frag.svg(false)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') - expect(spy).toHaveBeenCalledWith(null, false) + expect(frag.xml(false, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') + expect(spy).toHaveBeenCalledWith(false, svg) }) it('calls parent method with outerHtml = false - 2', () => { const frag = new Fragment() const group = frag.group() group.rect(123.456, 234.567) - const spy = spyOn(Dom.prototype, 'svg').and.callThrough() + const spy = spyOn(Dom.prototype, 'xml').and.callThrough() - expect(frag.svg(null, true)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') - expect(spy).toHaveBeenCalledWith(null, false) + expect(frag.xml(true, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>') + expect(spy).toHaveBeenCalledWith(false, svg) }) }) diff --git a/spec/spec/elements/G.js b/spec/spec/elements/G.js index e9f803f..2cd73fe 100644 --- a/spec/spec/elements/G.js +++ b/spec/spec/elements/G.js @@ -147,6 +147,7 @@ describe('G.js', () => { expect(g.y()).toBe(g.bbox().y) expect(g.y()).toBe(20) }) + it('calls move with the paramater as y', () => { const canvas = SVG().addTo(container) const g = canvas.group() diff --git a/spec/spec/elements/Svg.js b/spec/spec/elements/Svg.js index 1fa6fd5..990992a 100644 --- a/spec/spec/elements/Svg.js +++ b/spec/spec/elements/Svg.js @@ -54,12 +54,12 @@ describe('Svg.js', () => { describe('namespace()', () => { it('returns itself', () => { - const svg = SVG('<svg>') + const svg = SVG('<svg />') expect(svg.namespace()).toBe(svg) }) it('creates the namespace attributes on the svg', () => { - const svg = SVG('<svg>') + const svg = SVG('<svg />') expect(svg.attr('xmlns')).toBe(undefined) diff --git a/spec/spec/elements/Use.js b/spec/spec/elements/Use.js new file mode 100644 index 0000000..b1b4464 --- /dev/null +++ b/spec/spec/elements/Use.js @@ -0,0 +1,42 @@ +/* globals describe, expect, it, jasmine, container */ + +import { Use, Rect, SVG } from '../../../src/main.js' + +const { any } = jasmine + +describe('Use.js', () => { + describe('()', () => { + it('creates a new object of type Use', () => { + expect(new Use()).toEqual(any(Use)) + }) + + it('sets passed attributes on the element', () => { + expect(new Use({ id: 'foo' }).id()).toBe('foo') + }) + }) + + describe('use()', () => { + it('links an element', () => { + const rect = new Rect() + const use = new Use().use(rect) + expect(use.attr('href')).toBe('#' + rect.id()) + }) + + it('links an element from a different file', () => { + const use = new Use().use('id', 'file') + expect(use.attr('href')).toBe('file#id') + }) + }) + + describe('Container', () => { + describe('use()', () => { + it('creates a use element linked to the given element', () => { + const canvas = new SVG().addTo(container) + const rect = canvas.rect(100, 100) + const use = canvas.use(rect) + expect(use.attr('href')).toBe('#' + rect.id()) + expect(use.reference('href')).toBe(rect) + }) + }) + }) +}) diff --git a/spec/spec/ellipse.js b/spec/spec/ellipse.js deleted file mode 100644 index 76f16e6..0000000 --- a/spec/spec/ellipse.js +++ /dev/null @@ -1,179 +0,0 @@ -describe('Ellipse', function() { - var ellipse - - beforeEach(function() { - ellipse = draw.ellipse(240,90) - }) - - afterEach(function() { - draw.clear() - }) - - describe('x()', function() { - it('returns the value of x without an argument', function() { - expect(ellipse.x()).toBe(0) - }) - it('sets the value of x with the first argument', function() { - ellipse.x(123) - var box = ellipse.bbox() - expect(box.x).toBeCloseTo(123) - }) - }) - - describe('y()', function() { - it('returns the value of y without an argument', function() { - expect(ellipse.y()).toBe(0) - }) - it('sets the value of cy with the first argument', function() { - ellipse.y(345) - var box = ellipse.bbox() - expect(box.y).toBe(345) - }) - }) - - describe('cx()', function() { - it('returns the value of cx without an argument', function() { - expect(ellipse.cx()).toBe(120) - }) - it('sets the value of cx with the first argument', function() { - ellipse.cx(123) - var box = ellipse.bbox() - expect(box.cx).toBe(123) - }) - }) - - describe('cy()', function() { - it('returns the value of cy without an argument', function() { - expect(ellipse.cy()).toBe(45) - }) - it('sets the value of cy with the first argument', function() { - ellipse.cy(345) - var box = ellipse.bbox() - expect(box.cy).toBe(345) - }) - }) - - describe('radius()', function() { - it('sets the rx and ry', function() { - ellipse.radius(10, 20) - expect(ellipse.node.getAttribute('rx')).toBe('10') - expect(ellipse.node.getAttribute('ry')).toBe('20') - }) - it('sets the rx and ry if only rx given', function() { - ellipse.radius(30) - expect(ellipse.node.getAttribute('rx')).toBe('30') - expect(ellipse.node.getAttribute('ry')).toBe('30') - }) - it('sets the rx and ry value correctly when given 0', function() { - ellipse.radius(11, 0) - expect(ellipse.node.getAttribute('rx')).toBe('11') - expect(ellipse.node.getAttribute('ry')).toBe('0') - }) - }) - - describe('move()', function() { - it('sets the x and y position', function() { - ellipse.move(123, 456) - var box = ellipse.bbox() - expect(box.x).toBeCloseTo(123) - expect(box.y).toBeCloseTo(456) - }) - }) - - describe('dx()', function() { - it('moves the x positon of the element relative to the current position', function() { - ellipse.move(50, 60) - ellipse.dx(100) - expect(ellipse.node.getAttribute('cx')).toBe('270') - }) - }) - - describe('dy()', function() { - it('moves the y positon of the element relative to the current position', function() { - ellipse.move(50, 60) - ellipse.dy(120) - expect(ellipse.node.getAttribute('cy')).toBe('225') - }) - }) - - describe('dmove()', function() { - it('moves the x and y positon of the element relative to the current position', function() { - ellipse.move(50,60) - ellipse.dmove(80, 25) - expect(ellipse.node.getAttribute('cx')).toBe('250') - expect(ellipse.node.getAttribute('cy')).toBe('130') - }) - }) - - describe('center()', function() { - it('sets the cx and cy position', function() { - ellipse.center(321,567) - var box = ellipse.bbox() - expect(box.cx).toBe(321) - expect(box.cy).toBe(567) - }) - }) - - describe('width()', function() { - it('sets the width of the element', function() { - ellipse.width(82) - expect(ellipse.node.getAttribute('rx')).toBe('41') - }) - it('gets the width of the element if the argument is null', function() { - expect((ellipse.width() / 2).toString()).toBe(ellipse.node.getAttribute('rx')) - }) - }) - - describe('height()', function() { - it('sets the height of the element', function() { - ellipse.height(1236) - expect(ellipse.node.getAttribute('ry')).toBe('618') - }) - it('gets the height of the element if the argument is null', function() { - expect((ellipse.height() / 2).toString()).toBe(ellipse.node.getAttribute('ry')) - }) - }) - - describe('size()', function() { - it('defines the rx and ry of the element', function() { - ellipse.size(987,654) - expect(ellipse.node.getAttribute('rx')).toBe((987 / 2).toString()) - expect(ellipse.node.getAttribute('ry')).toBe((654 / 2).toString()) - }) - it('defines the width and height proportionally with only the width value given', function() { - var box = ellipse.bbox() - ellipse.size(500) - expect(ellipse.width()).toBe(500) - expect(ellipse.width() / ellipse.height()).toBe(box.width / box.height) - }) - it('defines the width and height proportionally with only the height value given', function() { - var box = ellipse.bbox() - ellipse.size(null, 525) - expect(ellipse.height()).toBe(525) - expect(ellipse.width() / ellipse.height()).toBe(box.width / box.height) - }) - }) - - describe('scale()', function() { - it('should scale the element universally with one argument', function() { - var box = ellipse.scale(2).rbox() - - expect(box.width).toBe(ellipse.attr('rx') * 2 * 2) - expect(box.height).toBe(ellipse.attr('ry') * 2 * 2) - }) - it('should scale the element over individual x and y axes with two arguments', function() { - var box = ellipse.scale(2, 3.5).rbox() - - expect(box.width).toBe(ellipse.attr('rx') * 2 * 2) - expect(box.height).toBe(ellipse.attr('ry') * 2 * 3.5) - }) - }) - - describe('translate()', function() { - it('sets the translation of an element', function() { - ellipse.transform({ tx: 12, ty: 12 }) - expect(ellipse.node.getAttribute('transform')).toBe('matrix(1,0,0,1,12,12)') - }) - }) - -}) diff --git a/spec/spec/event.js b/spec/spec/event.js deleted file mode 100644 index 8515d21..0000000 --- a/spec/spec/event.js +++ /dev/null @@ -1,277 +0,0 @@ -describe('Event', function() { - var rect, context - , toast = null - , fruitsInDetail = null, - action = function(e) { - toast = 'ready' - context = this - fruitsInDetail = e.detail || null - } - - beforeEach(function() { - rect = draw.rect(100, 100) - spyOn(SVG, 'on').and.callThrough() - spyOn(rect, 'dispatch').and.callThrough() - }) - - afterEach(function() { - toast = context = null - }) - - // FIXME: cannot be spied like that with es6 modules - // if (!this.isTouchDevice) { - // [ 'click' - // , 'dblclick' - // , 'mousedown' - // , 'mouseup' - // , 'mouseover' - // , 'mouseout' - // , 'mousemove' - // , 'mouseenter' - // , 'mouseleave' - // ].forEach(function(event) { - // describe(event+'()', function() { - // it('calls `on()` with '+event+' as event', function() { - // rect[event](action) - // expect(SVG.on).toHaveBeenCalledWith(rect, event, action) - // }) - // }) - // }) - // } else { - // [ 'touchstart' - // , 'touchmove' - // , 'touchleave' - // , 'touchend' - // , 'touchcancel' - // ].forEach(function(event) { - // describe(event+'()', function() { - // it('calls `on()` with '+event+' as event', function() { - // rect[event](action) - // expect(SVG.on).toHaveBeenCalledWith(rect, event, action) - // }) - // }) - // }) - // } - - - describe('on()', function() { - - it('attaches an event to the element', function() { - rect.on('event', action).fire('event') - expect(toast).toBe('ready') - }) - it('attaches multiple events to an element', function() { - var cnt = 0 - rect.on('bla sq.ns , wf,wq.ns2', function(){++cnt}).fire('wf').fire('sq').fire('wq') - expect(cnt).toBe(3) - }) - it('attaches an event to a non svg element', function() { - var el = document.createElement('div') - SVG.on(el, 'event', action) - el.dispatchEvent(new window.CustomEvent('event')) - expect(toast).toBe('ready') - SVG.off(el, 'event', action) - }) - it('attaches multiple handlers on different element', function() { - var rect2 = draw.rect(100, 100) - var rect3 = draw.rect(100, 100) - - rect.on('event', action) - rect2.on('event', action) - rect3.on('event', function(){ butter = 'melting' }) - rect3.on('event', action) - - expect(Object.keys(rect.events['event']['*']).length).toBe(1) // 1 listener on rect - expect(Object.keys(rect2.events['event']['*']).length).toBe(1) // 1 listener on rect2 - expect(Object.keys(rect3.events['event']['*']).length).toBe(2) // 2 listener on rect3 - }) - if('attaches a handler to a namespaced event', function(){ - var rect2 = draw.rect(100, 100) - var rect3 = draw.rect(100, 100) - - rect.on('event.namespace1', action) - rect2.on('event.namespace2', action) - rect3.on('event.namespace3', function(){ butter = 'melting' }) - rect3.on('event', action) - - expect(Object.keys(rect.events['event']['*'])).toBeUndefined() // no global listener on rect - expect(Object.keys(rect.events['event']['namespace1']).length).toBe( 1) // 1 namespaced listener on rect - expect(Object.keys(rect2.events['namespace2']).length).toBe(1) // 1 namespaced listener on rect2 - expect(Object.keys(rect3.events['event']['*']).length).toBe(1) // 1 gobal listener on rect3 - expect(Object.keys(rect3.events['event']['namespace3']).length).toBe(1) // 1 namespaced listener on rect3 - }) - it('applies the element as context', function() { - rect.on('event', action).fire('event') - expect(context).toBe(rect) - }) - it('applies given object as context', function() { - rect.on('event', action, this).fire('event') - expect(context).toBe(this) - }) - it('stores the listener for future reference', function() { - rect.on('event', action) - expect(rect.events['event']['*'][action._svgjsListenerId]).not.toBeUndefined() - }) - it('returns the called element', function() { - expect(rect.on('event', action)).toBe(rect) - }) - }) - - describe('off()', function() { - var butter = null - - beforeEach(function() { - butter = null - }) - - it('detaches a specific event listener, all other still working', function() { - rect2 = draw.rect(100,100) - rect3 = draw.rect(100,100) - - rect.on('event', action) - rect2.on('event', action) - rect3.on('event', function(){ butter = 'melting' }) - - rect.off('event', action) - - expect(Object.keys(rect.events['event']['*']).length).toBe(0) - - rect.fire('event') - expect(toast).toBeNull() - - rect2.fire('event') - expect(toast).toBe('ready') - - rect3.fire('event') - expect(butter).toBe('melting') - - expect(rect.events['event']['*'][action]).toBeUndefined() - }) - it('detaches a specific namespaced event listener, all other still working', function() { - rect2 = draw.rect(100,100) - rect3 = draw.rect(100,100) - - rect.on('event.namespace', action) - rect2.on('event.namespace', action) - rect3.on('event.namespace', function(){ butter = 'melting' }) - - rect.off('event.namespace', action) - - expect(Object.keys(rect.events['event']['namespace']).length).toBe(0) - expect(Object.keys(rect2.events['event']['namespace']).length).toBe(1) - - rect.fire('event') - expect(toast).toBeNull() - - rect2.fire('event') - expect(toast).toBe('ready') - - rect3.fire('event') - expect(butter).toBe('melting') - - expect(rect.events['event']['namespace'][action]).toBeUndefined() - }) - it('detaches all listeners for a specific namespace', function() { - rect.on('event', action) - rect.on('event.namespace', function() { butter = 'melting'; }) - rect.off('.namespace') - - rect.fire('event') - expect(toast).toBe('ready') - expect(butter).toBeNull() - }) - it('detaches all listeners for an event without a listener given', function() { - rect.on('event', action) - rect.on('event.namespace', function() { butter = 'melting'; }) - rect.off('event') - - rect.fire('event') - expect(toast).toBeNull() - expect(butter).toBeNull() - expect(rect.events['event']).toBeUndefined() - }) - it('detaches all listeners without an argument', function() { - rect.on('event', action) - rect.on('click', function() { butter = 'melting' }) - rect.off() - rect.fire('event') - rect.fire('click') - expect(toast).toBeNull() - expect(butter).toBeNull() - expect(Object.keys(rect.events).length).toBe(0) - }) - it('detaches multiple listeners at once', function() { - rect2 = draw.rect(100,100) - rect3 = draw.rect(100,100) - - rect.on('event.namespace bla foo.bar otherfoo.bar keepthis', action) - rect.off('event.namespace bla .bar') - - expect(Object.keys(rect.events['event']).length).toBe(0) - expect(rect.events['bla']).toBeUndefined() - expect(Object.keys(rect.events['foo']).length).toBe(0) - expect(Object.keys(rect.events['otherfoo']).length).toBe(0) - expect(Object.keys(rect.events['keepthis']['*']).length).toBe(1) - }) - it('returns the called element', function() { - expect(rect.off('event', action)).toBe(rect) - }) - it('does not throw when event is removed which was already removed with a global off', function() { - var undefined - - rect.on('event', action) - rect.off() - try{ - rect.off('event') - }catch(e){ - expect('Should not error out').toBe(true) - } - - expect(Object.keys(rect.events).length).toBe(0) - }) - }) - - describe('fire()', function() { - it('calls dispatch with its parameters', function() { - var data = {} - rect.dispatch('event', data) - expect(rect.dispatch).toHaveBeenCalledWith('event', data) - }) - - it('returns the called element', function() { - expect(rect.fire('event')).toBe(rect) - }) - }) - - describe('dispatch()', function() { - beforeEach(function() { - rect.on('event', action) - }) - - it('fires an event for the element', function() { - expect(toast).toBeNull() - rect.fire('event') - expect(toast).toBe('ready') - expect(fruitsInDetail).toBe(null) - }) - - it('fires event with additional data', function() { - expect(fruitsInDetail).toBeNull() - rect.fire('event', {apple:1}) - expect(fruitsInDetail).not.toBe(null) - expect(fruitsInDetail.apple).toBe(1) - }) - it('fires my own event', function() { - toast = null - rect.fire(new window.CustomEvent('event')) - expect(toast).toBe('ready') - }) - it('returns the dispatched event and makes it cancelable', function() { - rect.on('event', function(e) { - e.preventDefault() - }) - var event = rect.dispatch('event') - expect(event.defaultPrevented).toBe(true) - }) - }) -}) diff --git a/spec/spec/fx.js b/spec/spec/fx.js deleted file mode 100644 index 365a196..0000000 --- a/spec/spec/fx.js +++ /dev/null @@ -1,2867 +0,0 @@ -// describe('FX', function() { -// var rect, fx, undefined; -// -// beforeEach(function() { -// rect = draw.rect(100,100).move(100,100) -// fx = rect.animate(500) -// -// jasmine.clock().install() -// jasmine.clock().mockDate() // This freeze the Date -// }) -// -// afterEach(function() { -// jasmine.clock().uninstall() -// -// fx.stop(false, true) -// }) -// -// -// it('creates an instance of SVG.FX and sets parameter', function() { -// expect(fx instanceof SVG.FX).toBe(true) -// expect(fx._target).toBe(rect) -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.lastPos).toBe(0) -// expect(fx.paused).toBe(false) -// expect(fx.active).toBe(false) -// expect(fx._speed).toBe(1) -// expect(fx.situations).toEqual([]) -// expect(fx.situation.init).toBe(false) -// expect(fx.situation.reversed).toBe(false) -// expect(fx.situation.duration).toBe(500) -// expect(fx.situation.delay).toBe(0) -// expect(fx.situation.loops).toBe(false) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.animations).toEqual({}) -// expect(fx.situation.attrs).toEqual({}) -// expect(fx.situation.styles).toEqual({}) -// expect(fx.situation.transforms).toEqual([]) -// expect(fx.situation.once).toEqual({}) -// }) -// -// describe('animate()', function () { -// it('set duration, ease and delay of the new situation to their default value when they are not passed', function() { -// var defaultDuration = 1000 -// , defaultEase = SVG.easing['-'] -// , defaultDelay = 0 -// , lastSituation = fx.animate().last() -// -// expect(lastSituation.duration).toBe(defaultDuration) -// expect(lastSituation.ease).toBe(defaultEase) -// expect(lastSituation.delay).toBe(defaultDelay) -// }) -// -// it('use the passed values to set duration, ease and delay of the new situation', function() { -// var duration = 14502 -// , ease = '>' -// , delay = 450 -// , lastSituation = fx.animate(duration, ease, delay).last() -// -// expect(lastSituation.duration).toBe(duration) -// expect(lastSituation.ease).toBe(SVG.easing[ease]) -// expect(lastSituation.delay).toBe(delay) -// }) -// -// it('allow duration, ease and delay to be passed in an object', function() { -// var o = { -// duration: 7892 -// , ease: '<' -// , delay: 1145 -// } -// , lastSituation = fx.animate(o).last() -// -// expect(lastSituation.duration).toBe(o.duration) -// expect(lastSituation.ease).toBe(SVG.easing[o.ease]) -// expect(lastSituation.delay).toBe(o.delay) -// }) -// -// it('allow ease to be a custom function', function () { -// var customEase = function() {} -// , lastSituation = fx.animate({ease: customEase}).last() -// -// expect(lastSituation.ease).toBe(customEase) -// }) -// }) -// -// describe('target()', function(){ -// it('returns the current fx object with no argument given', function(){ -// expect(fx.target()).toBe(rect) -// }) -// -// it('changes the target of the animation when parameter given', function(){ -// var c = draw.circle(5) -// expect(fx.target(c).target()).toBe(c) -// }) -// }) -// -// -// describe('timeToAbsPos()', function() { -// it('converts a timestamp to an absolute progress', function() { -// expect(fx.timeToAbsPos( fx.situation.start + fx.situation.duration*0.5 )).toBe(0.5) -// }) -// -// it('should take speed into consideration', function() { -// var spd -// -// spd = 4 -// fx.speed(spd) -// expect(fx.timeToAbsPos( fx.situation.start + (fx.situation.duration/spd)*0.5 )).toBe(0.5) -// -// spd = 0.5 -// fx.speed(spd) -// expect(fx.timeToAbsPos( fx.situation.start + (fx.situation.duration/spd)*0.25 )).toBe(0.25) -// }) -// }) -// -// -// describe('absPosToTime()', function() { -// it('converts an absolute progress to a timestamp', function() { -// expect(fx.absPosToTime(0.5)).toBe( fx.situation.start + fx.situation.duration*0.5 ) -// }) -// -// it('should take speed into consideration', function() { -// var spd -// -// spd = 4 -// fx.speed(spd) -// expect(fx.absPosToTime(0.5)).toBe( fx.situation.start + (fx.situation.duration/spd)*0.5 ) -// -// spd = 0.5 -// fx.speed(spd) -// expect(fx.absPosToTime(0.25)).toBe( fx.situation.start + (fx.situation.duration/spd)*0.25 ) -// }) -// }) -// -// -// describe('atStart()', function () { -// it('sets the animation at the start', function() { -// // When the animation is running forward, the start position is 0 -// fx.pos = 0.5 -// expect(fx.atStart().pos).toBe(0) -// -// // When the animation is running backward, the start position is 1 -// fx.pos = 0.5 -// expect(fx.reverse(true).atStart().pos).toBe(1) -// }) -// -// it('sets the animation at the start, before any loops', function() { -// fx.loop(true) -// -// // When the animation is running forward, the start position is 0 -// fx.at(3.7, true) -// expect(fx.absPos).toBe(3.7) -// expect(fx.pos).toBeCloseTo(0.7) -// expect(fx.situation.loop).toBe(3) -// -// fx.atStart() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.situation.loop).toBe(0) -// -// // When the animation is running backward, the start position is 1 -// fx.reverse(true).at(2.14, true) -// expect(fx.absPos).toBe(2.14) -// expect(fx.pos).toBeCloseTo(1 - 0.14) -// expect(fx.situation.loop).toBe(2) -// expect(fx.situation.reversed).toBe(true) -// -// fx.atStart() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(1) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.reversed).toBe(true) -// }) -// -// it('sets the animation at the start, before any loops when reversing is true', function() { -// fx.loop(true, true) // Set reversing to true -// -// // When the animation is running forward, the start position is 0 -// fx.at(11.21, true) -// expect(fx.absPos).toBe(11.21) -// expect(fx.pos).toBeCloseTo(1 - 0.21) -// expect(fx.situation.loop).toBe(11) -// expect(fx.situation.reversed).toBe(true) -// -// fx.atStart() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.reversed).toBe(false) -// -// // When the animation is running backward, the start position is 1 -// fx.reverse(true).at(14.10, true) -// expect(fx.absPos).toBe(14.10) -// expect(fx.pos).toBeCloseTo(1 - 0.10) -// expect(fx.situation.loop).toBe(14) -// expect(fx.situation.reversed).toBe(true) -// -// fx.atStart() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(1) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.reversed).toBe(true) -// }) -// }) -// -// -// describe('atEnd()', function () { -// it('sets the animation at the end', function() { -// // When the animation is running forward, the end position is 1 -// fx.pos = 0.5 -// expect(fx.atEnd().pos).toBe(1) -// expect(fx.situation).toBeNull() -// -// // Recreate an animation since the other one was ended -// fx.animate() -// -// // When the animation is running backward, the end position is 0 -// fx.pos = 0.5 -// expect(fx.reverse(true).atEnd().pos).toBe(0) -// expect(fx.situation).toBeNull() -// }) -// -// it('sets the animation at the end, after all loops', function() { -// var loops -// -// // When the animation is running forward, the end position is 1 -// loops = 12 -// fx.loop(loops).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(loops) -// -// fx.atEnd() -// expect(fx.absPos).toBe(loops) -// expect(fx.pos).toBe(1) -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// -// // Recreate an animation since the other one was ended -// fx.animate() -// -// -// // When the animation is running backward, the end position is 0 -// loops = 21 -// fx.reverse(true).loop(loops).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(1) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(loops) -// expect(fx.situation.reversed).toBe(true) -// -// fx.atEnd() -// expect(fx.absPos).toBe(loops) -// expect(fx.pos).toBe(0) -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// }) -// -// it('sets the animation at the end, after all loops when reversing is true', function() { -// var loops -// -// // When reversing is true, the end position is 0 when loops is even and -// // 1 when loops is odd -// -// // The animation is running forward -// loops = 6 -// fx.loop(loops, true).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(loops) -// expect(fx.situation.reversed).toBe(false) -// -// fx.atEnd() -// expect(fx.absPos).toBe(loops) -// expect(fx.pos).toBe(0) // End position is 0 because loops is even -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// -// // Recreate an animation since the other one was ended -// fx.animate() -// -// // When reversing is true and the animation is running backward, -// // the end position is 1 when loops is even and 0 when loops is odd -// -// // The animation is running backward -// loops = 3 -// fx.reverse(true).loop(loops, true).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(1) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(loops) -// expect(fx.situation.reversed).toBe(true) -// -// fx.atEnd() -// expect(fx.absPos).toBe(loops) -// expect(fx.pos).toBe(0) // End position is 0 because loops is odd -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// }) -// -// it('sets the animation at the end of the current iteration when in an infinite loop', function () { -// // When the animation is running forward, the end position is 1 -// fx.loop(true).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(true) -// -// // Should be halfway through iteration 10 -// jasmine.clock().tick(500 * 10 + 250) -// fx.step() -// expect(fx.absPos).toBe(10.5) -// expect(fx.pos).toBe(0.5) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(10) -// expect(fx.situation.loops).toBe(true) -// -// fx.atEnd() -// expect(fx.absPos).toBe(11) -// expect(fx.pos).toBe(1) -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// -// // Recreate an animation since the other one was ended -// fx.animate(500) -// -// // When the animation is running backward, the end position is 0 -// fx.reverse(true).loop(true).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(1) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(true) -// expect(fx.situation.reversed).toBe(true) -// -// // Should be halfway through iteration 21 -// jasmine.clock().tick(500 * 21 + 250) -// fx.step() -// expect(fx.absPos).toBe(21.5) -// expect(fx.pos).toBe(0.5) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(21) -// expect(fx.situation.loops).toBe(true) -// -// fx.atEnd() -// expect(fx.absPos).toBe(22) -// expect(fx.pos).toBe(0) -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// }) -// -// -// it('sets the animation at the end of the current iteration when in an infinite loop and reversing is true', function () { -// // When reversing is true, the end position is 1 when ending on an even -// // iteration and 0 when ending on an odd iteration as illustrated below: -// -// // 0 Iteration 1 -// // |--------------0------------->| -// // |<-------------1--------------| -// // |--------------2------------->| -// // |<-------------3--------------| -// // ... -// -// -// // The animation is running forward -// fx.loop(true, true).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(true) -// -// // Should be halfway through iteration 11 -// jasmine.clock().tick(500 * 11 + 250) -// fx.step() -// expect(fx.absPos).toBe(11.5) -// expect(fx.pos).toBe(0.5) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(11) -// expect(fx.situation.loops).toBe(true) -// -// fx.atEnd() -// expect(fx.absPos).toBe(12) -// expect(fx.pos).toBe(0) // End position is 0 because ended on a odd iteration -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// -// // Recreate an animation since the other one was ended -// fx.animate(500) -// -// // When reversing is true and the animation is running backward, -// // the end position is 0 when ending on an even iteration and -// // 1 when ending on an odd iteration as illustrated below: -// -// // 0 Iteration 1 -// // |<-------------0--------------| -// // |--------------1------------->| -// // |<-------------2--------------| -// // |--------------3------------->| -// // ... -// -// // The animation is running backward -// fx.reverse(true).loop(true).start().step() -// expect(fx.absPos).toBe(0) -// expect(fx.pos).toBe(1) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(true) -// expect(fx.situation.reversed).toBe(true) -// -// // Should be halfway through iteration 42 -// jasmine.clock().tick(500 * 42 + 250) -// fx.step() -// expect(fx.absPos).toBe(42.5) -// expect(fx.pos).toBe(0.5) -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(42) -// expect(fx.situation.loops).toBe(true) -// -// fx.atEnd() -// expect(fx.absPos).toBe(43) -// expect(fx.pos).toBe(0) // End position is 0 because ended on an even iteration -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// }) -// }) -// -// -// describe('at()', function() { -// it('sets the progress to the specified position', function() { -// var pos -// -// // Animation running forward -// pos = 0.5 -// expect(fx.at(pos).pos).toBe(pos) -// expect(fx.situation.start).toBe(+new Date - fx.situation.duration * pos) -// -// // Animation running backward -// pos = 0.4 -// expect(fx.reverse(true).at(pos).pos).toBe(pos) -// expect(fx.situation.start).toBe(+new Date - fx.situation.duration * (1-pos)) -// }) -// -// it('should convert a position to an absolute position', function () { -// var pos, loop, absPos -// -// fx.loop(true) -// -// // Animation running forward -// pos = 0.7 -// loop = 4 -// absPos = pos+loop -// fx.situation.loop = loop -// expect(fx.at(pos).absPos).toBe(absPos) -// expect(fx.situation.start).toBe(+new Date - fx.situation.duration * absPos) -// -// // Animation running backward -// pos = 0.23 -// loop = 9 -// absPos = (1-pos)+loop -// fx.situation.loop = loop -// fx.situation.reversed = true -// expect(fx.at(pos).absPos).toBe(absPos) -// expect(fx.situation.start).toBe(+new Date - fx.situation.duration * absPos) -// -// }) -// -// it('should end the animation when the end position is passed', function() { -// var pos -// -// fx.start() -// expect(fx.active).toBe(true) -// expect(fx.situation).not.toBeNull() -// -// // When running forward, the end position is 1 -// pos = 1 -// expect(fx.at(pos).pos).toBe(pos) -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// -// // Recreate an animation since the other one was ended -// fx.animate().start() -// expect(fx.active).toBe(true) -// expect(fx.situation).not.toBeNull() -// -// // When running backward, the end position is 0 -// pos = 0 -// expect(fx.reverse(true).at(pos).pos).toBe(pos) -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// }) -// -// it('correct the passed position when it is out of [0,1] and the animation is not looping', function () { -// var pos -// -// pos = -0.7 -// expect(fx.at(pos).pos).toBe(0) -// -// pos = 1.3 -// expect(fx.at(pos).pos).toBe(1) -// -// // Recreate an animation since the other one was ended -// fx.animate() -// -// // Should work even when animation is running backward -// pos = 1.3 -// expect(fx.reverse(true).at(pos).pos).toBe(1) -// -// pos = -0.7 -// expect(fx.reverse(true).at(pos).pos).toBe(0) -// }) -// -// it('should, when the animation is looping and the passed position is out of [0,1], use the integer part of postion to update the loop counter and set position to its fractional part', function(){ -// var loop, pos, posFrac, posInt -// -// // Without the reverse flag -// fx.loop(10) -// expect(fx.situation.loops).toBe(10) -// expect(fx.situation.loop).toBe(loop = 0) -// -// pos = 1.3 -// posFrac = pos % 1 -// posInt = pos - posFrac -// expect(fx.at(pos).pos).toBeCloseTo(posFrac) -// expect(fx.situation.loop).toBe(loop += posInt) -// -// pos = 7.723 -// posFrac = pos % 1 -// posInt = pos - posFrac -// expect(fx.at(pos).pos).toBeCloseTo(posFrac) -// expect(fx.situation.loop).toBe(loop += posInt) -// -// // In this case, pos is above the remaining number of loops, so we expect -// // the position to be set to 1 and the animation to be ended -// pos = 4.3 -// posFrac = pos % 1 -// posInt = pos - posFrac -// expect(fx.at(pos).pos).toBe(1) -// expect(fx.situation).toBeNull() -// -// // Recreate an animation since the other one was ended -// fx.animate() -// -// // With the reverse flag, the position is reversed each time loop is odd -// fx.loop(10, true) -// expect(fx.situation.loops).toBe(10) -// expect(fx.situation.loop).toBe(loop = 0) -// expect(fx.situation.reversed).toBe(false) -// -// pos = 3.3 -// posFrac = pos % 1 -// posInt = pos - posFrac -// expect(fx.at(pos).pos).toBeCloseTo(1-posFrac) // Animation is reversed because 0+3 is odd -// expect(fx.situation.loop).toBe(loop += posInt) -// expect(fx.situation.reversed).toBe(true) -// -// // When the passed position is below 0, the integer part of position is -// // substracted from 1, so, in this case, -0.6 has 1 as is integer part -// // This is necessary so we can add something to the loop counter -// pos = -0.645 -// posFrac = (1-pos) % 1 -// posInt = (1-pos) - posFrac -// expect(fx.at(pos).pos).toBeCloseTo(posFrac) -// expect(fx.situation.loop).toBe(loop += posInt) -// expect(fx.situation.reversed).toBe(false) -// -// // In this case, pos is above the remaining number of loop, so we expect -// // the position to be set to 0 (since we end reversed) and the animation to -// // be ended -// pos = 7.2 -// posFrac = pos % 1 -// posInt = pos - posFrac -// expect(fx.at(pos).pos).toBe(0) -// expect(fx.situation).toBeNull() -// }) -// -// it('should, when the animation is in a infinite loop and the passed position is out of [0,1], use the integer part of postion to update the loop counter and set position to its fractional part', function(){ -// var loop, pos, posFrac, posInt -// -// // Without the reverse flag -// fx.loop(true) -// expect(fx.situation.loops).toBe(true) -// expect(fx.situation.loop).toBe(loop = 0) -// -// pos = 10.34 -// posFrac = pos % 1 -// posInt = pos - posFrac -// expect(fx.at(pos).pos).toBeCloseTo(posFrac) -// expect(fx.situation.loop).toBe(loop += posInt) -// -// // With the reverse flag, the position is reversed each time loop is odd -// fx.loop(true, true) -// expect(fx.situation.loops).toBe(true) -// expect(fx.situation.loop).toBe(loop = 0) -// expect(fx.situation.reversed).toBe(false) -// -// pos = 3.3 -// posFrac = pos % 1 -// posInt = pos - posFrac -// expect(fx.at(pos).pos).toBeCloseTo(1-posFrac) // Animation is reversed because 3+0 is odd -// expect(fx.situation.loop).toBe(loop += posInt) -// expect(fx.situation.reversed).toBe(true) -// -// pos = -8.41 -// posFrac = (1-pos) % 1 -// posInt = (1-pos) - posFrac -// expect(fx.at(pos).pos).toBeCloseTo(posFrac) -// expect(fx.situation.loop).toBe(loop += posInt) -// expect(fx.situation.reversed).toBe(false) -// }) -// -// it('should take speed into consideration', function() { -// var dur, spd -// -// dur = fx.situation.duration -// -// spd = 4 -// fx.speed(spd).at(0) -// expect(fx.situation.finish-fx.situation.start).toBe(dur/spd) -// -// spd = 5 -// fx.speed(spd).at(0.15) -// expect(fx.situation.finish-fx.situation.start).toBe(dur/spd) -// -// spd = 0.25 -// fx.speed(spd).at(0.75) -// expect(fx.situation.finish-fx.situation.start).toBe(dur/spd) -// -// spd = 0.5 -// fx.speed(spd).at(0.83) -// expect(fx.situation.finish-fx.situation.start).toBe(dur/spd) -// }) -// -// it('should consider the first parameter as an absolute position when the second parameter is true', function() { -// var absPos -// -// fx.loop(true) -// -// absPos = 3.2 -// expect(fx.at(absPos, true).absPos).toBe(absPos) -// -// absPos = -4.27 -// expect(fx.at(absPos, true).absPos).toBe(absPos) -// -// absPos = 0 -// expect(fx.at(absPos, true).absPos).toBe(absPos) -// -// absPos = 1 -// expect(fx.at(absPos, true).absPos).toBe(absPos) -// }) -// }) -// -// -// describe('start()', function(){ -// it('starts the animation', function() { -// fx.start() -// expect(fx.active).toBe(true) -// -// jasmine.clock().tick(200) -// fx.step() // Call step to update the animation -// -// expect(fx.pos).toBeGreaterThan(0) -// }) -// -// it('should take speed into consideration', function() { -// var dur = 500 -// , delay = 300 -// , spd = 4 -// -// -// fx.stop().animate(dur, '-', delay).speed(spd).start() -// expect(fx.situation.finish - new Date).toBe(delay/spd + dur/spd) -// }) -// -// it('should do the delay', function() { -// fx.situation.delay = 1000 -// expect(fx.start().active).toBe(true) -// -// jasmine.clock().tick(501) -// fx.step() // Call step to update the animation -// expect(fx.active).toBe(true) -// -// jasmine.clock().tick(501) -// fx.step() // Call step to update the animation -// expect(fx.active).toBe(true) -// -// jasmine.clock().tick(501) -// fx.step() // Call step to update the animation -// expect(fx.active).toBe(false) -// }) -// }) -// -// describe('delay()', function() { -// it('should push an empty situation with its duration attribute set to the duration of the delay', function() { -// var delay = 8300 -// fx.delay(delay) -// expect(fx.situations[0].duration).toBe(delay) -// }) -// }) -// -// -// describe('pause()', function() { -// it('pause the animation', function() { -// expect(fx.pause().paused).toBe(true) -// }) -// }) -// -// describe('play()', function() { -// it('returns itself when animation not paused', function() { -// expect(fx.paused).toBe(false) -// expect(fx.play()).toBe(fx) -// }) -// -// it('unpause the animation', function() { -// var start = fx.start().pause().situation.start -// -// jasmine.clock().tick(200) -// -// expect(fx.situation.start).toBe(start) -// expect(fx.play().paused).toBe(false) -// expect(fx.situation.start).not.toBe(start) -// }) -// -// it('should not change the position when the animation is unpaused while it is set to run backward', function(){ -// var pos = 0.4 -// -// expect(fx.reverse(true).at(pos).pause().play().pos).toBe(pos) -// }) -// -// it('should be able to unpause the delay', function () { -// fx.stop().animate(500, '-', 300).start().step() -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBeCloseTo(-0.6) -// -// // At this point, we should have an animation of 500 ms with a delay of -// // 300 ms that should be running. -// -// jasmine.clock().tick(150) -// -// // Should be halfway through the delay -// fx.step() -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(-0.3) -// -// expect(fx.pause().paused).toBe(true) // Pause the delay -// -// jasmine.clock().tick(150) -// -// // Unpause, should still be halfway through the delay -// expect(fx.play().paused).toBe(false) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(-0.3) -// -// jasmine.clock().tick(150) -// -// // Delay should be done -// fx.step() -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(0) -// -// jasmine.clock().tick(500) -// -// // Animation and delay should be done -// fx.step() -// expect(fx.active).toBe(false) -// expect(fx.pos).toBe(1) -// expect(fx.absPos).toBe(1) -// }) -// }) -// -// -// describe('speed()', function() { -// it('set the speed of the animation', function(){ -// var dur, spd -// -// dur = fx.situation.duration -// -// spd = 2 -// fx.speed(spd) -// expect(fx._speed).toBe(spd) -// expect(fx.situation.finish-fx.situation.start).toBe(dur/spd) -// -// spd = 0.5 -// fx.speed(spd) -// expect(fx._speed).toBe(spd) -// expect(fx.situation.finish-fx.situation.start).toBe(dur/spd) -// -// spd = 2 -// fx.at(0.2).speed(spd) -// expect(fx._speed).toBe(spd) -// expect(fx.situation.finish-fx.situation.start).toBe(dur/spd) -// -// spd = 1 -// fx.speed(spd) -// expect(fx._speed).toBe(spd) -// expect(fx.situation.finish-fx.situation.start).toBe(dur) -// }) -// -// it('should not change the position when the animation is run backward', function(){ -// var pos = 0.4 -// -// expect(fx.reverse(true).at(pos).speed(2).pos).toBe(pos) -// }) -// -// it('return the current speed with no argument given', function(){ -// var spd -// -// spd = 2 -// fx._speed = spd -// expect(fx.speed()).toBe(spd) -// -// spd = 0.5 -// fx._speed = spd -// expect(fx.speed()).toBe(spd) -// -// spd = 1 -// fx._speed = spd -// expect(fx.speed()).toBe(spd) -// }) -// -// it('pause the animation when a speed of 0 is passed', function(){ -// var spd = fx._speed -// -// expect(fx.speed(0)).toBe(fx) -// expect(fx._speed).toBe(spd) -// expect(fx.paused).toBe(true) -// }) -// -// it('should affect all animations in the queue', function(){ -// fx.speed(2).animate(300) -// expect(fx.situations.length).not.toBe(0) -// expect(fx.pos).not.toBe(1) -// -// // At this point, there should be 2 animations in the queue to be played: -// // the one of 500ms that is added before every test and the one of 300ms -// // we just added. Normally, it would take 800ms before both of these -// // animations are done, but because we set the speed to 2, it should -// // only take 400ms to do both animations. -// fx.start().step() -// -// jasmine.clock().tick(250) -// -// // Should be playing the second animation -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situations.length).toBe(0) -// expect(fx.pos).not.toBe(1) -// -// jasmine.clock().tick(150) // 400ms have passed -// -// // All animations should be done -// fx.step() -// expect(fx.active).toBe(false) -// expect(fx.situations.length).toBe(0) -// expect(fx.pos).toBe(1) -// }) -// -// it('should affect the delay', function() { -// fx.stop().animate(500, '-', 300).start().step() -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBeCloseTo(-0.6) -// -// fx.speed(2) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBeCloseTo(-0.6) -// -// // At this point, we should have an animation of 500 ms with a delay of -// // 300 ms that should be running. Normally, it would take 800 ms for the -// // animation and its delay to complete, but because the speed is set to 2 -// // , it should only take 400ms -// -// jasmine.clock().tick(75) -// -// // Should be halfway through the delay -// fx.step() -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(-0.3) -// -// jasmine.clock().tick(75) -// -// // Delay should be done -// fx.step() -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(0) -// -// jasmine.clock().tick(250) -// -// // Animation and delay should be done -// fx.step() -// expect(fx.active).toBe(false) -// expect(fx.pos).toBe(1) -// expect(fx.absPos).toBe(1) -// }) -// }) -// -// -// describe('reverse()', function() { -// it('toggles the direction of the animation without a parameter', function() { -// expect(fx.reverse().situation.reversed).toBe(true) -// }) -// it('sets the direction to backwards with true given', function() { -// expect(fx.reverse(true).situation.reversed).toBe(true) -// }) -// it('sets the direction to forwards with false given', function() { -// expect(fx.reverse(false).situation.reversed).toBe(false) -// }) -// }) -// -// -// describe('queue()', function() { -// it('can add a situation to the queue', function() { -// var situation = new SVG.Situation({duration: 1000, delay: 0, ease: SVG.easing['-']}) -// -// fx.queue(situation) -// expect(fx.situations[0]).toBe(situation) -// }) -// -// it('can add a function to the queue', function() { -// var f = function(){} -// -// fx.queue(f) -// expect(fx.situations[0]).toBe(f) -// }) -// -// it('should set the situation attribute before pushing something in the situations queue', function(){ -// var situation = new SVG.Situation({duration: 1000, delay: 0, ease: SVG.easing['-']}) -// -// // Clear the animation that is created before each test -// fx.stop() -// -// expect(fx.situation).toBeNull() -// expect(fx.situations.length).toBe(0) -// fx.queue(situation) -// expect(fx.situation).toBe(situation) -// expect(fx.situations.length).toBe(0) -// }) -// }) -// -// -// describe('dequeue()', function() { -// it('should pull the next situtation from the queue', function() { -// var situation = new SVG.Situation({duration: 1000, delay: 0, ease: SVG.easing['-']}) -// -// fx.queue(situation) -// expect(fx.situtation).not.toBe(situation) -// expect(fx.situations[0]).toBe(situation) -// -// fx.dequeue() -// expect(fx.situation).toBe(situation) -// expect(fx.situations.length).toBe(0) -// }) -// -// it('initialize the animation pulled from the queue to its start position', function() { -// // When the animation is forward, the start position is 0 -// fx.animate() -// fx.pos = 0.5 -// expect(fx.dequeue().pos).toBe(0) -// -// // When the animation backward, the start position is 1 -// fx.animate().reverse(true) -// fx.pos = 0.5 -// expect(fx.dequeue().pos).toBe(1) -// }) -// -// it('when the first element of the queue is a function, it should execute it', function() { -// var called = false -// -// fx.queue(function(){ -// called = true -// expect(this).toBe(fx) -// this.dequeue() -// }).dequeue() -// -// expect(called).toBe(true) -// }) -// -// it('should stop the currently running animation when there is one', function() { -// fx.start() -// expect(fx.active).toBe(true) -// fx.queue(function() { -// expect(this.active).toBe(false) -// this.dequeue() -// }) -// fx.dequeue() -// }) -// }) -// -// -// describe('stop()', function() { -// it('stops the animation immediately without a parameter', function() { -// fx.animate(500).start() -// expect(fx.stop().situation).toBeNull() -// expect(fx.active).toBe(false) -// expect(fx.situations.length).toBe(1) -// }) -// it('stops the animation immediately and fullfill it if first parameter true', function() { -// fx.animate(500).start() -// expect(fx.stop(true).situation).toBeNull() -// expect(fx.active).toBe(false) -// expect(fx.pos).toBe(1) -// expect(fx.situations.length).toBe(1) -// }) -// it('stops the animation immediately and remove all items from queue when second parameter true', function() { -// fx.animate(500).start() -// expect(fx.stop(false, true).situation).toBeNull() -// expect(fx.active).toBe(false) -// expect(fx.situations.length).toBe(0) -// }) -// }) -// -// -// describe('reset()', function() { -// it('resets the element to the state it was when the current animation was started', function() { -// var loops = 4 -// , situation = fx.situation -// -// // These settings make the animations run backward -// fx.situation.loop = 2 -// fx.situation.loops = loops -// fx.situation.reversed = true -// fx.pos = 0.5 -// fx.absPos = 2.5 -// -// fx.reset() -// -// expect(fx.situation).toBe(situation) -// expect(fx.situation.loops).toBe(loops) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.reversed).toBe(true) // True because the animation is backward -// expect(fx.pos).toBe(1) -// expect(fx.absPos).toBe(0) -// }) -// }) -// -// -// describe('finish()', function() { -// it('finish the whole animation by fullfilling every single one', function() { -// fx.animate(500) -// expect(fx.finish().pos).toBe(1) -// expect(fx.situations.length).toBe(0) -// expect(fx.situation).toBeNull() -// }) -// }) -// -// -// describe('progress()', function() { -// it('returns the current position', function() { -// expect(fx.progress()).toBe(0) -// expect(fx.progress()).toBe(fx.pos) -// }) -// it('returns the current position as eased value if fist argument is true', function() { -// var anim = draw.rect(100,100).animate(500,'>').start() -// expect(anim.progress(true)).toBe(0) -// -// anim.at(0.25) -// expect(anim.progress(true)).toBeCloseTo(anim.situation.ease(0.25)) -// }) -// }) -// -// -// describe('after()', function() { -// it('adds a callback which is called when the current animation is finished', function() { -// var called = false -// -// fx.start().after(function(situation){ -// expect(fx.situation).toBe(situation) -// expect(fx.pos).toBe(1) -// called = true -// }) -// -// jasmine.clock().tick(500) -// fx.step() -// expect(called).toBe(true) -// }) -// }) -// -// -// describe('afterAll()', function() { -// it('adds a callback which is called when all animations are finished', function() { -// var called = false -// -// fx.animate(150).animate(125).start().afterAll(function(){ -// expect(fx.pos).toBe(1) -// expect(fx.situations.length).toBe(0) -// called = true -// }) -// -// expect(fx.situations.length).toBe(2) -// -// // End of the first animation -// jasmine.clock().tick(500) -// fx.step() -// expect(fx.situations.length).toBe(1) -// expect(called).toBe(false) -// -// // End of the second animation -// jasmine.clock().tick(150) -// fx.step() -// expect(fx.situations.length).toBe(0) -// expect(called).toBe(false) -// -// // End of the third and last animation -// jasmine.clock().tick(125) -// fx.step() -// expect(fx.situation).toBeNull() -// expect(called).toBe(true) -// }) -// }) -// -// -// describe('during()', function() { -// it('adds a callback which is called on every animation step', function() { -// var called = 0 -// -// fx.start().during(function(pos, morph, eased, situation){ -// -// expect(fx.situation).toBe(situation) -// -// switch(++called) { -// case 1: -// expect(pos).toBeCloseTo(0.25) -// break -// -// case 2: -// expect(pos).toBeCloseTo(0.5) -// break -// -// case 3: -// expect(pos).toBeCloseTo(0.65) -// break -// -// case 4: -// expect(pos).toBe(1) -// break -// } -// -// expect(morph(0, 100)).toBeCloseTo(pos*100) -// -// }) -// -// jasmine.clock().tick(125) -// fx.step() -// expect(called).toBe(1) -// -// jasmine.clock().tick(125) // 250 ms have passed -// fx.step() -// expect(called).toBe(2) -// -// jasmine.clock().tick(75) // 325 ms have passed -// fx.step() -// expect(called).toBe(3) -// -// jasmine.clock().tick(175) // 500 ms have passed -// fx.step() -// expect(called).toBe(4) -// }) -// }) -// -// -// describe('duringAll()', function() { -// it('adds a callback which is called on every animation step for the whole chain', function() { -// -// fx.finish() -// rect.off('.fx') -// -// fx.animate(500).start().animate(500) -// -// var sit = null -// -// var pos1 = false -// var pos2 = false -// -// fx.duringAll(function(pos, morph, eased, situation){ -// -// if(pos1){ -// pos1 = false -// sit = situation -// expect(this.fx.pos).toBeCloseTo(0.6) -// } -// -// if(pos2){ -// pos2 = null -// expect(situation).not.toBe(sit) -// expect(this.fx.pos).toBeCloseTo(0.75) -// } -// }) -// -// pos1 = true -// jasmine.clock().tick(300) -// fx.step() -// -// jasmine.clock().tick(200) // End of the first animation -// fx.step() -// -// pos2 = true -// jasmine.clock().tick(375) -// fx.step() -// -// if(pos1 || pos2) { -// fail('Not enough situations called') -// } -// }) -// }) -// -// -// describe('once()', function() { -// it('adds a callback which is called once at the specified position', function() { -// var called = false -// -// fx.start().once(0.5, function(pos, eased){ -// called = true -// expect(pos).toBeCloseTo(0.5) -// }) -// -// jasmine.clock().tick(125) -// fx.step() -// expect(called).toBe(false) -// -// jasmine.clock().tick(125) // 250 ms have passed -// fx.step() -// expect(called).toBe(true) -// }) -// -// it('adds the callback on the last situation', function () { -// var callback = function () {} -// -// fx.animate(500).animate(500).once(0.5, callback) -// expect(fx.situation.once['0.5']).toBeUndefined() -// expect(fx.situations[0].once['0.5']).toBeUndefined() -// expect(fx.situations[1].once['0.5']).toBe(callback) -// }) -// }) -// -// -// describe('loop()', function() { -// it('should create an eternal loop when no arguments are given', function() { -// var time = 10523, dur = fx.situation.duration -// -// fx.loop() -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(true) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(0) -// -// fx.start().step() -// jasmine.clock().tick(time) -// fx.step() -// -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe( Math.floor(time/dur) ) -// expect(fx.situation.loops).toBe(true) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// }) -// -// it('should create an eternal loop when the first argument is true', function() { -// var time = 850452, dur = fx.situation.duration -// -// fx.loop(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(true) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(0) -// -// fx.start().step() -// jasmine.clock().tick(time) -// fx.step() -// -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe( Math.floor(time/dur) ) -// expect(fx.situation.loops).toBe(true) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// }) -// -// it('should loop for the specified number of times', function() { -// var time = 0, dur = fx.situation.duration -// -// fx.loop(3) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(3) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(0) -// -// fx.start().step() -// jasmine.clock().tick(200) -// time = 200 -// -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(3) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// -// jasmine.clock().tick(550) -// time += 550 // time at 750 -// -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(1) -// expect(fx.situation.loops).toBe(3) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// -// jasmine.clock().tick(570) -// time += 570 // time at 1320 -// -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(2) -// expect(fx.situation.loops).toBe(3) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// -// jasmine.clock().tick(180) -// time += 180 // time at 1500 -// -// fx.step() -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// expect(fx.pos).toBe(1) -// expect(fx.absPos).toBe(3) -// }) -// -// it('should go from beginning to end and start over again (0->1.0->1.0->1.) by default', function() { -// var time = 0, dur = fx.situation.duration -// -// fx.loop(2) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(2) -// expect(fx.situation.reversing).toBe(false) -// expect(fx.situation.reversed).toBe(false) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(0) -// -// fx.start().step() -// jasmine.clock().tick(325) -// time = 325 -// -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(2) -// expect(fx.situation.reversing).toBe(false) -// expect(fx.situation.reversed).toBe(false) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// -// jasmine.clock().tick(575) -// time += 575 // time at 900 -// -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(1) -// expect(fx.situation.loops).toBe(2) -// expect(fx.situation.reversing).toBe(false) -// expect(fx.situation.reversed).toBe(false) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// -// jasmine.clock().tick(200) -// time += 200 // time at 1100 -// -// fx.step() -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// expect(fx.pos).toBe(1) -// expect(fx.absPos).toBe(2) -// }) -// -// it('should be completely reversed before starting over (0->1->0->1->0->1.) when the reverse flag is passed', function() { -// var time = 0, dur = fx.situation.duration -// -// fx.loop(2, true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(2) -// expect(fx.situation.reversing).toBe(true) -// expect(fx.situation.reversed).toBe(false) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(0) -// -// fx.start().step() -// jasmine.clock().tick(325) -// time = 325 -// -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(2) -// expect(fx.situation.reversing).toBe(true) -// expect(fx.situation.reversed).toBe(false) -// expect(fx.pos).toBeCloseTo((time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// -// jasmine.clock().tick(575) -// time += 575 // time at 900 -// -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation.loop).toBe(1) -// expect(fx.situation.loops).toBe(2) -// expect(fx.situation.reversing).toBe(true) -// expect(fx.situation.reversed).toBe(true) -// expect(fx.pos).toBeCloseTo(1 - (time/dur) % 1) -// expect(fx.absPos).toBeCloseTo(time/dur) -// -// jasmine.clock().tick(200) -// time += 200 // time at 1100 -// -// fx.step() -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(2) -// }) -// -// it('should be applied on the last situation', function() { -// fx.loop(5) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(5) -// expect(fx.situation.reversing).toBe(false) -// -// fx.animate().loop(3, true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.situation.loops).toBe(5) -// expect(fx.situation.reversing).toBe(false) -// -// var c = fx.last() -// expect(c.loop).toBe(0) -// expect(c.loops).toBe(3) -// expect(c.reversing).toBe(true) -// }) -// -// it('should be possible to call it with false as the first argument', function() { -// fx.situation.loops = true -// fx.loop(false) -// expect(fx.situation.loops).toBe(false) -// }) -// }) -// -// -// describe('step()', function() { -// it('should not recalculate the absolute position if the first parameter is true', function() { -// var absPos -// -// // We shift start to help us see if the absolute position get recalculated -// // If it get recalculated, the result would be 0.5 -// fx.situation.start -= 250 -// -// absPos = 0.4 -// fx.absPos = absPos -// expect(fx.step(true).absPos).toBe(absPos) -// -// absPos = 0 -// fx.absPos = absPos -// expect(fx.step(true).absPos).toBe(absPos) -// -// absPos = -3.7 -// fx.absPos = absPos -// expect(fx.step(true).absPos).toBe(absPos) -// -// absPos = 1 -// fx.absPos = absPos -// expect(fx.step(true).absPos).toBe(absPos) -// }) -// -// it('should not allow an absolute position to be above the end', function() { -// var absPos, loops -// -// // With no loops, absolute position should not go above 1 -// absPos = 4.26 -// fx.absPos = absPos -// expect(fx.step(true).absPos).toBe(1) -// expect(fx.situation).toBeNull() -// -// fx.animate() // Recreate an animation since the other one was ended -// -// // With loops, absolute position should not go above loops -// loops = 4 -// absPos = 7.42 -// fx.absPos = absPos -// expect(fx.loop(loops).step(true).absPos).toBe(loops) -// expect(fx.situation).toBeNull() -// }) -// -// describe('when converting an absolute position to a position', function() { -// it('should, when the absolute position is below the maximum number of loops, use the integer part of the absolute position to set the loop counter and use its fractional part to set the position', function(){ -// var absPos, absPosFrac, absPosInt, loops -// -// // Without the reverse flag -// loops = 12 -// absPos = 4.52 -// absPosInt = Math.floor(absPos) -// absPosFrac = absPos - absPosInt -// fx.absPos = absPos -// fx.loop(loops).step(true) -// expect(fx.pos).toBe(absPosFrac) -// expect(fx.situation.loop).toBe(absPosInt) -// -// fx.stop().animate() -// -// loops = true -// absPos = 2.57 -// absPosInt = Math.floor(absPos) -// absPosFrac = absPos - absPosInt -// fx.absPos = absPos -// fx.loop(loops).step(true) -// expect(fx.pos).toBe(absPosFrac) -// expect(fx.situation.loop).toBe(absPosInt) -// -// fx.stop().animate() -// -// // With the reverse flag, the position is reversed at each odd loop -// loops = 412 -// absPos = 6.14 -// absPosInt = Math.floor(absPos) -// absPosFrac = absPos - absPosInt -// fx.absPos = absPos -// fx.loop(loops, true).step(true) -// expect(fx.pos).toBe(absPosFrac) -// expect(fx.situation.loop).toBe(absPosInt) -// expect(fx.situation.reversed).toBe(false) -// -// fx.stop().animate() -// -// loops = true -// absPos = 5.12 -// absPosInt = Math.floor(absPos) -// absPosFrac = absPos - absPosInt -// fx.absPos = absPos -// fx.loop(loops, true).step(true) -// expect(fx.pos).toBe(1-absPosFrac) // Odd loop, so it is reversed -// expect(fx.situation.loop).toBe(absPosInt) -// expect(fx.situation.reversed).toBe(true) -// -// fx.stop().animate() -// -// // When the animation is set to run backward, it is the opposite, the position is reversed at each even loop -// loops = 14 -// absPos = 8.46 -// absPosInt = Math.floor(absPos) -// absPosFrac = absPos - absPosInt -// fx.absPos = absPos -// fx.reverse(true).loop(loops, true).step(true) -// expect(fx.pos).toBe(1-absPosFrac) // Even loop, so it is reversed -// expect(fx.situation.loop).toBe(absPosInt) -// expect(fx.situation.reversed).toBe(true) -// -// fx.stop().animate() -// -// loops = true -// absPos = 3.12 -// absPosInt = Math.floor(absPos) -// absPosFrac = absPos - absPosInt -// fx.absPos = absPos -// fx.reverse(true).loop(loops, true).step(true) -// expect(fx.pos).toBe(absPosFrac) -// expect(fx.situation.loop).toBe(absPosInt) -// expect(fx.situation.reversed).toBe(false) -// }) -// -// it('should, when the absolute position is above or equal to the the maximum number of loops, set the position to its end value and end the animation', function() { -// var absPos, loops -// -// // Without the reverse flag, the end value of position is 1 -// loops = 6 -// absPos = 13.52 -// fx.absPos = absPos -// fx.loop(loops).step(true) -// expect(fx.pos).toBe(1) -// expect(fx.situation).toBeNull() -// -// fx.animate() // Recreate an animation since the other one was ended -// -// loops = false -// absPos = 146.22 -// fx.absPos = absPos -// fx.loop(loops).step(true) -// expect(fx.pos).toBe(1) -// expect(fx.situation).toBeNull() -// -// fx.animate() // Recreate an animation since the other one was ended -// -// // With the reverse flag, the end value of position is 0 when loops is even and 1 when loops is an odd number or false -// loops = 6 -// absPos = 6 -// fx.absPos = absPos -// fx.loop(loops, true).step(true) -// expect(fx.pos).toBe(0) // Even loops -// expect(fx.situation).toBeNull() -// -// fx.animate() // Recreate an animation since the other one was ended -// -// loops = false -// absPos = 4.47 -// fx.absPos = absPos -// fx.loop(loops, true).step(true) -// expect(fx.pos).toBe(1) // 1 since loops is false -// expect(fx.situation).toBeNull() -// -// fx.animate() // Recreate an animation since the other one was ended -// -// // When the animation is set to run backward, it is the opposite, the end value of position is 1 when loops is even and 0 when loops is an odd number or false -// loops = 8 -// absPos = 12.65 -// fx.absPos = absPos -// fx.reverse(true).loop(loops, true).step(true) -// expect(fx.pos).toBe(1) // Even loops -// expect(fx.situation).toBeNull() -// -// fx.animate() // Recreate an animation since the other one was ended -// -// loops = 11 -// absPos = 12.41 -// fx.absPos = absPos -// fx.reverse(true).loop(loops, true).step(true) -// expect(fx.pos).toBe(0) // Odd loops -// expect(fx.situation).toBeNull() -// }) -// -// it('should set the position to its start value when the absolute position is below 0', function() { -// var absPos -// -// // When the animation is not set to run backward the start value is 0 -// absPos = -2.27 -// fx.loop(7) -// fx.situation.loop = 3 -// fx.absPos = absPos -// fx.step(true) -// expect(fx.pos).toBe(0) -// expect(fx.absPos).toBe(absPos) -// expect(fx.situation.loop).toBe(0) -// -// fx.stop().animate() -// -// // When the animation is set to run backward the start value is 1 -// absPos = -4.12 -// fx.absPos = absPos -// fx.reverse(true).step(true) -// expect(fx.pos).toBe(1) -// expect(fx.absPos).toBe(absPos) -// }) -// -// it('should, when looping with the reverse flag, toggle reversed only when the difference between the new value of loop counter and its old value is odd', function() { -// // The new value of the loop counter is the integer part of absPos -// -// fx.loop(9, true) -// expect(fx.situation.loop).toBe(0) -// expect(fx.pos).toBe(0) -// expect(fx.situation.reversed).toBe(false) -// -// fx.absPos = 3 -// fx.step(true) -// expect(fx.situation.reversed).toBe(true) // (3-0) is odd -// -// fx.absPos = 1 -// fx.step(true) -// expect(fx.situation.reversed).toBe(true) // (1-3) is even -// -// fx.absPos = 6 -// fx.step(true) -// expect(fx.situation.reversed).toBe(false) // (6-1) is odd -// -// fx.absPos = 9 -// fx.step(true) -// expect(fx.situation).toBeNull() -// expect(fx.pos).toBe(1) // It should end not reversed, which mean the position is expected to be 1 -// // ((9-1)-6) is even, the -1 is because we do not want reversed to be toggled after the last loop -// }) -// }) -// -// -// it('should not throw an error when stop is called in a during callback', function () { -// fx.move(100,100).start() -// fx.during(function () {this.stop()}) -// expect(fx.step.bind(fx)).not.toThrow() -// }) -// -// it('should not throw an error when finish is called in a during callback', function () { -// fx.move(100,100).start() -// fx.during(function () {this.finish()}) -// expect(fx.step.bind(fx)).not.toThrow() -// }) -// -// it('should not set active to false if the afterAll callback add situations to the situations queue', function () { -// fx.afterAll(function(){this.animate(500).move(0,0)}) -// -// jasmine.clock().tick(500) -// fx.step() -// expect(fx.active).toBe(true) -// expect(fx.situation).not.toBeNull() -// expect(fx.situations.length).toBe(0) -// -// jasmine.clock().tick(500) -// fx.step() -// expect(fx.active).toBe(false) -// expect(fx.situation).toBeNull() -// expect(fx.situations.length).toBe(0) -// }) -// }) -// -// -// it('animates the x/y-attr', function() { -// var called = false -// -// fx.move(200,200).after(function(){ -// -// expect(rect.x()).toBe(200) -// expect(rect.y()).toBe(200) -// called = true -// -// }) -// -// jasmine.clock().tick(250) -// fx.step() -// expect(rect.x()).toBeGreaterThan(100) -// expect(rect.y()).toBeGreaterThan(100) -// -// jasmine.clock().tick(250) -// fx.step() -// expect(called).toBe(true) -// }) -// -// // it('animates matrix', function() { -// // var ctm, called = false -// // -// // fx.transform({a:0.8, b:0.4, c:-0.15, d:0.7, e: 90.3, f: 27.07}).after(function(){ -// // -// // var ctm = rect.ctm() -// // expect(ctm.a).toBeCloseTo(0.8) -// // expect(ctm.b).toBeCloseTo(0.4) -// // expect(ctm.c).toBeCloseTo(-0.15) -// // expect(ctm.d).toBeCloseTo(0.7) -// // expect(ctm.e).toBeCloseTo(90.3) -// // expect(ctm.f).toBeCloseTo(27.07) -// // called = true -// // -// // }) -// // -// // jasmine.clock().tick(250) -// // fx.step() -// // ctm = rect.ctm() -// // expect(ctm.a).toBeLessThan(1) -// // expect(ctm.b).toBeGreaterThan(0) -// // expect(ctm.c).toBeLessThan(0) -// // expect(ctm.d).toBeGreaterThan(0) -// // expect(ctm.e).toBeGreaterThan(0) -// // expect(ctm.f).toBeGreaterThan(0) -// // -// // jasmine.clock().tick(250) -// // fx.step() -// // expect(called).toBe(true) -// // }) -// -// // it('animate a scale transform using the passed center point when there is already a transform in place', function(){ -// // var ctm -// // -// // // When no ceter point is passed to the method scale, it use the center of the element as the center point -// // -// // rect.scale(2) // The transform in place -// // -// // fx.scale(0.5) -// // jasmine.clock().tick(500) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(0.5) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(0.5) -// // expect(ctm.e).toBe(75) -// // expect(ctm.f).toBe(75) -// // }) -// -// // it('animate a flip(x) transform', function() { -// // var ctm -// // -// // fx.transform({flip: 'x'}).start() -// // -// // jasmine.clock().tick(125) // Have the animation be 1/4 of the way (not halfway as usual because of a bug in the node method getCTM on Firefox) -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(0.5) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(1) -// // expect(ctm.e).toBe(75) -// // expect(ctm.f).toBe(0) -// // -// // jasmine.clock().tick(475) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(-1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(1) -// // expect(ctm.e).toBe(300) -// // expect(ctm.f).toBe(0) -// // }) -// -// // it('animate a flip(x) transform with an offset', function() { -// // var ctm -// // -// // fx.transform({flip: 'x', offset: 20}).start() -// // -// // jasmine.clock().tick(125) // Have the animation be 1/4 of the way (not halfway as usual because of a bug in the node method getCTM on Firefox) -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(0.5) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(1) -// // expect(ctm.e).toBe(10) -// // expect(ctm.f).toBe(0) -// // -// // jasmine.clock().tick(475) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(-1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(1) -// // expect(ctm.e).toBe(40) -// // expect(ctm.f).toBe(0) -// // }) -// -// // it('animate a flip(y) transform', function() { -// // var ctm -// // -// // fx.transform({flip: 'y'}).start() -// // -// // jasmine.clock().tick(125) // Have the animation be 1/4 of the way (not halfway as usual because of a bug in the node method getCTM on Firefox) -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(0.5) -// // expect(ctm.e).toBe(0) -// // expect(ctm.f).toBe(75) -// // -// // jasmine.clock().tick(475) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(-1) -// // expect(ctm.e).toBe(0) -// // expect(ctm.f).toBe(300) -// // }) -// -// // it('animate a flip(y) transform with an offset', function() { -// // var ctm -// // -// // fx.transform({flip: 'y', offset: 20}).start() -// // -// // jasmine.clock().tick(125) // Have the animation be 1/4 of the way (not halfway as usual because of a bug in the node method getCTM on Firefox) -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(0.5) -// // expect(ctm.e).toBe(0) -// // expect(ctm.f).toBe(10) -// // -// // jasmine.clock().tick(475) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(-1) -// // expect(ctm.e).toBe(0) -// // expect(ctm.f).toBe(40) -// // }) -// -// // it('animate a flip() transform', function() { -// // var ctm -// // -// // fx.transform({flip: 'both'}).start() -// // -// // jasmine.clock().tick(125) // Have the animation be 1/4 of the way (not halfway as usual because of a bug in the node method getCTM on Firefox) -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(0.5) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(0.5) -// // expect(ctm.e).toBe(75) -// // expect(ctm.f).toBe(75) -// // -// // jasmine.clock().tick(475) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(-1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(-1) -// // expect(ctm.e).toBe(300) -// // expect(ctm.f).toBe(300) -// // }) -// -// // it('animate a flip() transform with an offset', function() { -// // var ctm -// // -// // fx.transform({flip: 'both', offset: 20}).start() -// // -// // jasmine.clock().tick(125) // Have the animation be 1/4 of the way (not halfway as usual because of a bug in the node method getCTM on Firefox) -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(0.5) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(0.5) -// // expect(ctm.e).toBe(10) -// // expect(ctm.f).toBe(10) -// // -// // jasmine.clock().tick(475) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(-1) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(-1) -// // expect(ctm.e).toBe(40) -// // expect(ctm.f).toBe(40) -// // }) -// -// // it('animate relative matrix transform', function(){ -// // var ctm -// // -// // fx.transform(new SVG.Matrix().scale(2,0,0), true) -// // -// // jasmine.clock().tick(250) // Have the animation be half way -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(1.5) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(1.5) -// // expect(ctm.e).toBe(0) -// // expect(ctm.f).toBe(0) -// // -// // jasmine.clock().tick(250) // Have the animation reach its end -// // fx.step() -// // -// // ctm = rect.ctm() -// // expect(ctm.a).toBe(2) -// // expect(ctm.b).toBe(0) -// // expect(ctm.c).toBe(0) -// // expect(ctm.d).toBe(2) -// // expect(ctm.e).toBe(0) -// // expect(ctm.f).toBe(0) -// // }) -// -// describe('when animating plots', function() { -// it('should allow plot animations to be chained', function() { -// var pathString1 = 'M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80' -// , pathString2 = 'M10 80 C 40 150, 65 150, 95 80 S 150 10, 180 80' -// , path = draw.path(pathString1) -// , morph -// -// fx = path.animate(1000).plot(pathString2).animate(1000).plot(pathString1) -// morph = new SVG.PathArray(pathString1).morph(pathString2) -// -// fx.start() -// expect(path.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(500) // Have the first animation be half way -// fx.step() -// expect(path.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(500) // Have the first animation reach its end -// fx.step() -// expect(path.array()).toEqual(morph.at(1)) -// morph = new SVG.PathArray(pathString2).morph(pathString1) -// expect(path.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(500) // Have the second animation be half way -// fx.step() -// expect(path.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(500) // Have the second animation reach its end -// fx.step() -// expect(path.array()).toEqual(morph.at(1)) -// }) -// -// it('should allow plot to be called on a polyline', function() { -// var startValue = [[0,0], [100,50], [50,100], [150,50], [200,50]] -// , endValue = [[0,0], [100,50], [50,100], [150,50], [200,50], [250,100], [300,50], [350,50]] -// , morph = new SVG.PointArray(startValue).morph(endValue) -// , polyline = draw.polyline(startValue) -// -// fx = polyline.animate(3000).plot(endValue) -// -// fx.start() -// expect(polyline.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(1500) // Have the animation be half way -// fx.step() -// expect(polyline.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(1500) // Have the animation reach its end -// fx.step() -// expect(polyline.array()).toEqual(morph.at(1)) -// }) -// -// it('should allow plot to be called on a polygon', function() { -// var startValue = [[0,0], [100,50], [50,100], [150,50], [200,50]] -// , endValue = [[0,0], [100,50], [50,100], [150,50], [200,50], [250,100], [300,50], [350,50]] -// , morph = new SVG.PointArray(startValue).morph(endValue) -// , polygon = draw.polygon(startValue) -// -// fx = polygon.animate(3000).plot(endValue) -// -// fx.start() -// expect(polygon.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(1500) // Have the animation be half way -// fx.step() -// expect(polygon.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(1500) // Have the animation reach its end -// fx.step() -// expect(polygon.array()).toEqual(morph.at(1)) -// }) -// -// it('should allow plot to be called on a path', function() { -// var startValue = new SVG.PathArray('M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80') -// , endValue = new SVG.PathArray('M10 80 C 40 150, 65 150, 95 80 S 150 10, 180 80') -// , morph = new SVG.PathArray(startValue).morph(endValue) -// , path = draw.path(startValue) -// -// fx = path.animate(2000).plot(endValue) -// -// fx.start() -// expect(path.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(1000) // Have the animation be half way -// fx.step() -// expect(path.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(1000) // Have the animation reach its end -// fx.step() -// expect(path.array()).toEqual(morph.at(1)) -// }) -// -// it('should allow plot to be called on a textpath', function() { -// var startValue = new SVG.PathArray('M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80') -// , endValue = new SVG.PathArray('M10 80 C 40 150, 65 150, 95 80 S 150 10, 180 80') -// , morph = new SVG.PathArray(startValue).morph(endValue) -// , textPath -// -// var text = draw.text(function(add) { -// add.tspan("We go up and down, then we go down, then up again") -// }) -// -// textPath = text.path(startValue) -// fx = textPath.animate(500).plot(endValue) -// -// fx.start() -// expect(textPath.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(250) // Have the animation be half way -// fx.step() -// expect(textPath.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(250) // Have the animation reach its end -// fx.step() -// expect(textPath.array()).toEqual(morph.at(1)) -// }) -// -// it('should allow plot to be called on a line', function() { -// var startValue = '0,0 100,150' -// , endValue = [[50,30], [120,250]] -// , morph = new SVG.PointArray(startValue).morph(endValue) -// , line = draw.line(startValue) -// -// fx = line.animate(3000).plot(endValue) -// -// fx.start() -// expect(line.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(1500) // Have the animation be half way -// fx.step() -// expect(line.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(1500) // Have the animation reach its end -// fx.step() -// expect(line.array()).toEqual(morph.at(1)) -// }) -// -// it('should allow plot to be called with 4 parameters on a line', function () { -// var startPointArray = new SVG.PointArray('0,0 100,150') -// , endPointArray = new SVG.PointArray([[50,30], [120,250]]) -// , morph = new SVG.PointArray(startPointArray).morph(endPointArray) -// , a -// -// a = startPointArray.value -// var line = draw.line(a[0][0], a[0][1], a[1][0], a[1][1]) -// -// a = endPointArray.value -// fx = line.animate(3000).plot(a[0][0], a[0][1], a[1][0], a[1][1]) -// -// fx.start() -// expect(line.array()).toEqual(morph.at(0)) -// -// jasmine.clock().tick(1500) // Have the animation be half way -// fx.step() -// expect(line.array()).toEqual(morph.at(0.5)) -// -// jasmine.clock().tick(1500) // Have the animation reach its end -// fx.step() -// expect(line.array()).toEqual(morph.at(1)) -// }) -// }) -// -// -// describe('when animating attributes', function() { -// it('should be possible to animate numeric attributes', function () { -// var startValue = 0 -// , endValue = 150 -// , morph = new SVG.Number(startValue).morph(endValue) -// -// var text = draw.text(function(add) { -// add.tspan('We go ') -// add.tspan('up').fill('#f09').dy(-40) -// add.tspan(', then we go down, then up again').dy(40) -// }) -// -// var path = 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100' -// -// var textPath = text.path(path).font({ size: 42.5, family: 'Verdana' }) -// -// -// textPath.attr('startOffset', startValue) -// fx = textPath.animate(1000).attr('startOffset', endValue) -// -// fx.start() -// expect(textPath.attr('startOffset')).toBe(morph.at(0).value) -// -// jasmine.clock().tick(500) // Have the animation be half way -// fx.step() -// expect(textPath.attr('startOffset')).toBe(morph.at(0.5).value) -// -// jasmine.clock().tick(500) // Have the animation reach its end -// fx.step() -// expect(textPath.attr('startOffset')).toBe(morph.at(1).value) -// }) -// -// it('should be possible to animate non-numeric attributes', function () { -// var startValue = 'butt' -// , endValue = 'round' -// , line = draw.line('0,0 100,150').attr('stroke-linecap', startValue) -// -// fx = line.animate(3000).attr('stroke-linecap', endValue) -// -// fx.start() -// expect(line.attr('stroke-linecap')).toBe(startValue) -// -// jasmine.clock().tick(1500) // Have the animation be half way -// fx.step() -// expect(line.attr('stroke-linecap')).toBe(startValue) -// -// jasmine.clock().tick(1500) // Have the animation reach its end -// fx.step() -// expect(line.attr('stroke-linecap')).toBe(endValue) -// }) -// -// it('should be possible to animate color attributes by using SVG.Color', function() { -// var startValue = 'rgb(42,251,100)' -// , endValue = 'rgb(10,80,175)' -// , morph = new SVG.Color(startValue).morph(endValue) -// -// rect.attr('fill', startValue) -// fx.attr('fill', endValue) -// -// fx.start() -// expect(rect.attr('fill')).toBe(morph.at(0).toString()) -// -// jasmine.clock().tick(250) // Have the animation be half way -// fx.step() -// expect(rect.attr('fill')).toBe(morph.at(0.5).toString()) -// -// jasmine.clock().tick(250) // Have the animation reach its end -// fx.step() -// expect(rect.attr('fill')).toBe(morph.at(1).toString()) -// }) -// -// it('should be possible to pass percentage strings to numeric attributes', function () { -// var startValue = '0%' -// , endValue = '80%' -// , morph = new SVG.Number(startValue).morph(endValue) -// -// var text = draw.text(function(add) { -// add.tspan('We go ') -// add.tspan('up').fill('#f09').dy(-40) -// add.tspan(', then we go down, then up again').dy(40) -// }) -// -// var path = 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100' -// -// var textPath = text.path(path).font({ size: 42.5, family: 'Verdana' }) -// -// textPath.attr('startOffset', startValue) -// fx = textPath.animate(1000).attr('startOffset', endValue) -// -// fx.start() -// expect(textPath.attr('startOffset')).toBe(morph.at(0).toString()) -// -// jasmine.clock().tick(500) // Have the animation be half way -// fx.step() -// expect(textPath.attr('startOffset')).toBe(morph.at(0.5).toString()) -// -// jasmine.clock().tick(500) // Have the animation reach its end -// fx.step() -// expect(textPath.attr('startOffset')).toBe(morph.at(1).toString()) -// }) -// -// it('should allow 0 to be specified without unit', function () { -// // This code snippet come from issue #552 -// -// var gradient = draw.gradient('linear', function(add) { -// s1 = add.stop(0, '#33235b') -// s2 = add.stop(0.5, '#E97639') -// s3 = add.stop(1, '#33235b') -// }) -// -// var r1, r2; -// var fill = draw.pattern('300%', '100%', function(add) { -// r1 = add.rect('150%', '100%').fill(gradient) -// r2 = add.rect('150%', '100%').fill(gradient) -// }); -// fill.attr({patternUnits: 'userSpaceOnUse'}) -// -// r1.attr('x', 0).animate('0.5s').attr('x', '150%') -// r2.attr('x', '-150%').animate('0.5s').attr('x', 0) -// -// var text = draw.text('Manifesto').move('50%', '50%').fill(fill) -// text.font({ -// size: 70 -// , anchor: 'middle' -// , leading: 1 -// }) -// -// r1.fx.start() -// r2.fx.start() -// -// jasmine.clock().tick(250) // Have the animation be half way -// r1.fx.step() -// r2.fx.step() -// expect(r1.attr('x')).toBe('75%') -// expect(r2.attr('x')).toBe('-75%') -// -// jasmine.clock().tick(250) // Have the animation reach its end -// r1.fx.step() -// r2.fx.step() -// expect(r1.attr('x')).toBe('150%') -// expect(r2.attr('x')).toBe('0%') -// }) -// }) -// -// -// describe('when animating styles', function() { -// it('should be possible to animate numeric styles', function () { -// var startValue = 0 -// , endValue = 5 -// , morph = new SVG.Number(startValue).morph(endValue) -// -// rect.css('stroke-width', startValue) -// fx.css('stroke-width', endValue) -// -// fx.start() -// expect(rect.css('stroke-width')).toBe(morph.at(0).toString()) -// -// jasmine.clock().tick(250) // Have the animation be half way -// fx.step() -// expect(rect.css('stroke-width')).toBe(morph.at(0.5).toString()) -// -// jasmine.clock().tick(250) // Have the animation reach its end -// fx.step() -// expect(rect.css('stroke-width')).toBe(morph.at(1).toString()) -// }) -// -// it('should be possible to animate non-numeric styles', function () { -// var startValue = 'butt' -// , endValue = 'round' -// , line = draw.line('0,0 100,150').css('stroke-linecap', startValue) -// -// fx = line.animate(3000).css('stroke-linecap', endValue) -// -// fx.start() -// expect(line.css('stroke-linecap')).toBe(startValue) -// -// jasmine.clock().tick(1500) // Have the animation be half way -// fx.step() -// expect(line.css('stroke-linecap')).toBe(startValue) -// -// jasmine.clock().tick(1500) // Have the animation reach its end -// fx.step() -// expect(line.css('stroke-linecap')).toBe(endValue) -// }) -// -// it('should be possible to animate color styles by using SVG.Color', function() { -// var startValue = '#81DE01' -// , endValue = '#B1835D' -// , morph = new SVG.Color(startValue).morph(endValue) -// -// rect.css('fill', startValue) -// fx.css('fill', endValue) -// -// -// fx.start() -// // When setting a style color, it get saved as a rgb() string even if it was passed as an hex code -// // The style rgb string has spaces while the one returned by SVG.Color do not as show bellow -// // CSS: rgb(255, 255, 255) SVG.Color: rgb(255,255,255) -// // The space in the style rbg string are removed so they can be equal -// expect(rect.css('fill').replace(/\s+/g, '')).toBe(morph.at(0).toRgb()) -// -// jasmine.clock().tick(250) // Have the animation be half way -// fx.step() -// expect(rect.css('fill').replace(/ /g, '')).toBe(morph.at(0.5).toRgb()) -// -// jasmine.clock().tick(250) // Have the animation reach its end -// fx.step() -// expect(rect.css('fill').replace(/ /g, '')).toBe(morph.at(1).toRgb()) -// }) -// -// it('should be possible to pass percentage strings to numeric styles', function () { -// var startValue = '0%' -// , endValue = '5%' -// , morph = new SVG.Number(startValue).morph(endValue) -// -// rect.css('stroke-width', startValue) -// fx.css('stroke-width', endValue) -// -// fx.start() -// expect(rect.css('stroke-width')).toBe(morph.at(0).toString()) -// -// jasmine.clock().tick(250) // Have the animation be half way -// fx.step() -// expect(rect.css('stroke-width')).toBe(morph.at(0.5).toString()) -// -// jasmine.clock().tick(250) // Have the animation reach its end -// fx.step() -// expect(rect.css('stroke-width')).toBe(morph.at(1).toString()) -// }) -// -// it('should allow 0 to be specified without a unit', function () { -// var r1 = draw.rect(100,100).move(200,200) -// , r2 = draw.rect(100,100).move(400,400) -// -// r1.css('stroke-width', '100%').animate(500).css('stroke-width', 0) -// r2.css('stroke-width', 0).animate(500).css('stroke-width', '100%') -// -// r1.fx.start() -// r2.fx.start() -// expect(r1.css('stroke-width')).toBe('100%') -// expect(r2.css('stroke-width')).toBe('0%') -// -// jasmine.clock().tick(250) // Have the animation be half way -// r1.fx.step() -// r2.fx.step() -// expect(r1.css('stroke-width')).toBe('50%') -// expect(r2.css('stroke-width')).toBe('50%') -// -// jasmine.clock().tick(250) // Have the animation reach its end -// r1.fx.step() -// r2.fx.step() -// expect(r1.css('stroke-width')).toBe('0%') -// expect(r2.css('stroke-width')).toBe('100%') -// }) -// }) -// -// -// describe('add()', function() { -// it('adds to animations obj by default', function() { -// fx.add('x', new SVG.Number(20)) -// expect(fx.situation.animations.x.value).toBe(20) -// }) -// -// it('adds to specified obj', function() { -// fx.add('x', new SVG.Number(20), 'animations') -// fx.add('x', new SVG.Number(20), 'attrs') -// fx.add('x', new SVG.Number(20), 'styles') -// expect(fx.situation.animations.x.value).toBe(20) -// expect(fx.situation.attrs.x.value).toBe(20) -// expect(fx.situation.styles.x.value).toBe(20) -// }) -// }) -// -// describe('attr()', function() { -// it('should allow an object to be passed', function() { -// spyOn(fx, 'attr').and.callThrough() -// fx.attr({ -// x: 20, -// y: 20 -// }) -// -// expect(fx.attr).toHaveBeenCalledWith('x', 20) -// expect(fx.attr).toHaveBeenCalledWith('y', 20) -// }) -// -// it('should call add() with attrs as method', function() { -// spyOn(fx, 'add') -// fx.attr('x', 20) -// expect(fx.add).toHaveBeenCalledWith('x', 20, 'attrs') -// }) -// }) -// -// describe('css()', function() { -// it('should allow an object to be passed', function() { -// spyOn(fx, 'css').and.callThrough() -// fx.css({ -// x: 20, -// y: 20 -// }) -// -// expect(fx.css).toHaveBeenCalledWith('x', 20) -// expect(fx.css).toHaveBeenCalledWith('y', 20) -// }) -// -// it('should call add() with styles as method', function() { -// spyOn(fx, 'add') -// fx.css('x', 20) -// expect(fx.add).toHaveBeenCalledWith('x', 20, 'styles') -// }) -// }) -// -// describe('x() / y()', function() { -// it('should add an entry to the animations obj', function() { -// spyOn(fx, 'add') -// fx.x(20) -// fx.y(20) -// -// expect(fx.add).toHaveBeenCalledWith('x', jasmine.objectContaining({value:20})) -// expect(fx.add).toHaveBeenCalledWith('y', jasmine.objectContaining({value:20})) -// }) -// -// it('allows relative move with relative flag set', function() { -// spyOn(fx, 'add') -// fx.x(20, true) -// fx.y(20, true) -// -// expect(fx.add).toHaveBeenCalledWith('x', jasmine.objectContaining({value:20, relative:true })) -// expect(fx.add).toHaveBeenCalledWith('y', jasmine.objectContaining({value:20, relative:true })) -// }) -// -// it('redirects to transform when target is a group', function() { -// var group = draw.group() -// , fx = group.animate(500) -// -// spyOn(fx, 'transform') -// -// fx.x(20) -// fx.y(20) -// -// expect(fx.transform).toHaveBeenCalledWith({x: 20}, undefined) -// expect(fx.transform).toHaveBeenCalledWith({y: 20}, undefined) -// }) -// -// it('redirects to transform when target is a group with relative flag set', function() { -// var group = draw.group() -// , fx = group.animate(500) -// -// spyOn(fx, 'transform') -// -// fx.x(20, true) -// fx.y(20, true) -// -// expect(fx.transform).toHaveBeenCalledWith({x: 20}, true) -// expect(fx.transform).toHaveBeenCalledWith({y: 20}, true) -// }) -// }) -// -// describe('cx() / cy()', function() { -// it('should call add with method and argument', function() { -// spyOn(fx, 'add') -// fx.cx(20) -// fx.cy(20) -// -// expect(fx.add).toHaveBeenCalledWith('cx', jasmine.objectContaining({value:20})) -// expect(fx.add).toHaveBeenCalledWith('cy', jasmine.objectContaining({value:20})) -// }) -// }) -// -// describe('move()', function() { -// it('should redirect call to x() and y()', function() { -// spyOn(fx, 'x').and.callThrough() -// spyOn(fx, 'y').and.callThrough() -// fx.move(20, 20) -// -// expect(fx.x).toHaveBeenCalledWith(20) -// expect(fx.y).toHaveBeenCalledWith(20) -// }) -// }) -// -// describe('center()', function() { -// it('should redirect call to cx() and cy()', function() { -// spyOn(fx, 'cx').and.callThrough() -// spyOn(fx, 'cy').and.callThrough() -// fx.center(20, 20) -// -// expect(fx.cx).toHaveBeenCalledWith(20) -// expect(fx.cy).toHaveBeenCalledWith(20) -// }) -// }) -// -// describe('size()', function() { -// it('should set font-size with attr() when called on a text', function() { -// var text = draw.text('Hello World') -// , fx = text.animate(500) -// -// spyOn(fx, 'attr') -// fx.size(20) -// expect(fx.attr).toHaveBeenCalledWith('font-size', 20) -// }) -// -// it('should set width and height with add()', function() { -// spyOn(fx, 'add').and.callThrough() -// fx.size(20, 20) -// -// expect(fx.add).toHaveBeenCalledWith('width', jasmine.objectContaining({value:20})) -// expect(fx.add).toHaveBeenCalledWith('height', jasmine.objectContaining({value:20})) -// }) -// -// it('should calculate proportional size when only height or width is given', function() { -// spyOn(fx, 'add').and.callThrough() -// fx.size(40, null) -// fx.size(null, 60) -// -// expect(fx.add).toHaveBeenCalledWith('width', jasmine.objectContaining({value:40})) -// expect(fx.add).toHaveBeenCalledWith('height', jasmine.objectContaining({value:40})) -// -// expect(fx.add).toHaveBeenCalledWith('width', jasmine.objectContaining({value:60})) -// expect(fx.add).toHaveBeenCalledWith('height', jasmine.objectContaining({value:60})) -// }) -// }) -// -// describe('width()', function() { -// it('should set width with add()', function() { -// spyOn(fx, 'add').and.callThrough() -// fx.width(20) -// expect(fx.add).toHaveBeenCalledWith('width', jasmine.objectContaining({value:20})) -// }) -// -// it('should animate the width attribute', function() { -// fx.width(200) -// expect(rect.width()).toBe(100) -// -// jasmine.clock().tick(250) -// fx.step() -// expect(rect.width()).toBe(150) -// -// jasmine.clock().tick(250) -// fx.step() -// expect(rect.width()).toBe(200) -// }) -// }) -// -// describe('height()', function() { -// it('should set height with add()', function() { -// spyOn(fx, 'add').and.callThrough() -// fx.height(20) -// expect(fx.add).toHaveBeenCalledWith('height', jasmine.objectContaining({value:20})) -// }) -// -// it('should animate the height attribute', function() { -// fx.height(200) -// expect(rect.height()).toBe(100) -// -// jasmine.clock().tick(250) -// fx.step() -// expect(rect.height()).toBe(150) -// -// jasmine.clock().tick(250) -// fx.step() -// expect(rect.height()).toBe(200) -// }) -// }) -// -// describe('plot()', function() { -// it('should call add with plot as method', function() { -// var polyline = draw.polyline('10 10 20 20 30 10 50 20') -// , fx = polyline.animate(500) -// -// spyOn(fx, 'add') -// fx.plot('5 5 30 29 40 19 12 30') -// expect(fx.add).toHaveBeenCalledWith('plot', new SVG.PointArray('5 5 30 29 40 19 12 30')) -// }) -// -// it('also accept parameter list', function() { -// var line = draw.line('10 10 20 20') -// , fx = line.animate(500) -// -// spyOn(fx, 'add') -// fx.plot(5, 5, 10, 10) -// expect(fx.add).toHaveBeenCalledWith('plot', new SVG.PointArray([5, 5, 10, 10])) -// }) -// }) -// -// describe('leading()', function() { -// it('should call add with method and argument', function() { -// var text = draw.text('Hello World') -// , fx = text.animate(500) -// spyOn(fx, 'add') -// fx.leading(3) -// -// expect(fx.add).toHaveBeenCalledWith('leading', jasmine.objectContaining({value:3})) -// }) -// -// it('does nothiing when not called on text', function() { -// spyOn(fx, 'add') -// fx.leading(3) -// expect(fx.add).not.toHaveBeenCalled() -// }) -// }) -// -// describe('viewbox()', function() { -// it('should call add with method and argument', function() { -// var nested = draw.nested() -// , fx = nested.animate(500) -// spyOn(fx, 'add') -// fx.viewbox(1,2,3,4) -// -// expect(fx.add).toHaveBeenCalledWith('viewbox', jasmine.objectContaining({x:1, y:2, width:3, height:4})) -// }) -// -// it('does nothing when not called on SVG.Container', function() { -// spyOn(fx, 'add') -// fx.viewbox(1,2,3,4) -// expect(fx.add).not.toHaveBeenCalled() -// }) -// }) -// -// describe('update()', function() { -// it('should convert call with 3 arguments to call with obj', function() { -// var stop = new SVG.Stop() -// , fx = stop.animate() -// spyOn(fx, 'update').and.callThrough() -// fx.update(1,'#ccc',0.5) -// -// expect(fx.update).toHaveBeenCalledWith({offset: 1, color: '#ccc', opacity: 0.5}) -// }) -// -// it('calls add with method argument and attrs as type', function() { -// var stop = new SVG.Stop() -// , fx = stop.animate() -// spyOn(fx, 'add') -// fx.update({offset: 1, color: '#ccc', opacity: 0.5}) -// -// expect(fx.add).toHaveBeenCalledWith('stop-opacity', 0.5, 'attrs') -// expect(fx.add).toHaveBeenCalledWith('stop-color', '#ccc', 'attrs') -// expect(fx.add).toHaveBeenCalledWith('offset', 1, 'attrs') -// }) -// -// it('does nothing when not called on SVG.Stop', function() { -// spyOn(fx, 'add') -// fx.update({offset: 1, color: '#ccc', opacity: 0.5}) -// expect(fx.add).not.toHaveBeenCalled() -// }) -// }) -// -// // describe('transform()', function() { -// // it('returns itself when no valid transformation was found', function() { -// // expect(fx.transform({})).toBe(fx) -// // }) -// // it('gets the current transforms', function() { -// // expect(fx.transform()).toEqual(new SVG.Matrix(rect).extract()) -// // }) -// // it('gets a certain transformation if used with an argument', function() { -// // expect(fx.transform('x')).toEqual(0) -// // }) -// // it('adds an entry to transforms when matrix given', function() { -// // var matrix = new SVG.Matrix(1,2,3,4,5,6) -// // fx.transform(matrix) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(matrix)) -// // }) -// // it('sets relative flag when given', function() { -// // var matrix = new SVG.Matrix(1,2,3,4,5,6) -// // fx.transform(matrix, true) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(matrix)) -// // expect(fx.situation.transforms[0].relative).toBe(true) -// // }) -// // it('adds an entry to transforms when rotation given', function() { -// // fx.transform({rotation: 30, cx:0, cy:0}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Rotate(30, 0, 0))) -// // }) -// // it('adds an entry to transforms when scale given', function() { -// // fx.transform({scale: 2, cx:0, cy:0}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Scale(2, 2, 0, 0))) -// // }) -// // it('adds an entry to transforms when scaleX given', function() { -// // fx.transform({scaleX: 2, cx:0, cy:0}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Scale(2, 1, 0, 0))) -// // }) -// // it('adds an entry to transforms when scaleY given', function() { -// // fx.transform({scaleY: 2, cx:0, cy:0}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Scale(1, 2, 0, 0))) -// // }) -// // it('adds an entry to transforms when skewX given', function() { -// // fx.transform({skewX: 2, cx:0, cy:0}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Skew(2, 0, 0, 0))) -// // }) -// // it('adds an entry to transforms when skewY given', function() { -// // fx.transform({skewY: 2, cx:0, cy:0}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Skew(0, 2, 0, 0))) -// // }) -// // it('adds an entry to transforms when flip x given', function() { -// // fx.transform({flip: 'x'}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining((new SVG.Matrix()).flip('x', 150))) -// // }) -// // it('adds an entry to transforms when flip x with offset given', function() { -// // fx.transform({flip: 'x', offset: 100}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining((new SVG.Matrix()).flip('x', 100))) -// // }) -// // it('adds an entry to transforms when flip y given', function() { -// // fx.transform({flip: 'y'}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining((new SVG.Matrix()).flip('y', 150))) -// // }) -// // it('adds an entry to transforms when x given', function() { -// // fx.transform({x:20}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Translate(20, undefined))) -// // }) -// // it('adds an entry to transforms when y given', function() { -// // fx.transform({y:20}) -// // expect(fx.situation.transforms[0]).toEqual(jasmine.objectContaining(new SVG.Translate(undefined, 20))) -// // }) -// // }) -// -// /* shortcuts for animation */ -// describe('animate()', function() { -// it('creates a new fx instance on the element', function() { -// var rect = draw.rect(100,100) -// rect.animate(100) -// expect(rect.fx instanceof SVG.FX).toBeTruthy() -// }) -// -// it('redirects the call to fx.animate()', function() { -// spyOn(fx, 'animate') -// rect.animate() -// expect(fx.animate).toHaveBeenCalled() -// }) -// }) -// -// describe('delay()', function() { -// it('creates a new fx instance on the element', function() { -// var rect = draw.rect(100,100) -// rect.delay(100) -// expect(rect.fx instanceof SVG.FX).toBeTruthy() -// }) -// -// it('redirects the call to fx.delay()', function() { -// spyOn(fx, 'delay') -// rect.delay(5) -// expect(fx.delay).toHaveBeenCalled() -// }) -// }) -// -// describe('stop()', function() { -// it('redirects the call to fx.stop()', function() { -// spyOn(fx, 'stop') -// rect.stop() -// expect(fx.stop).toHaveBeenCalled() -// }) -// }) -// -// describe('finish()', function() { -// it('redirects the call to fx.finish()', function() { -// spyOn(fx, 'finish') -// rect.finish() -// expect(fx.finish).toHaveBeenCalled() -// }) -// }) -// -// describe('pause()', function() { -// it('redirects the call to fx.pause()', function() { -// spyOn(fx, 'pause') -// rect.pause() -// expect(fx.pause).toHaveBeenCalled() -// }) -// }) -// -// describe('play()', function() { -// it('redirects the call to fx.play()', function() { -// spyOn(fx, 'play') -// rect.play() -// expect(fx.play).toHaveBeenCalled() -// }) -// }) -// -// describe('speed()', function() { -// it('redirects the call to fx.speed() as getter', function() { -// spyOn(fx, 'speed') -// rect.speed() -// expect(fx.speed).toHaveBeenCalled() -// }) -// -// it('redirects the call to fx.speed() as setter', function() { -// spyOn(fx, 'speed').and.callThrough() -// expect(rect.speed(5)).toBe(rect) -// expect(fx.speed).toHaveBeenCalled() -// }) -// }) -// }) -// -// describe('SVG.MorphObj', function() { -// it('accepts color strings and converts them to SVG.Color', function() { -// var obj = new SVG.MorphObj('#000', '#fff') -// expect(obj instanceof SVG.Color).toBeTruthy() -// -// obj = new SVG.MorphObj('rgb(0,0,0)', 'rgb(255,255,255)') -// expect(obj instanceof SVG.Color).toBeTruthy() -// }) -// -// it('accepts numbers and converts them to SVG.Number', function() { -// var obj = new SVG.MorphObj('0', '10') -// expect(obj instanceof SVG.Number).toBeTruthy() -// -// var obj = new SVG.MorphObj(0, 10) -// expect(obj instanceof SVG.Number).toBeTruthy() -// }) -// -// it('accepts any other values', function() { -// var obj = new SVG.MorphObj('Hello', 'World') -// -// expect(obj.value).toBe('Hello') -// expect(obj.destination).toBe('World') -// }) -// -// it('morphes unmorphable objects with plain morphing', function() { -// var obj = new SVG.MorphObj('Hello', 'World') -// -// expect(obj.at(0,0)).toBe('Hello') -// expect(obj.at(0.5,0.5)).toBe('Hello') -// expect(obj.at(1,1)).toBe('World') -// }) -// -// it('converts to its value when casted', function() { -// var obj = new SVG.MorphObj('Hello', 'World') -// expect(obj.valueOf()).toBe('Hello') -// expect(obj + 'World').toBe('HelloWorld') -// }) -// }) diff --git a/spec/spec/gradient.js b/spec/spec/gradient.js deleted file mode 100644 index 7280a98..0000000 --- a/spec/spec/gradient.js +++ /dev/null @@ -1,151 +0,0 @@ -describe('Gradient', function () { - var rect, gradient - - beforeEach(function () { - rect = draw.rect(100, 100) - gradient = draw.gradient('linear', function (add) { - add.stop({ offset: 0, color: '#333', opacity: 1 }) - add.stop({ offset: 1, color: '#fff', opacity: 1 }) - }) - radial = draw.gradient('radial', function (add) { - add.stop({ offset: 0, color: '#333', opacity: 1 }) - add.stop({ offset: 1, color: '#fff', opacity: 1 }) - }) - }) - - afterEach(function () { - rect.remove() - gradient.remove() - }) - - it('is an instance of SVG.Gradient', function () { - expect(gradient instanceof SVG.Gradient).toBe(true) - }) - - it('allows creation of a new gradient without block', function () { - gradient = draw.gradient('linear') - expect(gradient.children().length).toBe(0) - }) - - describe('url()', function () { - it('returns the id of the gradient wrapped in url()', function () { - expect(gradient.url()).toBe('url("#' + gradient.id() + '")') - }) - }) - - describe('from()', function () { - it('sets fx and fy attribute for radial gradients', function () { - radial.from(7, 10) - expect(radial.attr('fx')).toBe(7) - expect(radial.attr('fy')).toBe(10) - }) - it('sets x1 and y1 attribute for linear gradients', function () { - gradient.from(7, 10) - expect(gradient.attr('x1')).toBe(7) - expect(gradient.attr('y1')).toBe(10) - }) - }) - - describe('to()', function () { - it('sets cx and cy attribute for radial gradients', function () { - radial.to(75, 105) - expect(radial.attr('cx')).toBe(75) - expect(radial.attr('cy')).toBe(105) - }) - it('sets x2 and y2 attribute for linear gradients', function () { - gradient.to(75, 105) - expect(gradient.attr('x2')).toBe(75) - expect(gradient.attr('y2')).toBe(105) - }) - }) - - describe('attr()', function () { - it('will catch transform attribues and convert them to gradientTransform', function () { - expect(gradient.translate(100, 100).attr('gradientTransform')).toBe('matrix(1,0,0,1,100,100)') - }) - }) - - describe('toString()', function () { - it('returns the id of the gradient wrapped in url()', function () { - expect(gradient + '').toBe('url("#' + gradient.id() + '")') - }) - it('is called when instance is passed as an attribute value', function () { - rect.attr('fill', gradient) - expect(rect.attr('fill')).toBe('url("#' + gradient.id() + '")') - }) - }) - - describe('input values', function () { - var s1, s2 - - it('accepts floats', function () { - gradient = draw.gradient('linear', function (add) { - s1 = add.stop({ offset: 0.12, color: '#333', opacity: 1 }) - s2 = add.stop({ offset: 0.93, color: '#fff', opacity: 1 }) - }) - expect(s1.attr('offset')).toBe(0.12) - expect(s2.attr('offset')).toBe(0.93) - }) - it('accepts string floats', function () { - gradient = draw.gradient('linear', function (add) { - s1 = add.stop({ offset: '0.13', color: '#333', opacity: 1 }) - s2 = add.stop({ offset: '0.92', color: '#fff', opacity: 1 }) - }) - expect(s1.attr('offset')).toBe(0.13) - expect(s2.attr('offset')).toBe(0.92) - }) - it('accept percentages', function () { - gradient = draw.gradient('linear', function (add) { - s1 = add.stop({ offset: '14%', color: '#333', opacity: 1 }) - s2 = add.stop({ offset: '91%', color: '#fff', opacity: 1 }) - }) - expect(s1.attr('offset')).toBe('14%') - expect(s2.attr('offset')).toBe('91%') - }) - }) - - describe('update()', function () { - - it('removes all existing children first', function () { - gradient = draw.gradient('linear', function (add) { - s1 = add.stop({ offset: 0.12, color: '#333', opacity: 1 }) - s2 = add.stop({ offset: 0.93, color: '#fff', opacity: 1 }) - }) - expect(gradient.children().length).toBe(2) - gradient.update(function (add) { - s1 = add.stop({ offset: 0.33, color: '#666', opacity: 1 }) - s2 = add.stop({ offset: 1, color: '#000', opacity: 1 }) - }) - expect(gradient.children().length).toBe(2) - }) - - it('accepts multiple aruments on fixed positions', function () { - gradient = draw.gradient('linear', function (add) { - s1 = add.stop(0.11, '#333') - s2 = add.stop(0.94, '#fff', 0.5) - }) - expect(gradient.children().length).toBe(2) - expect(s1.attr('offset')).toBe(0.11) - expect(s1.attr('stop-color')).toBe('#333333') - expect(s2.attr('offset')).toBe(0.94) - expect(s2.attr('stop-color')).toBe('#ffffff') - expect(s2.attr('stop-opacity')).toBe(0.5) - }) - - }) - - describe('get()', function () { - - it('returns the stop at a given index', function () { - gradient = draw.gradient('linear', function (add) { - s1 = add.stop({ offset: 0.12, color: '#333', opacity: 1 }) - s2 = add.stop({ offset: 0.93, color: '#fff', opacity: 1 }) - }) - expect(gradient.get(0)).toBe(s1) - expect(gradient.get(1)).toBe(s2) - expect(gradient.get(2)).toBeNull() - }) - - }) - -}) diff --git a/spec/spec/helper.js b/spec/spec/helper.js deleted file mode 100644 index 4c9fe4a..0000000 --- a/spec/spec/helper.js +++ /dev/null @@ -1,188 +0,0 @@ -parserInDoc = false - -if(typeof exports === 'object'){ - window = require('svgdom') - SVG = require('../../dist/svg.js') - document = window.document - drawing = document.documentElement - imageUrl = 'spec/fixtures/pixel.png' - parserInDoc = true - - function tag(name, attrs, children) { - var el = document.createElement(name) - for(var i in attrs){ - el.setAttribute(i, attrs[i]) - } - - for(var i in children){ - if(typeof children[i] == 'string') - children[i] = document.createTextNode(children[i]) - - el.appendChild(children[i]) - } - - return el - } - - // create fixtures in svgdom - var el = tag('svg', { - height:0, - width:0, - id:'inlineSVG' - },[ - tag('defs', {}, [ - tag('linearGradient', {}, [ - tag('stop', {offset: '5%', 'stop-color': 'green'}), - tag('stop', {offset: '95%', 'stop-color': 'gold'}), - ]), - tag('radialGradient', {}, [ - tag('stop', {offset: '5%', 'stop-color': 'green'}), - tag('stop', {offset: '95%', 'stop-color': 'gold'}), - ]) - ]), - tag('desc', {}, ['Some description']), - tag('path', { - id: 'lineAB', - d: 'M 100 350 l 150 -300', - stroke: 'red', - 'stroke-width': '3', - fill: 'none' - }), - tag('path', { - id: 'lineBC', - d: 'M 250 50 l 150 300', - stroke: 'red', - 'stroke-width': '3', - fill: 'none' - }), - tag('path', { - d: 'M 175 200 l 150 0', - stroke: 'green', - 'stroke-width': '3', - fill: 'none' - }), - tag('path', { - d: 'M 100 350 q 150 -300 300 0', - stroke: 'blue', - 'stroke-width': '5', - fill: 'none' - }), - tag('g', { - stroke: 'black', - 'stroke-width': '2', - fill: 'black', - id: 'pointGroup' - },[ - tag('circle', { - id: 'pointA', - cx: '100', - cy: '350', - r: '3', - }), - tag('circle', { - id: 'pointB', - cx: '250', - cy: '50', - r: '50', - }), - tag('circle', { - id: 'pointC', - cx: '400', - cy: '350', - r: '50', - }) - ]), - tag('g', { - 'font-size': '30', - font: 'sans-serif', - fill: 'black', - stroke: 'none', - 'text-anchor': 'middle', - id: 'labelGroup' - },[ - tag('text', { - x: '100', - y: '350', - dy: '-30', - }, ['A']), - tag('text', { - x: '250', - y: '50', - dy: '-10', - }, ['B']), - tag('text', { - x: '400', - y: '350', - dx: '30', - }, ['C']) - ]), - tag('polygon', {points: '200,10 250,190 160,210'}), - tag('polyline', {points: '20,20 40,25 60,40 80,120 120,140 200,180'}) - ]) - - document.appendChild(el) - -}else{ - drawing = document.createElement('div') - document.getElementsByTagName('body')[0].appendChild(drawing) - imageUrl = 'fixtures/pixel.png' -} - -parserInDoc |= 0 -drawing.id = 'drawing' -//draw = SVG().addTo(drawing) - -parser = parserInDoc ? [SVG.parser.draw.instance] : [] - -// raw path data -svgPath = 'M88.006,61.994c3.203,0,6.216-1.248,8.481-3.514C98.752,56.215,100,53.203,100,50c0-3.204-1.248-6.216-3.513-8.481 c-2.266-2.265-5.278-3.513-8.481-3.513c-2.687,0-5.237,0.877-7.327,2.496h-7.746l5.479-5.479 c5.891-0.757,10.457-5.803,10.457-11.896c0-6.614-5.381-11.995-11.994-11.995c-6.093,0-11.14,4.567-11.896,10.457l-5.479,5.479 v-7.747c1.618-2.089,2.495-4.641,2.495-7.327c0-3.204-1.247-6.216-3.513-8.481C56.216,1.248,53.204,0,50,0 c-3.204,0-6.216,1.248-8.481,3.513c-2.265,2.265-3.513,5.277-3.513,8.481c0,2.686,0.877,5.237,2.495,7.327v7.747l-5.479-5.479 c-0.757-5.89-5.803-10.457-11.896-10.457c-6.614,0-11.995,5.381-11.995,11.995c0,6.093,4.567,11.139,10.458,11.896l5.479,5.479 h-7.747c-2.089-1.619-4.641-2.496-7.327-2.496c-3.204,0-6.216,1.248-8.481,3.513C1.248,43.784,0,46.796,0,50 c0,3.203,1.248,6.216,3.513,8.48c2.265,2.266,5.277,3.514,8.481,3.514c2.686,0,5.237-0.877,7.327-2.496h7.747l-5.479,5.479 c-5.891,0.757-10.458,5.804-10.458,11.896c0,6.614,5.381,11.994,11.995,11.994c6.093,0,11.139-4.566,11.896-10.457l5.479-5.479 v7.749c-3.63,4.7-3.291,11.497,1.018,15.806C43.784,98.752,46.796,100,50,100c3.204,0,6.216-1.248,8.481-3.514 c4.309-4.309,4.647-11.105,1.018-15.806v-7.749l5.479,5.479c0.757,5.891,5.804,10.457,11.896,10.457 c6.613,0,11.994-5.38,11.994-11.994c0-6.093-4.566-11.14-10.457-11.896l-5.479-5.479h7.746 C82.769,61.117,85.319,61.994,88.006,61.994z M76.874,68.354c4.705,0,8.52,3.814,8.52,8.521c0,4.705-3.814,8.52-8.52,8.52 s-8.52-3.814-8.52-8.52l-12.33-12.33V81.98c3.327,3.328,3.327,8.723,0,12.049c-3.327,3.328-8.722,3.328-12.049,0 c-3.327-3.326-3.327-8.721,0-12.049V64.544l-12.33,12.33c0,4.705-3.814,8.52-8.52,8.52s-8.52-3.814-8.52-8.52 c0-4.706,3.814-8.521,8.52-8.521l12.33-12.33H18.019c-3.327,3.328-8.722,3.328-12.049,0c-3.327-3.326-3.327-8.721,0-12.048 s8.722-3.327,12.049,0h17.438l-12.33-12.33c-4.706,0-8.52-3.814-8.52-8.52c0-4.706,3.814-8.52,8.52-8.52s8.52,3.814,8.52,8.52 l12.33,12.33V18.019c-3.327-3.327-3.327-8.722,0-12.049s8.722-3.327,12.049,0s3.327,8.722,0,12.049v17.438l12.33-12.33 c0-4.706,3.814-8.52,8.52-8.52s8.52,3.814,8.52,8.52c0,4.705-3.814,8.52-8.52,8.52l-12.33,12.33h17.438 c3.327-3.327,8.722-3.327,12.049,0s3.327,8.722,0,12.048c-3.327,3.328-8.722,3.328-12.049,0H64.544L76.874,68.354z' - -// lorem ipsum text -loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sodales\n imperdiet auctor. Nunc ultrices lectus at erat dictum pharetra\n elementum ante posuere. Duis turpis risus, blandit nec elementum et,\n posuere eget lacus. Aliquam et risus magna, eu aliquet nibh. Fusce\n consequat mi quis purus varius sagittis euismod urna interdum.\n Curabitur aliquet orci quis felis semper vulputate. Vestibulum ac nisi\n magna, id dictum diam. Proin sed metus vel magna blandit\n sodales. Pellentesque at neque ultricies nunc euismod rutrum ut in\n lorem. Mauris euismod tellus in tellus tempus interdum. Phasellus\n mattis sapien et leo feugiat dictum. Vestibulum at volutpat velit.' - -beforeEach(function(){ - // test for touch device - this.isTouchDevice = 'ontouchstart' in document.documentElement - draw = SVG().addTo(drawing).size(100,100) -}) - -afterEach(function(){ - draw.remove() -}) - -// strip spaces from result -window.stripped = function(string) { - string = string.replace(/\s+/g, '') - if(string.slice(-1) == ';') string = string.slice(0, -1) - return string -} - -// This is needed because of IE11 which uses space as a delimiter in matrix -window.matrixStringToArray = function(source){ - return source - .replace(/matrix\(|\)/, '') - .split(SVG.regex.delimiter) - .map(parseFloat) -} - -// This is needed because of IE11 creating values like 2.99999 when calculating a transformed box -window.roundBox = function(box) { - return new SVG.Box( - Math.round(box.x), - Math.round(box.y), - Math.round(box.width), - Math.round(box.height) - ) -} - -// Same thing here with matrices -window.roundMatrix = function (mat) { - return new SVG.Matrix( - +(mat.a.toFixed(5)), - +(mat.b.toFixed(5)), - +(mat.c.toFixed(5)), - +(mat.d.toFixed(5)), - +(mat.e.toFixed(5)), - +(mat.f.toFixed(5)) - ) -} diff --git a/spec/spec/image.js b/spec/spec/image.js deleted file mode 100644 index 589116d..0000000 --- a/spec/spec/image.js +++ /dev/null @@ -1,38 +0,0 @@ -describe('Image', function() { - var image, loadCb - - beforeEach(function(done) { - loadCb = {cb: function(){ done() }} - spyOn(loadCb, 'cb').and.callThrough() - image = draw.image(imageUrl, loadCb.cb).size(100,100) - }) - - afterEach(function() { - draw.clear() - }) - - - describe('()', function() { - it('should set width and height automatically if no size is given', function(done) { - image = draw.image(imageUrl, function() { - expect(image.node.getAttribute('height')).toBe('1') - expect(image.node.getAttribute('width')).toBe('1') - done() - }) - }) - it('should not change with and height when size already set', function(done) { - image = draw.image(imageUrl, function() { - expect(image.node.getAttribute('height')).toBe('100') - expect(image.node.getAttribute('width')).toBe('100') - done() - }).size(100,100) - }) - it('returns itself when no url given', function() { - var img = new SVG.Image() - expect(img.load()).toBe(img) - }) - it('executes the load callback', function() { - expect(loadCb.cb).toHaveBeenCalledWith(jasmine.any(Event)) - }) - }) -}) diff --git a/spec/spec/line.js b/spec/spec/line.js deleted file mode 100644 index 48b1c8b..0000000 --- a/spec/spec/line.js +++ /dev/null @@ -1,244 +0,0 @@ -describe('Line', function() { - var line - - beforeEach(function() { - line = draw.line(0,100,100,0) - }) - - afterEach(function() { - draw.clear() - }) - - // #487 - describe('()', function(){ - it('will take an array as input', function(){ - line = draw.line([[0,100],[100,0]]) - var attrs = line.attr() - expect(attrs.x1).toBe(0) - expect(attrs.y1).toBe(100) - expect(attrs.x2).toBe(100) - expect(attrs.y2).toBe(0) - }) - - it('falls back to a line with its two points at [0,0] without an argument', function() { - line = draw.line() - var attrs = line.attr() - expect(attrs.x1).toBe(0) - expect(attrs.y1).toBe(0) - expect(attrs.x2).toBe(0) - expect(attrs.y2).toBe(0) - }) - }) - - describe('x()', function() { - it('should return the value of x without an argument', function() { - expect(line.x()).toBe(0) - }) - it('should set the value of x with the first argument', function() { - line.x(123) - var box = line.bbox() - expect(box.x).toBe(123) - }) - }) - - describe('y()', function() { - it('should return the value of y without an argument', function() { - expect(line.y()).toBe(0) - }) - it('should set the value of y with the first argument', function() { - line.y(345) - var box = line.bbox() - expect(box.y).toBe(345) - }) - }) - - describe('cx()', function() { - it('should return the value of cx without an argument', function() { - expect(line.cx()).toBe(50) - }) - it('should set the value of cx with the first argument', function() { - line.cx(123) - var box = line.bbox() - expect(box.cx).toBe(123) - }) - }) - - describe('cy()', function() { - it('should return the value of cy without an argument', function() { - expect(line.cy()).toBe(50) - }) - it('should set the value of cy with the first argument', function() { - line.cy(345) - var box = line.bbox() - expect(box.cy).toBe(345) - }) - }) - - describe('move()', function() { - it('should set the x and y position', function() { - line.move(123,456) - var box = line.bbox() - expect(box.x).toBe(123) - expect(box.y + box.height).toBe(556) - expect(box.x + box.width).toBe(223) - expect(box.y).toBe(456) - }) - }) - - describe('dx()', function() { - it('moves the x positon of the element relative to the current position', function() { - line.move(50,60) - line.dx(100) - var box = line.bbox() - expect(box.x).toBe(150) - expect(box.y + box.height).toBe(160) - expect(box.x + box.width).toBe(250) - expect(box.y).toBe(60) - }) - }) - - describe('dy()', function() { - it('moves the y positon of the element relative to the current position', function() { - line.move(50, 60) - line.dy(120) - var box = line.bbox() - expect(box.x).toBe(50) - expect(box.y + box.height).toBe(280) - expect(box.x + box.width).toBe(150) - expect(box.y).toBe(180) - }) - }) - - describe('dmove()', function() { - it('moves the x and y positon of the element relative to the current position', function() { - line.move(50,60) - line.dmove(80, 25) - var box = line.bbox() - expect(box.x).toBe(130) - expect(box.y + box.height).toBe(185) - expect(box.x + box.width).toBe(230) - expect(box.y).toBe(85) - }) - }) - - describe('center()', function() { - it('should set the cx and cy position', function() { - line.center(321,567) - var box = line.bbox() - expect(box.x).toBe(271) - expect(box.y + box.height).toBe(617) - expect(box.x + box.width).toBe(371) - expect(box.y).toBe(517) - }) - }) - - describe('width()', function() { - it('sets the width of the element', function() { - line.width(400) - var box = line.bbox() - expect(box.x).toBe(0) - expect(box.x + box.width).toBe(400) - }) - it('get the width of the element without argument', function() { - line.width(123) - var box = line.bbox() - expect(line.width()).toBe(box.width) - }) - }) - - describe('height()', function() { - it('sets the height of the element', function() { - line.height(300) - var box = line.bbox() - expect(box.y).toBe(0) - expect(box.y + box.height).toBe(300) - }) - it('gets the height of the element without argument', function() { - line.height(456) - var box = line.bbox() - expect(line.height()).toBe(box.height) - }) - }) - - describe('size()', function() { - it('should define the width and height of the element', function() { - line.size(987,654) - var box = line.bbox() - expect(box.x).toBe(0) - expect(box.y + box.height).toBe(654) - expect(box.x + box.width).toBe(987) - expect(box.y).toBe(0) - }) - it('defines the width and height proportionally with only the width value given', function() { - var box = line.bbox() - line.size(500) - expect(line.width()).toBe(500) - expect(line.width() / line.height()).toBe(box.width / box.height) - }) - it('defines the width and height proportionally with only the height value given', function() { - var box = line.bbox() - line.size(null, 525) - expect(line.height()).toBe(525) - expect(line.width() / line.height()).toBe(box.width / box.height) - }) - }) - - describe('scale()', function() { - it('should scale the element universally with one argument', function() { - var box1 = line.rbox() - , box2 = line.scale(2).rbox() - - expect(box2.width).toBe(box1.width * 2) - expect(box2.height).toBe(box1.height * 2) - }) - it('should scale the element over individual x and y axes with two arguments', function() { - var box1 = line.rbox() - , box2 = line.scale(2,3.5).rbox() - - expect(box2.width).toBe(box1.width * 2) - expect(box2.height).toBe(box1.height * 3.5) - }) - }) - - describe('translate()', function() { - it('should set the translation of an element', function() { - line.transform({ tx: 12, ty: 12 }) - expect(line.node.getAttribute('transform')).toBe('matrix(1,0,0,1,12,12)') - }) - }) - - describe('plot()', function() { - it('should update the start and end points', function() { - line.plot(100,200,300,400) - var box = line.bbox() - expect(box.x).toBe(100) - expect(box.y).toBe(200) - expect(box.x + box.width).toBe(300) - expect(box.y + box.height).toBe(400) - }) - it('change the x1,y1,x2,y2 attributes of the underlying line node when a string is passed', function() { - expect(line.plot('100,50 200,10')).toBe(line) - - var attrs = line.attr() - expect(attrs.x1).toBe(100) - expect(attrs.y1).toBe(50) - expect(attrs.x2).toBe(200) - expect(attrs.y2).toBe(10) - }) - it('change the x1,y1,x2,y2 attributes of the underlying line node when 4 numbers are passed', function() { - expect(line.plot(45, 24, 220, 300)).toBe(line) - - var attrs = line.attr() - expect(attrs.x1).toBe(45) - expect(attrs.y1).toBe(24) - expect(attrs.x2).toBe(220) - expect(attrs.y2).toBe(300) - }) - it('return the coordinates in a point array when no arguments are passed', function () { - var attrs = line.attr() - , pointArray = new SVG.PointArray([[attrs.x1, attrs.y1], [attrs.x2, attrs.y2]]) - - expect(line.plot()).toEqual(pointArray) - }) - }) -}) diff --git a/spec/spec/mask.js b/spec/spec/mask.js deleted file mode 100644 index e61ccbd..0000000 --- a/spec/spec/mask.js +++ /dev/null @@ -1,62 +0,0 @@ -describe('Mask', function() { - var rect, circle - - beforeEach(function() { - rect = draw.rect(100,100) - circle = draw.circle(100).move(50, 50).fill('#fff') - rect.maskWith(circle) - }) - - afterEach(function() { - draw.clear() - }) - - it('moves the masking element to a new mask node', function() { - expect(circle.parent() instanceof SVG.Mask).toBe(true) - }) - - it('creates the mask node in the defs node', function() { - expect(circle.parent().parent()).toBe(draw.defs()) - }) - - it('sets the "mask" attribute on the masked element with the mask id', function() { - expect(rect.attr('mask')).toBe('url("#' + circle.parent().id() + '")') - }) - - it('references the mask element in the masked element', function() { - expect(rect.masker()).toBe(circle.parent()) - }) - - it('references the masked element in the mask target list', function() { - expect(rect.masker().targets().indexOf(rect) > -1).toBe(true) - }) - - it('reuses mask element when mask was given', function() { - var mask = rect.masker() - expect(draw.rect(100,100).maskWith(mask).masker()).toBe(mask) - }) - - it('unmasks all masked elements when being removed', function() { - rect.masker().remove() - expect(rect.attr('mask')).toBe(undefined) - }) - - describe('unmask()', function() { - - it('clears the "mask" attribute on the masked element', function() { - rect.unmask() - expect(rect.attr('mask')).toBe(undefined) - }) - - it('removes the reference to the masking element', function() { - rect.unmask() - expect(rect.masker()).toBe(null) - }) - - it('returns the element itslef', function() { - expect(rect.unmask()).toBe(rect) - }) - - }) - -})
\ No newline at end of file diff --git a/spec/spec/matrix.js b/spec/spec/matrix.js deleted file mode 100644 index b6c0348..0000000 --- a/spec/spec/matrix.js +++ /dev/null @@ -1,375 +0,0 @@ -describe('Matrix', function() { - let comp = {a:2, b:0, c:0, d:2, e:100, f:50} - - describe('initialization', function() { - - it('creates a new matrix with default values', function() { - let matrix = new SVG.Matrix() - expect(matrix).toEqual(jasmine.objectContaining( - {a:1, b:0, c:0, d:1, e:0, f:0} - )) - }) - - it('parses the current transform matrix from an element', function() { - let rect = draw.rect(100, 100).transform(comp) - let matrix = new SVG.Matrix(rect) - expect(matrix).toEqual(jasmine.objectContaining(comp)) - }) - - it('parses a string value correctly', function() { - let matrix = new SVG.Matrix('2, 0, 0, 2, 100, 50') - expect(matrix).toEqual(jasmine.objectContaining(comp)) - }) - - it('parses an array correctly', function() { - let matrix = new SVG.Matrix([2, 0, 0, 2, 100, 50]) - expect(matrix).toEqual(jasmine.objectContaining(comp)) - }) - - it('parses an object correctly', function() { - let matrix = new SVG.Matrix(comp) - expect(matrix).toEqual(jasmine.objectContaining(comp)) - }) - - it('parses a transform object correctly', function() { - let matrix = new SVG.Matrix({scale: 2, translate: [100, 50]}) - expect(matrix).toEqual(jasmine.objectContaining(comp)) - }) - - it('parses 6 arguments correctly', function() { - let matrix = new SVG.Matrix(2, 0, 0, 2, 100, 50) - expect(matrix).toEqual(jasmine.objectContaining(comp)) - }) - }) - - describe('toString()' , function() { - it('exports correctly to a string', function() { - expect(new SVG.Matrix().toString()).toBe('matrix(1,0,0,1,0,0)') - }) - }) - - describe('compose()', function() { - it('composes a matrix to form the correct result', function() { - let composed = new SVG.Matrix().compose({ - scaleX: 3, scaleY: 20, shear: 4, rotate: 50, translateX: 23, translateY: 52, - }) - - let expected = new SVG.Matrix().scale(3, 20).shear(4).rotate(50).translate(23, 52) - expect(composed).toEqual(expected) - }) - }) - - describe('decompose()', function () { - it('decomposes a matrix properly', function () { - var matrix = new SVG.Matrix().scale(3, 2.5).shear(4).rotate(30).translate(20, 30) - var decomposed = matrix.decompose() - expect(decomposed.scaleX).toBeCloseTo(3) - expect(decomposed.scaleY).toBeCloseTo(2.5) - expect(decomposed.shear).toBeCloseTo(4) - expect(decomposed.rotate).toBeCloseTo(30) - expect(decomposed.translateX).toBeCloseTo(20) - expect(decomposed.translateY).toBeCloseTo(30) - }) - - it('can be recomposed to the same matrix', function () { - var matrix = new SVG.Matrix().scale(3, 2.5).shear(4).rotate(30).translate(20, 30) - var decomposed = matrix.decompose() - var composed = new SVG.Matrix().compose(decomposed) - expect(matrix.a).toBeCloseTo(composed.a) - expect(matrix.b).toBeCloseTo(composed.b) - expect(matrix.c).toBeCloseTo(composed.c) - expect(matrix.d).toBeCloseTo(composed.d) - expect(matrix.e).toBeCloseTo(composed.e) - expect(matrix.f).toBeCloseTo(composed.f) - }) - }) - - describe('clone()', function() { - it('returns a clone of the matrix', function() { - var matrix = new SVG.Matrix(2, 0, 0, 5, 0, 0) - , clone = matrix.clone() - expect(matrix).not.toBe(clone) - for(var i in 'abcdef') { - expect(matrix[i]).toEqual(clone[i]) - } - }) - }) - - describe('multiply()', function() { - it('multiplies two matrices', function() { - var matrix1 = new SVG.Matrix(1, 4, 2, 5, 3, 6) - , matrix2 = new SVG.Matrix(7, 8, 8, 7, 9, 6) - , matrix3 = matrix1.multiply(matrix2) - - expect(matrix1.toString()).toBe('matrix(1,4,2,5,3,6)') - expect(matrix2.toString()).toBe('matrix(7,8,8,7,9,6)') - expect(matrix3.toString()).toBe('matrix(23,68,22,67,24,72)') - }) - - it('accepts matrices in any form', function() { - var matrix1 = new SVG.Matrix(1, 4, 2, 5, 3, 6) - , matrix2 = matrix1.multiply('7,8,8,7,9,6') - - expect(matrix1.toString()).toBe('matrix(1,4,2,5,3,6)') - expect(matrix2.toString()).toBe('matrix(23,68,22,67,24,72)') - }) - }) - - describe('inverse()', function() { - it('inverses matrix', function() { - - var matrix1 = new SVG.Matrix(2, 0, 0, 5, 4, 3) - , matrix2 = matrix1.inverse() - , abcdef = [0.5, 0, 0, 0.2, -2, -0.6] - - for(var i in 'abcdef') { - expect(matrix2['abcdef'[i]]).toBeCloseTo(abcdef[i]) - } - }) - }) - - describe('translate()', function() { - it('translates matrix by given x and y values', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).translate(10, 12.5) - expect(matrix.e).toBe(14) - expect(matrix.f).toBe(15.5) - }) - - it('does nothing if you give it no x or y value', function() { - var matrix = new SVG.Matrix(1, 2, 3, 4, 5, 6).translate() - expect(matrix.e).toBe(5) - expect(matrix.f).toBe(6) - }) - }) - - describe('scale()', function() { - it('performs a uniformal scale with one value', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).scale(3) - - expect(matrix.a).toBe(3) - expect(matrix.d).toBe(3) - expect(matrix.e).toBe(4 * 3) - expect(matrix.f).toBe(3 * 3) - }) - it('performs a non-uniformal scale with two values', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).scale(2.5, 3.5) - - expect(matrix.a).toBe(2.5) - expect(matrix.d).toBe(3.5) - expect(matrix.e).toBe(4 * 2.5) - expect(matrix.f).toBe(3 * 3.5) - }) - it('performs a uniformal scale at a given center point with three values', function() { - var matrix = new SVG.Matrix(1, 3, 2, 3, 4, 3).scale(3, 2, 3) - - expect(matrix.a).toBe(3) - expect(matrix.b).toBe(9) - expect(matrix.c).toBe(6) - expect(matrix.d).toBe(9) - expect(matrix.e).toBe(8) - expect(matrix.f).toBe(3) - }) - it('performs a non-uniformal scale at a given center point with four values', function() { - var matrix = new SVG.Matrix(1, 3, 2, 3, 4, 3).scale(3, 2, 2, 3) - - expect(matrix.a).toBe(3) - expect(matrix.b).toBe(6) - expect(matrix.c).toBe(6) - expect(matrix.d).toBe(6) - expect(matrix.e).toBe(8) - expect(matrix.f).toBe(3) - }) - }) - - describe('rotate()', function() { - it('performs a rotation with one argument', function() { - var matrix = new SVG.Matrix(1, 3, 2, 3, 4, 3).rotate(30) - - expect(matrix.a).toBeCloseTo(-0.6339746) - expect(matrix.b).toBeCloseTo(3.09807621) - expect(matrix.c).toBeCloseTo(0.23205081) - expect(matrix.d).toBeCloseTo(3.59807621) - expect(matrix.e).toBeCloseTo(1.96410162) - expect(matrix.f).toBeCloseTo(4.59807621) - }) - it('performs a rotation around a given point with three arguments', function() { - var matrix = new SVG.Matrix(1, 3, 2, 3, 4, 3).rotate(30, 2, 3) - - expect(matrix.a).toBeCloseTo(-0.633974596216) - expect(matrix.b).toBeCloseTo(3.09807621135) - expect(matrix.c).toBeCloseTo(0.232050807569) - expect(matrix.d).toBeCloseTo(3.59807621135) - expect(matrix.e).toBeCloseTo(3.73205080757) - expect(matrix.f).toBeCloseTo(4.0) - }) - }) - - describe('flip()', function() { - describe('with x given', function() { - it('performs a flip over the horizontal axis with one argument', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).flip('x') - - expect(matrix.a).toBe(-1) - expect(matrix.d).toBe(1) - expect(matrix.e).toBe(-4) - expect(matrix.f).toBe(3) - }) - it('performs a flip over the horizontal axis over a given point with two arguments', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).flip('x', 150) - - expect(matrix.a).toBe(-1) - expect(matrix.d).toBe(1) - expect(matrix.e).toBe(296) - expect(matrix.f).toBe(3) - }) - }) - describe('with y given', function() { - it('performs a flip over the vertical axis with one argument', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).flip('y') - - expect(matrix.a).toBe(1) - expect(matrix.d).toBe(-1) - expect(matrix.e).toBe(4) - expect(matrix.f).toBe(-3) - }) - it('performs a flip over the vertical axis over a given point with two arguments', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).flip('y', 100) - - expect(matrix.a).toBe(1) - expect(matrix.d).toBe(-1) - expect(matrix.e).toBe(4) - expect(matrix.f).toBe(197) - }) - }) - describe('with no axis given', function() { - it('performs a flip over the horizontal and vertical axis with no argument', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).flip() - - expect(matrix.a).toBe(-1) - expect(matrix.d).toBe(-1) - expect(matrix.e).toBe(-4) - expect(matrix.f).toBe(-3) - }) - it('performs a flip over the horizontal and vertical axis over a given point with one argument that represent both coordinates', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).flip(100) - - expect(matrix.a).toBe(-1) - expect(matrix.d).toBe(-1) - expect(matrix.e).toBe(196) - expect(matrix.f).toBe(197) - }) - it('performs a flip over the horizontal and vertical axis over a given point with two arguments', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).flip(50, 100) - - expect(matrix.a).toBe(-1) - expect(matrix.d).toBe(-1) - expect(matrix.e).toBe(96) - expect(matrix.f).toBe(197) - }) - }) - }) - - describe('skew()', function() { - it('performs a uniformal skew with one value', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skew(30) - - expect(matrix.a).toBe(1) - expect(matrix.b).toBeCloseTo(0.57735026919) - expect(matrix.c).toBeCloseTo(0.57735026919) - expect(matrix.d).toBe(1) - expect(matrix.e).toBeCloseTo(5.73205080757) - expect(matrix.f).toBeCloseTo(5.30940107676) - }) - - it('performs a non-uniformal skew with two values', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skew(30, 20) - - expect(matrix.a).toBe(1) - expect(matrix.b).toBeCloseTo(0.363970234266) - expect(matrix.c).toBeCloseTo(0.57735026919) - expect(matrix.d).toBe(1) - expect(matrix.e).toBeCloseTo(5.73205080757) - expect(matrix.f).toBeCloseTo(4.45588093706) - }) - - it('performs a uniformal skew at a given center point with three values', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skew(30, 150, 100) - - expect(matrix.a).toBe(1) - expect(matrix.b).toBeCloseTo(0.57735026919) - expect(matrix.c).toBeCloseTo(0.57735026919) - expect(matrix.d).toBe(1) - expect(matrix.e).toBeCloseTo(-52.0029761114) - expect(matrix.f).toBeCloseTo(-81.2931393017) - }) - - it('performs a non-uniformal skew at a given center point with four values', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skew(30, 20, 150, 100) - - expect(matrix.a).toBe(1.0) - expect(matrix.b).toBeCloseTo(0.363970234266) - expect(matrix.c).toBeCloseTo(0.57735026919) - expect(matrix.d).toBe(1.0) - expect(matrix.e).toBeCloseTo(-52.0029761114) - expect(matrix.f).toBeCloseTo(-50.1396542029) - }) - - it('can be chained', function(){ - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skew(20, 30).skew(30, 20) - expect(matrix.a).toBeCloseTo(1.33333333333) - expect(matrix.b).toBeCloseTo(0.941320503456) - expect(matrix.c).toBeCloseTo(0.941320503456) - expect(matrix.d).toBeCloseTo(1.13247433143) - expect(matrix.e).toBeCloseTo(8.1572948437) - expect(matrix.f).toBeCloseTo(7.16270500812) - }) - }) - - describe('skewX', function(){ - it('performs a skew along the x axis with one value', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skewX(30) - - expect(matrix.a).toBe(1) - expect(matrix.b).toBe(0) - expect(matrix.c).toBeCloseTo(0.57735026919) - expect(matrix.d).toBe(1) - expect(matrix.e).toBeCloseTo(5.73205080757) - expect(matrix.f).toBe(3) - }) - - it('performs a skew along the x axis at a given center point with three values', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skewX(30, 150, 100) - - expect(matrix.a).toBe(1) - expect(matrix.b).toBe(0) - expect(matrix.c).toBeCloseTo(0.57735026919) - expect(matrix.d).toBe(1) - expect(matrix.e).toBeCloseTo(-52.0029761114) - expect(matrix.f).toBe(3) - }) - }) - - describe('skewY', function(){ - it('performs a skew along the y axis with one value', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skewY(30) - - expect(matrix.a).toBe(1) - expect(matrix.b).toBeCloseTo(0.57735026919) - expect(matrix.c).toBe(0) - expect(matrix.d).toBe(1) - expect(matrix.e).toBe(4) - expect(matrix.f).toBeCloseTo(5.30940107676) - }) - - it('performs a skew along the y axis at a given center point with three values', function() { - var matrix = new SVG.Matrix(1, 0, 0, 1, 4, 3).skewY(30, 150, 100) - - expect(matrix.a).toBe(1) - expect(matrix.b).toBeCloseTo(0.57735026919) - expect(matrix.c).toBe(0) - expect(matrix.d).toBe(1) - expect(matrix.e).toBe(4) - expect(matrix.f).toBeCloseTo(-81.2931393017) - }) - }) -}) diff --git a/spec/spec/memory.js b/spec/spec/memory.js deleted file mode 100644 index 32773a0..0000000 --- a/spec/spec/memory.js +++ /dev/null @@ -1,58 +0,0 @@ -describe('Memory', function () { - var rect, circle - - beforeEach(function() { - rect = draw.rect(100,120) - circle = draw.circle(100) - }) - - afterEach(function() { - draw.clear() - }) - - describe('remember()', function() { - it('accepts an object with values', function() { - rect.remember({ some: {cool:'and',nested:'stuff',foo:5} }) - expect(rect.remember('some').foo).toBe(5) - }) - it('accepts key / value arguments', function() { - rect.remember('fill', rect.attr('fill')) - rect.fill('#f09') - expect(rect.remember('fill')).toBe('#000000') - }) - it('acts as a getter with one string argument', function() { - rect.remember('opacity', 0.85) - expect(rect.remember('opacity')).toBe(0.85) - }) - it('saves values to individual objects', function() { - rect.remember('opacity', 0.85) - circle.remember('opacity', 0.5) - expect(rect.remember('opacity')).toBe(0.85) - expect(circle.remember('opacity')).toBe(0.5) - }) - }) - - describe('forget()', function() { - it('deletes a given memory', function() { - rect.remember({ grass: 'is green', one: 1 }) - rect.forget('grass') - expect(rect.remember('grass')).toBe(undefined) - expect(rect.remember('one')).toBe(1) - }) - it('accepts multiple arguments as different memories', function() { - rect.remember({ grass: 'might be purple', two: 2, sea: true }) - rect.forget('grass', 'sea') - expect(rect.remember('grass')).toBe(undefined) - expect(rect.remember('sea')).toBe(undefined) - expect(rect.remember('two')).toBe(2) - }) - it('clears the whole memory without arguments', function() { - rect.remember({ grass: 'is never pink', three: 3, tree: true }) - rect.forget() - expect(rect.remember('grass')).toBe(undefined) - expect(rect.remember('tree')).toBe(undefined) - expect(rect.remember('three')).toBe(undefined) - }) - }) - -})
\ No newline at end of file diff --git a/spec/spec/path.js b/spec/spec/path.js deleted file mode 100644 index 28780c9..0000000 --- a/spec/spec/path.js +++ /dev/null @@ -1,261 +0,0 @@ -describe('Path', function() { - var path - - beforeEach(function() { - path = draw.path(svgPath) - }) - - afterEach(function() { - draw.clear() - }) - - describe('()', function() { - it('falls back to a single point without an argument', function() { - path = draw.path() - expect(path.attr('d')).toBe('M0 0 ') - }) - }) - - describe('array()', function() { - it('returns an instance of SVG.PathArray', function() { - expect(path.array() instanceof SVG.PathArray).toBeTruthy() - }) - it('returns the value stored in the private variable _array', function() { - expect(path.array()).toBe(path._array) - }) - }) - - describe('x()', function() { - it('returns the value of x without an argument', function() { - expect(path.x()).toBe(0) - }) - it('sets the value of x with the first argument', function() { - path.x(123) - var box = path.bbox() - expect(box.x).toBe(123) - }) - }) - - describe('y()', function() { - it('returns the value of y without an argument', function() { - expect(path.y()).toBe(0) - }) - it('sets the value of y with the first argument', function() { - path.y(345) - var box = path.bbox() - expect(box.y).toBe(345) - }) - }) - - describe('cx()', function() { - it('returns the value of cx without an argument', function() { - expect(path.cx()).toBe(50) - }) - it('sets the value of cx with the first argument', function() { - path.cx(123) - var box = path.bbox() - expect(box.cx).toBe(123) - }) - }) - - describe('cy()', function() { - it('returns the value of cy without an argument', function() { - expect(path.cy()).toBe(50) - }) - it('sets the value of cy with the first argument', function() { - path.cy(345) - var box = path.bbox() - expect(box.cy).toBe(345) - }) - }) - - describe('move()', function() { - it('sets the x and y position', function() { - path.move(123,456) - var box = path.bbox() - expect(box.x).toBe(123) - expect(box.y).toBe(456) - }) - it('sets the x and y position when scaled to half its size', function() { - path.scale(0.5, 0, 0).move(123,456) - var box = path.bbox() - expect(box.x).toBe(123) - expect(box.y).toBe(456) - }) - }) - - describe('dx()', function() { - it('moves the x positon of the element relative to the current position', function() { - path.move(50,60) - path.dx(100) - var box = path.bbox() - expect(box.x).toBe(150) - }) - }) - - describe('dy()', function() { - it('moves the y positon of the element relative to the current position', function() { - path.move(50, 60) - path.dy(120) - var box = path.bbox() - expect(box.y).toBe(180) - }) - }) - - describe('dmove()', function() { - it('moves the x and y positon of the element relative to the current position', function() { - path.move(50,60) - path.dmove(80, 25) - var box = path.bbox() - expect(box.x).toBe(130) - expect(box.y).toBe(85) - }) - }) - - describe('center()', function() { - it('sets the cx and cy position', function() { - path.center(321,567) - var box = path.bbox() - expect(box.x).toBe(271) - expect(box.y).toBe(517) - }) - }) - - describe('width()', function() { - it('sets the width of the element', function() { - path.width(234) - var box = path.bbox() - expect(box.width).toBeCloseTo(234) - }) - it('gets the width of the element without an argument', function() { - path.width(456) - expect(path.width()).toBeCloseTo(456) - }) - }) - - describe('height()', function() { - it('sets the height of the element', function() { - path.height(654) - var box = path.bbox() - expect(box.height).toBeCloseTo(654) - }) - it('gets the height of the element without an argument', function() { - path.height(321) - expect(path.height()).toBeCloseTo(321) - }) - }) - - describe('size()', function() { - it('defines the width and height of the element', function() { - path.size(987,654) - var box = path.bbox() - expect(box.width).toBeCloseTo(987) - expect(box.height).toBeCloseTo(654) - }) - it('defines the width and height proportionally with only the width value given', function() { - var box = path.bbox() - path.size(500) - expect(path.width()).toBeCloseTo(500) - expect(path.width() / path.height()).toBe(box.width / box.height) - }) - it('defines the width and height proportionally with only the height value given', function() { - var box = path.bbox() - path.size(null, 525) - expect(path.height()).toBe(525) - expect(path.width() / path.height()).toBeCloseTo(box.width / box.height) - }) - it('doesn\'t scale width/height when their value is 0', function() { - path = draw.path('M0 0L0 100') - path.size(500, 500) - expect(path.attr('d')).toBe('M0 0L0 500 ') - - path = draw.path('M0 0L100 0') - path.size(500, 500) - expect(path.attr('d')).toBe('M0 0L500 0 ') - }) - }) - - describe('scale()', function() { - it('should scale the element universally with one argument', function() { - var box1 = path.rbox() - , box2 = path.scale(2).rbox() - - expect(box1.width * 2).toBe(box2.width) - expect(box1.height * 2).toBe(box2.height) - }) - it('should scale the element over individual x and y axes with two arguments', function() { - var box1 = path.rbox() - , box2 = path.scale(2, 3.5).rbox() - - expect(box1.width * 2).toBe(box2.width) - expect(box1.height * 3.5).toBe(box2.height) - }) - }) - - describe('translate()', function() { - it('sets the translation of an element', function() { - path.transform({ tx: 12, ty: 12 }) - expect(path.node.getAttribute('transform')).toBe('matrix(1,0,0,1,12,12)') - }) - }) - - describe('plot()', function() { - it('changes the d attribute of the underlying path node when a string is passed', function() { - var pathString = 'm 3,2 c 0,0 -0,13 8,14 L 5,4' - , pathArray = new SVG.PathArray(pathString) - - expect(path.plot(pathString)).toBe(path) - expect(path.attr('d')).toBe(pathString) - }) - it('clears the array cache when a value is passed', function() { - path = draw.path([ ['M', 50, 60], ['A', 60, 60, 0, 0, 0, 50, -60], ['z'] ]) - expect(path._array instanceof SVG.PathArray).toBeTruthy() - path.plot('m 3,2 c 0,0 -0,13 8,14 L 5,4') - expect(path._array).toBeUndefined() - }) - it('applies a given path string value as is', function() { - var pathString = 'm 3,2 c 0,0 -0,13 8,14 L 5,4' - - path = draw.path(pathString) - expect(path.attr('d')).toBe(pathString) - }) - it('does not parse and cache a given string value to SVG.PathArray', function() { - path = draw.path('m 3,2 c 0,0 -0,13 8,14 L 5,4') - expect(path._array).toBeUndefined() - }) - it('caches a given array value', function() { - path = draw.path([ ['M', 50, 60], ['A', 60, 60, 0, 0, 0, 50, -60], ['H', 100], ['L', 20, 30], ['Z'] ]) - expect(path._array instanceof SVG.PathArray).toBeTruthy() - }) - it('returns the path array when no arguments are passed', function () { - expect(path.plot()).toBe(path.array()) - }) - }) - - describe('clear()', function() { - it('clears the cached SVG.PathArray instance', function() { - path = draw.path(svgPath) - path.clear() - expect(path._array).toBeUndefined() - }) - }) - - describe('toString()', function() { - it('renders path array correctly to string', function() { - path = path.plot(['M', 50, 60, 'A', 60, 60, 0, 0, 0, 50, -60, 'H', 100, 'V', 100, 'L', 20, 30, 'C', 10, 20, 30, 40, 50, 60 ]) - expect(path.node.getAttribute('d')).toBe('M50 60A60 60 0 0 0 50 -60H100V100L20 30C10 20 30 40 50 60 ') - }) - }) - - describe('length()', function() { - it('gets the total length of the path', function() { - expect(path.length()).toBe(path.node.getTotalLength()) - }) - }) - - describe('pointAt()', function() { - it('gets a point at given length', function() { - expect(path.pointAt(100)).toEqual(new SVG.Point(path.node.getPointAtLength(100))) - }) - }) -}) diff --git a/spec/spec/pattern.js b/spec/spec/pattern.js deleted file mode 100644 index f51caf6..0000000 --- a/spec/spec/pattern.js +++ /dev/null @@ -1,69 +0,0 @@ -describe('Pattern', function () { - var rect, pattern - - beforeEach(function () { - rect = draw.rect(100, 100) - pattern = draw.pattern(20, 30, function (add) { - add.rect(10, 10).move(10, 10) - add.circle(30) - }) - }) - - afterEach(function () { - rect.remove() - pattern.remove() - }) - - it('is an instance of SVG.Pattern', function () { - expect(pattern instanceof SVG.Pattern).toBe(true) - }) - - it('allows creation of a new gradient without block', function () { - pattern = draw.pattern(10, 30) - expect(pattern.children().length).toBe(0) - }) - - describe('url()', function () { - it('returns the id of the pattern wrapped in url()', function () { - expect(pattern.url()).toBe('url("#' + pattern.id() + '")') - }) - }) - - describe('attr()', function () { - it('will catch transform attribues and convert them to patternTransform', function () { - expect(pattern.translate(100, 100).attr('patternTransform')).toBe('matrix(1,0,0,1,100,100)') - }) - }) - - describe('toString()', function () { - it('returns the id of the pattern wrapped in url()', function () { - expect(pattern + '').toBe('url("#' + pattern.id() + '")') - }) - it('is called when instance is passed as an attribute value', function () { - rect.attr('fill', pattern) - expect(rect.attr('fill')).toBe('url("#' + pattern.id() + '")') - }) - it('is called when instance is passed in a fill() method', function () { - rect.fill(pattern) - expect(rect.attr('fill')).toBe('url("#' + pattern.id() + '")') - }) - }) - - describe('update()', function () { - - it('removes all existing children first', function () { - pattern = draw.pattern(30, 30, function (add) { - add.rect(10, 10).move(10, 10) - add.circle(30) - }) - expect(pattern.children().length).toBe(2) - pattern.update(function (add) { - add.rect(10, 10).move(10, 10) - add.circle(30) - }) - expect(pattern.children().length).toBe(2) - }) - - }) - -}) diff --git a/spec/spec/polygon.js b/spec/spec/polygon.js deleted file mode 100644 index 4cd2ea8..0000000 --- a/spec/spec/polygon.js +++ /dev/null @@ -1,228 +0,0 @@ -describe('Polygon', function() { - var polygon - - beforeEach(function() { - polygon = draw.polygon('0,0 100,0 100,100 0,100') - }) - - afterEach(function() { - draw.clear() - }) - - describe('()', function(){ - it('falls back to a single point without an argument', function() { - polygon = draw.polygon() - expect(polygon.attr('points')).toBe('0,0') - }) - }) - - - describe('array()', function() { - it('returns an instance of SVG.PointArray', function() { - expect(polygon.array() instanceof SVG.PointArray).toBeTruthy() - }) - it('returns the value stored in the private variable _array', function() { - expect(polygon.array()).toBe(polygon._array) - }) - }) - - describe('x()', function() { - it('returns the value of x without an argument', function() { - expect(polygon.x()).toBe(0) - }) - it('sets the value of x with the first argument', function() { - polygon.x(123) - var box = polygon.bbox() - expect(box.x).toBe(123) - }) - }) - - describe('y()', function() { - it('returns the value of y without an argument', function() { - expect(polygon.y()).toBe(0) - }) - it('sets the value of y with the first argument', function() { - polygon.y(345) - var box = polygon.bbox() - expect(box.y).toBe(345) - }) - }) - - describe('cx()', function() { - it('returns the value of cx without an argument', function() { - expect(polygon.cx()).toBe(50) - }) - it('sets the value of cx with the first argument', function() { - polygon.cx(123) - var box = polygon.bbox() - expect(box.cx).toBe(123) - }) - }) - - describe('cy()', function() { - it('returns the value of cy without an argument', function() { - expect(polygon.cy()).toBe(50) - }) - it('sets the value of cy with the first argument', function() { - polygon.cy(345) - var box = polygon.bbox() - expect(box.cy).toBe(345) - }) - }) - - describe('move()', function() { - it('sets the x and y position', function() { - polygon.move(123,456) - var box = polygon.bbox() - expect(box.x).toBe(123) - expect(box.y).toBe(456) - }) - }) - - describe('dx()', function() { - it('moves the x positon of the element relative to the current position', function() { - polygon.move(50,60) - polygon.dx(100) - var box = polygon.bbox() - expect(box.x).toBe(150) - }) - }) - - describe('dy()', function() { - it('moves the y positon of the element relative to the current position', function() { - polygon.move(50, 60) - polygon.dy(120) - var box = polygon.bbox() - expect(box.y).toBe(180) - }) - }) - - describe('dmove()', function() { - it('moves the x and y positon of the element relative to the current position', function() { - polygon.move(50,60) - polygon.dmove(80, 25) - var box = polygon.bbox() - expect(box.x).toBe(130) - expect(box.y).toBe(85) - }) - }) - - describe('center()', function() { - it('sets the cx and cy position', function() { - polygon.center(321,567) - var box = polygon.bbox() - expect(box.x).toBe(271) - expect(box.y).toBe(517) - }) - }) - - describe('width()', function() { - it('sets the width and height of the element', function() { - polygon.width(987) - var box = polygon.bbox() - expect(box.width).toBeCloseTo(987) - }) - it('gets the width and height of the element without an argument', function() { - polygon.width(789) - expect(polygon.width()).toBeCloseTo(789) - }) - }) - - describe('height()', function() { - it('sets the height and height of the element', function() { - polygon.height(987) - var box = polygon.bbox() - expect(box.height).toBeCloseTo(987) - }) - it('gets the height and height of the element without an argument', function() { - polygon.height(789) - expect(polygon.height()).toBeCloseTo(789) - }) - }) - - describe('size()', function() { - it('should define the width and height of the element', function() { - polygon.size(987,654) - var box = polygon.bbox() - expect(box.width).toBeCloseTo(987) - expect(box.height).toBeCloseTo(654) - }) - it('defines the width and height proportionally with only the width value given', function() { - var box = polygon.bbox() - polygon.size(500) - expect(polygon.width()).toBe(500) - expect(polygon.width() / polygon.height()).toBe(box.width / box.height) - }) - it('defines the width and height proportionally with only the height value given', function() { - var box = polygon.bbox() - polygon.size(null, 525) - expect(polygon.height()).toBe(525) - expect(polygon.width() / polygon.height()).toBe(box.width / box.height) - }) - }) - - describe('scale()', function() { - it('should scale the element universally with one argument', function() { - var box1 = polygon.rbox() - , box2 = polygon.scale(2).rbox() - - expect(box2.width).toBe(box1.width * 2) - expect(box2.height).toBe(box1.height * 2) - }) - it('should scale the element over individual x and y axes with two arguments', function() { - var box1 = polygon.rbox() - , box2 = polygon.scale(2, 3.5).rbox() - - expect(box2.width).toBe(box1.width * 2) - expect(box2.height).toBe(box1.height * 3.5) - }) - }) - - describe('translate()', function() { - it('sets the translation of an element', function() { - polygon.transform({ tx: 12, ty: 12 }) - expect(polygon.node.getAttribute('transform')).toBe('matrix(1,0,0,1,12,12)') - }) - }) - - describe('plot()', function() { - it('changes the points attribute of the underlying polygon node when a string is passed', function() { - var pointString = '100,50 75,20 200,100' - , pointArray = new SVG.PointArray(pointString) - - expect(polygon.plot(pointString)).toBe(polygon) - expect(polygon.attr('points')).toBe(pointArray.toString()) - }) - it('returns the point array when no arguments are passed', function () { - expect(polygon.plot()).toBe(polygon.array()) - }) - it('clears the array cache when a value is passed', function() { - polygon = draw.polygon([100,50,75,20,200,100]) - expect(polygon._array instanceof SVG.PointArray).toBeTruthy() - polygon.plot('100,50 75,20 200,100') - expect(polygon._array).toBeUndefined() - }) - it('applies a given polygon string value as is', function() { - var polyString = '100,50,75,20,200,100' - - polygon = draw.polygon(polyString) - expect(polygon.attr('points')).toBe(polyString) - }) - it('does not parse and cache a given string value to SVG.PointArray', function() { - polygon = draw.polygon('100,50 75,20 200,100') - expect(polygon._array).toBeUndefined() - }) - it('caches a given array value', function() { - polygon = draw.polygon([100,50,75,20,200,100]) - expect(polygon._array instanceof SVG.PointArray).toBeTruthy() - }) - }) - - describe('clear()', function() { - it('clears the cached SVG.PointArray instance', function() { - polygon = draw.polygon([100,50,75,20,200,100]) - polygon.clear() - expect(polygon._array).toBeUndefined() - }) - }) -}) diff --git a/spec/spec/polyline.js b/spec/spec/polyline.js deleted file mode 100644 index 7fbea18..0000000 --- a/spec/spec/polyline.js +++ /dev/null @@ -1,228 +0,0 @@ -describe('Polyline', function() { - var polyline - - beforeEach(function() { - polyline = draw.polyline('0,0 100,0 100,100 0,100') - }) - - afterEach(function() { - draw.clear() - }) - - describe('()', function(){ - it('falls back to a single point without an argument', function() { - polyline = draw.polyline() - expect(polyline.attr('points')).toBe('0,0') - }) - }) - - - describe('array()', function() { - it('returns an instance of SVG.PointArray', function() { - expect(polyline.array() instanceof SVG.PointArray).toBeTruthy() - }) - it('returns the value stored in the private variable _array', function() { - expect(polyline.array()).toBe(polyline._array) - }) - }) - - describe('x()', function() { - it('returns the value of x without an argument', function() { - expect(polyline.x()).toBe(0) - }) - it('sets the value of x with the first argument', function() { - polyline.x(123) - var box = polyline.bbox() - expect(box.x).toBe(123) - }) - }) - - describe('y()', function() { - it('returns the value of y without an argument', function() { - expect(polyline.y()).toBe(0) - }) - it('sets the value of y with the first argument', function() { - polyline.y(345) - var box = polyline.bbox() - expect(box.y).toBe(345) - }) - }) - - describe('cx()', function() { - it('returns the value of cx without an argument', function() { - expect(polyline.cx()).toBe(50) - }) - it('sets the value of cx with the first argument', function() { - polyline.cx(123) - var box = polyline.bbox() - expect(box.cx).toBe(123) - }) - }) - - describe('cy()', function() { - it('returns the value of cy without an argument', function() { - expect(polyline.cy()).toBe(50) - }) - it('sets the value of cy with the first argument', function() { - polyline.cy(345) - var box = polyline.bbox() - expect(box.cy).toBe(345) - }) - }) - - describe('move()', function() { - it('sets the x and y position', function() { - polyline.move(123,456) - var box = polyline.bbox() - expect(box.x).toBe(123) - expect(box.y).toBe(456) - }) - }) - - describe('dx()', function() { - it('moves the x positon of the element relative to the current position', function() { - polyline.move(50,60) - polyline.dx(100) - var box = polyline.bbox() - expect(box.x).toBe(150) - }) - }) - - describe('dy()', function() { - it('moves the y positon of the element relative to the current position', function() { - polyline.move(50, 60) - polyline.dy(120) - var box = polyline.bbox() - expect(box.y).toBe(180) - }) - }) - - describe('dmove()', function() { - it('moves the x and y positon of the element relative to the current position', function() { - polyline.move(50,60) - polyline.dmove(80, 25) - var box = polyline.bbox() - expect(box.x).toBe(130) - expect(box.y).toBe(85) - }) - }) - - describe('center()', function() { - it('sets the cx and cy position', function() { - polyline.center(321,567) - var box = polyline.bbox() - expect(box.x).toBe(271) - expect(box.y).toBe(517) - }) - }) - - describe('width()', function() { - it('sets the width and height of the element', function() { - polyline.width(987) - var box = polyline.bbox() - expect(box.width).toBeCloseTo(987, 1) - }) - it('gets the width and height of the element without an argument', function() { - polyline.width(789) - expect(polyline.width()).toBeCloseTo(789) - }) - }) - - describe('height()', function() { - it('sets the height and height of the element', function() { - polyline.height(987) - var box = polyline.bbox() - expect(box.height).toBeCloseTo(987) - }) - it('gets the height and height of the element without an argument', function() { - polyline.height(789) - expect(polyline.height()).toBeCloseTo(789) - }) - }) - - describe('size()', function() { - it('should define the width and height of the element', function() { - polyline.size(987,654) - var box = polyline.bbox() - expect(box.width).toBeCloseTo(987) - expect(box.height).toBeCloseTo(654) - }) - it('defines the width and height proportionally with only the width value given', function() { - var box = polyline.bbox() - polyline.size(500) - expect(polyline.width()).toBe(500) - expect(polyline.width() / polyline.height()).toBe(box.width / box.height) - }) - it('defines the width and height proportionally with only the height value given', function() { - var box = polyline.bbox() - polyline.size(null, 525) - expect(polyline.height()).toBe(525) - expect(polyline.width() / polyline.height()).toBe(box.width / box.height) - }) - }) - - describe('scale()', function() { - it('should scale the element universally with one argument', function() { - var box1 = polyline.rbox() - , box2 = polyline.scale(2).rbox() - - expect(box2.width).toBe(box1.width * 2) - expect(box2.height).toBe(box1.height * 2) - }) - it('should scale the element over individual x and y axes with two arguments', function() { - var box1 = polyline.rbox() - , box2 = polyline.scale(2, 3.5).rbox() - - expect(box2.width).toBe(box1.width * 2) - expect(box2.height).toBe(box1.height * 3.5) - }) - }) - - describe('translate()', function() { - it('sets the translation of an element', function() { - polyline.transform({ tx: 12, ty: 12 }) - expect(polyline.node.getAttribute('transform')).toBe('matrix(1,0,0,1,12,12)') - }) - }) - - describe('plot()', function() { - it('change the points attribute of the underlying polyline node when a string is passed', function() { - var pointString = '100,50 75,20 200,100' - , pointArray = new SVG.PointArray(pointString) - - expect(polyline.plot(pointString)).toBe(polyline) - expect(polyline.attr('points')).toBe(pointArray.toString()) - }) - it('return the point array when no arguments are passed', function () { - expect(polyline.plot()).toBe(polyline.array()) - }) - it('clears the array cache when a value is passed', function() { - polyline = draw.polyline([100,50,75,20,200,100]) - expect(polyline._array instanceof SVG.PointArray).toBeTruthy() - polyline.plot('100,50 75,20 200,100') - expect(polyline._array).toBeUndefined() - }) - it('applies a given polyline string value as is', function() { - var polyString = '100,50,75,20,200,100' - - polyline = draw.polyline(polyString) - expect(polyline.attr('points')).toBe(polyString) - }) - it('does not parse and cache a given string value to SVG.PointArray', function() { - polyline = draw.polyline('100,50 75,20 200,100') - expect(polyline._array).toBeUndefined() - }) - it('caches a given array value', function() { - polyline = draw.polyline([100,50,75,20,200,100]) - expect(polyline._array instanceof SVG.PointArray).toBeTruthy() - }) - }) - - describe('clear()', function() { - it('clears the cached SVG.PointArray instance', function() { - polyline = draw.polyline([100,50,75,20,200,100]) - polyline.clear() - expect(polyline._array).toBeUndefined() - }) - }) -}) diff --git a/spec/spec/rect.js b/spec/spec/rect.js deleted file mode 100644 index b07e10b..0000000 --- a/spec/spec/rect.js +++ /dev/null @@ -1,171 +0,0 @@ -describe('Rect', function() { - var rect - - beforeEach(function() { - rect = draw.rect(220,100) - }) - - afterEach(function() { - draw.clear() - }) - - describe('x()', function() { - it('should return the value of x without an argument', function() { - expect(rect.x()).toBe(0) - }) - it('should set the value of x with the first argument', function() { - rect.x(123) - expect(rect.node.getAttribute('x')).toBe('123') - }) - }) - - describe('y()', function() { - it('should return the value of y without an argument', function() { - expect(rect.y()).toBe(0) - }) - it('should set the value of y with the first argument', function() { - rect.y(345) - expect(rect.node.getAttribute('y')).toBe('345') - }) - }) - - describe('cx()', function() { - it('should return the value of cx without an argument', function() { - expect(rect.cx()).toBe(110) - }) - it('should set the value of cx with the first argument', function() { - rect.cx(123) - var box = rect.bbox() - expect(box.cx).toBe(123) - }) - }) - - describe('cy()', function() { - it('should return the value of cy without an argument', function() { - expect(rect.cy()).toBe(50) - }) - it('should set the value of cy with the first argument', function() { - rect.cy(345) - var box = rect.bbox() - expect(box.cy).toBe(345) - }) - }) - - describe('radius()', function() { - it('should set the rx and ry', function() { - rect.radius(10,20) - expect(rect.node.getAttribute('rx')).toBe('10') - expect(rect.node.getAttribute('ry')).toBe('20') - }) - it('should set the rx and ry if only rx given', function() { - rect.radius(30) - expect(rect.node.getAttribute('rx')).toBe('30') - expect(rect.node.getAttribute('ry')).toBe('30') - }) - }) - - describe('move()', function() { - it('should set the x and y position', function() { - rect.move(123,456) - expect(rect.node.getAttribute('x')).toBe('123') - expect(rect.node.getAttribute('y')).toBe('456') - }) - }) - - describe('dx()', function() { - it('moves the x positon of the element relative to the current position', function() { - rect.move(50,60) - rect.dx(100) - expect(rect.node.getAttribute('x')).toBe('150') - }) - }) - - describe('dy()', function() { - it('moves the y positon of the element relative to the current position', function() { - rect.move(50,60) - rect.dy(120) - expect(rect.node.getAttribute('y')).toBe('180') - }) - }) - - describe('dmove()', function() { - it('moves the x and y positon of the element relative to the current position', function() { - rect.move(50,60) - rect.dmove(80, 25) - expect(rect.node.getAttribute('x')).toBe('130') - expect(rect.node.getAttribute('y')).toBe('85') - }) - }) - - describe('center()', function() { - it('should set the cx and cy position', function() { - rect.center(321,567) - var box = rect.bbox() - expect(box.cx).toBe(321) - expect(box.cy).toBe(567) - }) - }) - - describe('width()', function() { - it('sets the width of the element', function() { - rect.width(789) - expect(rect.node.getAttribute('width')).toBe('789') - }) - it('gets the width of the element if the argument is null', function() { - expect(rect.width().toString()).toBe(rect.node.getAttribute('width')) - }) - }) - - describe('height()', function() { - it('sets the height of the element', function() { - rect.height(1236) - expect(rect.node.getAttribute('height')).toBe('1236') - }) - it('gets the height of the element if the argument is null', function() { - expect(rect.height().toString()).toBe(rect.node.getAttribute('height')) - }) - }) - - describe('size()', function() { - it('should define the width and height of the element', function() { - rect.size(987,654) - expect(rect.node.getAttribute('width')).toBe('987') - expect(rect.node.getAttribute('height')).toBe('654') - }) - it('defines the width and height proportionally with only the width value given', function() { - var box = rect.bbox() - rect.size(500) - expect(rect.width()).toBe(500) - expect(rect.width() / rect.height()).toBe(box.width / box.height) - }) - it('defines the width and height proportionally with only the height value given', function() { - var box = rect.bbox() - rect.size(null, 525) - expect(rect.height()).toBe(525) - expect(rect.width() / rect.height()).toBe(box.width / box.height) - }) - }) - - describe('scale()', function() { - it('should scale the element universally with one argument', function() { - var box = rect.scale(2).rbox() - - expect(box.width).toBe(rect.attr('width') * 2) - expect(box.height).toBe(rect.attr('height') * 2) - }) - it('should scale the element over individual x and y axes with two arguments', function() { - var box = rect.scale(2, 3.5).rbox() - - expect(box.width).toBe(rect.attr('width') * 2) - expect(box.height).toBe(rect.attr('height') * 3.5) - }) - }) - - describe('translate()', function() { - it('should set the translation of an element', function() { - rect.transform({ tx: 12, ty: 12 }) - expect(rect.node.getAttribute('transform')).toBe('matrix(1,0,0,1,12,12)') - }) - }) - -}) diff --git a/spec/spec/regex.js b/spec/spec/regex.js deleted file mode 100644 index 9a14bec..0000000 --- a/spec/spec/regex.js +++ /dev/null @@ -1,92 +0,0 @@ -describe('Regex', function() { - - describe('matchers', function() { - - describe('numberAndUnit', function() { - var match - - it('is true with a positive unit value', function() { - match = ('10%').match(SVG.regex.numberAndUnit) - expect(match[1]).toBe('10') - expect(match[5]).toBe('%') - }) - it('is true with a negative unit value', function() { - match = ('-11%').match(SVG.regex.numberAndUnit) - expect(match[1]).toBe('-11') - expect(match[5]).toBe('%') - }) - it('is false with a positive unit value', function() { - match = ('NotAUnit').match(SVG.regex.numberAndUnit) - expect(match).toBeNull() - }) - - it('is true with a number', function() { - ["1", "-1", "+15", "1.55", ".5", "5.", "1.3e2", "1E-4", "1e+12"].forEach(function(s) { - expect(SVG.regex.numberAndUnit.test(s)).toBeTruthy() - }) - }) - it('is false with a faulty number', function() { - ["+-1", "1.2.3", "1+1", "1e4.5", ".5.", "1f5", "."].forEach(function(s) { - expect(SVG.regex.numberAndUnit.test(s)).toBeFalsy() - }) - }) - it('is true with a number with unit', function() { - ["1px", "-1em", "+15%", "1.55s", ".5pt", "5.deg", "1.3e2rad", "1E-4grad", "1e+12cm"].forEach(function(s) { - expect(SVG.regex.numberAndUnit.test(s)).toBeTruthy() - }) - }) - it('is false with a faulty number or wrong unit', function() { - ["1em1", "-1eq,5"].forEach(function(s) { - expect(SVG.regex.numberAndUnit.test(s)).toBeFalsy() - }) - }) - - }) - }) - - describe('testers', function() { - - describe('isHex', function() { - it('is true with a three based hex', function() { - expect(SVG.regex.isHex.test('#f09')).toBeTruthy() - }) - it('is true with a six based hex', function() { - expect(SVG.regex.isHex.test('#fe0198')).toBeTruthy() - }) - it('is false with a faulty hex', function() { - expect(SVG.regex.isHex.test('###')).toBeFalsy() - expect(SVG.regex.isHex.test('#0')).toBeFalsy() - expect(SVG.regex.isHex.test('f06')).toBeFalsy() - }) - }) - - describe('isRgb', function() { - it('is true with an rgb value', function() { - expect(SVG.regex.isRgb.test('rgb(255,66,100)')).toBeTruthy() - }) - it('is false with a non-rgb value', function() { - expect(SVG.regex.isRgb.test('hsb(255, 100, 100)')).toBeFalsy() - }) - }) - - describe('isNumber', function() { - - it('is true with a number', function() { - ["1", "-1", "+15", "1.55", ".5", "5.", "1.3e2", "1E-4", "1e+12"].forEach(function(s) { - expect(SVG.regex.isNumber.test(s)).toBeTruthy() - }) - }) - - it('is false with a faulty number', function() { - ["1a", "+-1", "1.2.3", "1+1", "1e4.5", ".5.", "1f5", "."].forEach(function(s) { - expect(SVG.regex.isNumber.test(s)).toBeFalsy() - }) - }) - - }) - - - - }) - -})
\ No newline at end of file diff --git a/spec/spec/selector.js b/spec/spec/selector.js deleted file mode 100644 index 470eaef..0000000 --- a/spec/spec/selector.js +++ /dev/null @@ -1,64 +0,0 @@ -describe('Selector', function() { - - describe('SVG()', function() { - it('gets an element\'s instance by id', function() { - var rect = draw.rect(111, 333) - - expect(SVG('#'+rect.id())).toBe(rect) - }) - // it('gets a referenced element by attribute value', function() { - // var rect = draw.defs().rect(100, 100) - // , use = draw.use(rect) - // , mark = draw.marker(10, 10) - // , path = draw.path(svgPath).marker('end', mark) - // - // expect(SVG('#'+use.attr('href'))).toBe(rect) - // expect(SVG('#'+path.attr('marker-end'))).toBe(mark) - // }) - }) - - describe('find()', function() { - var e1, e2, e3, e4 ,e5 - - beforeEach(function() { - e1 = draw.rect(100, 100).addClass('selectable-element') - e2 = draw.rect(100, 100).addClass('unselectable-element') - e3 = draw.rect(100, 100).addClass('selectable-element') - e4 = draw.rect(100, 100).addClass('unselectable-element') - e5 = draw.rect(100, 100).addClass('selectable-element') - }) - it('gets all elements with a given class name', function() { - expect(SVG.find('rect.selectable-element')).toEqual([e1, e3, e5]) - }) - it('returns an Array', function() { - expect(SVG.find('rect.selectable-element') instanceof Array).toBe(true) - }) - }) - - describe('Parent#find()', function() { - it('gets all elements with a given class name inside a given element', function() { - var group = draw.group() - , e1 = draw.rect(100, 100).addClass('selectable-element') - , e2 = draw.rect(100, 100).addClass('unselectable-element') - , e3 = group.rect(100, 100).addClass('selectable-element') - , e4 = draw.rect(100, 100).addClass('unselectable-element') - , e5 = group.rect(100, 100).addClass('selectable-element') - - expect(group.find('rect.selectable-element')).toEqual([e3, e5]) - }) - }) - - describe('Parent#findOne()', function() { - it('gets all elements with a given class name inside a given element', function() { - var group = draw.group() - , e1 = draw.rect(100, 100).addClass('selectable-element') - , e2 = draw.rect(100, 100).addClass('unselectable-element') - , e3 = group.rect(100, 100).addClass('selectable-element') - , e4 = draw.rect(100, 100).addClass('unselectable-element') - , e5 = group.rect(100, 100).addClass('selectable-element') - - expect(group.findOne('rect.selectable-element')).toBe(e3) - }) - }) - -}) diff --git a/spec/spec/sugar.js b/spec/spec/sugar.js deleted file mode 100644 index d247242..0000000 --- a/spec/spec/sugar.js +++ /dev/null @@ -1,357 +0,0 @@ -describe('Sugar', function () { - - var rect - - beforeEach(function () { - draw.attr('viewBox', null) - }) - - afterEach(function () { - draw.clear() - }) - - describe('fill()', function () { - beforeEach(function () { - rect = draw.rect(100, 100) - }) - - afterEach(function () { - rect.remove() - }) - - it('returns the node reference', function () { - expect(rect.fill('red')).toBe(rect) - }) - - it('sets the given value', function () { - expect(rect.fill('red').attr('fill')).toBe('red') - }) - - it('sets the given value with object given', function () { - rect.fill({ color: 'red', opacity: 0.5, rule: 'odd' }) - expect(rect.attr('fill')).toBe('red') - expect(rect.attr('fill-opacity')).toBe(0.5) - expect(rect.attr('fill-rule')).toBe('odd') - }) - - it('returns fill color when called as getter', function () { - rect.fill('red') - expect(rect.fill()).toBe('red') - }) - }) - - describe('rotate()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'transform') - }) - - afterEach(function () { - rect.remove() - rect.transform.calls.reset() - }) - - it('redirects to transform()', function () { - rect.rotate(1, 2, 3) - expect(rect.transform).toHaveBeenCalledWith({ rotate: 1, ox: 2, oy: 3 }, true) - }) - }) - - describe('skew()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'transform') - }) - - afterEach(function () { - rect.remove() - rect.transform.calls.reset() - }) - - it('redirects to transform() with no argument', function () { - rect.skew() - expect(rect.transform).toHaveBeenCalledWith({ skew: [ undefined, undefined ], ox: undefined, oy: undefined }, true) - }) - - it('redirects to transform() with one argument', function () { - rect.skew(5) - expect(rect.transform).toHaveBeenCalledWith({ skew: 5, ox: undefined, oy: undefined }, true) - }) - - it('redirects to transform() with two argument', function () { - rect.skew(5, 6) - expect(rect.transform).toHaveBeenCalledWith({ skew: [ 5, 6 ], ox: undefined, oy: undefined }, true) - }) - - it('redirects to transform() with three arguments', function () { - rect.skew(5, 6, 7) - expect(rect.transform).toHaveBeenCalledWith({ skew: 5, ox: 6, oy: 7 }, true) - }) - - it('redirects to transform() with four arguments', function () { - rect.skew(5, 6, 7, 8) - expect(rect.transform).toHaveBeenCalledWith({ skew: [ 5, 6 ], ox: 7, oy: 8 }, true) - }) - }) - - describe('scale()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'transform') - }) - - afterEach(function () { - rect.remove() - rect.transform.calls.reset() - }) - - it('redirects to transform() with no argument', function () { - rect.scale() - expect(rect.transform).toHaveBeenCalledWith({ scale: [ undefined, undefined ], ox: undefined, oy: undefined }, true) - }) - - it('redirects to transform() with one argument', function () { - rect.scale(5) - expect(rect.transform).toHaveBeenCalledWith({ scale: 5, ox: undefined, oy: undefined }, true) - }) - - it('redirects to transform() with two argument', function () { - rect.scale(5, 6) - expect(rect.transform).toHaveBeenCalledWith({ scale: [ 5, 6 ], ox: undefined, oy: undefined }, true) - }) - - it('redirects to transform() with three arguments', function () { - rect.scale(5, 6, 7) - expect(rect.transform).toHaveBeenCalledWith({ scale: 5, ox: 6, oy: 7 }, true) - }) - - it('redirects to transform() with four arguments', function () { - rect.scale(5, 6, 7, 8) - expect(rect.transform).toHaveBeenCalledWith({ scale: [ 5, 6 ], ox: 7, oy: 8 }, true) - }) - }) - - describe('translate()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'transform') - }) - - afterEach(function () { - rect.remove() - rect.transform.calls.reset() - }) - - it('redirects to transform()', function () { - rect.translate(1, 2) - expect(rect.transform).toHaveBeenCalledWith({ translate: [ 1, 2 ] }, true) - }) - }) - - describe('flip()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'transform') - }) - - afterEach(function () { - rect.remove() - rect.transform.calls.reset() - }) - - it('redirects to transform()', function () { - rect.flip('x', 2) - expect(rect.transform).toHaveBeenCalledWith({ flip: 'x', origin: 2 }, true) - }) - - it('sets flip to "both" when calling without anything', function () { - rect.flip() - expect(rect.transform).toHaveBeenCalledWith({ flip: 'both', origin: 'center' }, true) - }) - - // this works because only x and y are valid flip values. Evereything else flips on both axis - it('sets flip to both and origin to number when called with origin only', function () { - rect.flip(5) - expect(rect.transform).toHaveBeenCalledWith({ flip: 'both', origin: 5 }, true) - }) - }) - - describe('matrix()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'attr') - }) - - afterEach(function () { - rect.remove() - rect.attr.calls.reset() - }) - - it('redirects to attr() directly with one argument', function () { - rect.matrix([ 1, 2, 3, 4, 5, 6 ]) - expect(rect.attr).toHaveBeenCalledWith('transform', new SVG.Matrix([ 1, 2, 3, 4, 5, 6 ])) - }) - - it('redirects to attr() directly with 6 arguments', function () { - rect.matrix(1, 2, 3, 4, 5, 6) - expect(rect.attr).toHaveBeenCalledWith('transform', new SVG.Matrix([ 1, 2, 3, 4, 5, 6 ])) - }) - }) - - describe('opacity()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'attr') - }) - - afterEach(function () { - rect.remove() - rect.attr.calls.reset() - }) - - it('redirects to attr() directly', function () { - rect.opacity(0.5) - expect(rect.attr).toHaveBeenCalledWith('opacity', 0.5) - }) - }) - - describe('dx() / dy()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'x').and.callThrough() - spyOn(rect, 'y').and.callThrough() - }) - - afterEach(function () { - rect.remove() - rect.x.calls.reset() - rect.y.calls.reset() - }) - - it('redirects to x() / y() with adding the current value', function () { - rect.dx(5) - rect.dy(5) - expect(rect.x).toHaveBeenCalledWith(jasmine.objectContaining(new SVG.Number('5'))) - expect(rect.y).toHaveBeenCalledWith(jasmine.objectContaining(new SVG.Number('5'))) - }) - - it('allows to add a percentage value', function () { - rect.move('5%', '5%') - - rect.dx('5%') - rect.dy('5%') - - expect(rect.x).toHaveBeenCalledWith(jasmine.objectContaining(new SVG.Number('10%'))) - expect(rect.y).toHaveBeenCalledWith(jasmine.objectContaining(new SVG.Number('10%'))) - }) - - it('allows to add a percentage value when no x/y is set', function () { - rect.dx('5%') - rect.dy('5%') - - expect(rect.x).toHaveBeenCalledWith(jasmine.objectContaining(new SVG.Number('5%'))) - expect(rect.y).toHaveBeenCalledWith(jasmine.objectContaining(new SVG.Number('5%'))) - }) - }) - - describe('dmove()', function () { - var rect, spy, undefined - - beforeEach(function () { - rect = draw.rect(100, 100) - spyOn(rect, 'dx').and.callThrough() - spyOn(rect, 'dy').and.callThrough() - }) - - afterEach(function () { - rect.remove() - rect.dx.calls.reset() - rect.dy.calls.reset() - }) - - it('redirects to dx() / dy() directly', function () { - rect.dmove(5, 5) - expect(rect.dx).toHaveBeenCalledWith(5) - expect(rect.dy).toHaveBeenCalledWith(5) - }) - }) - - describe('font()', function () { - var text, spy, undefined - - beforeEach(function () { - text = draw.text(loremIpsum) - spyOn(text, 'leading') - spyOn(text, 'attr') - }) - - afterEach(function () { - text.remove() - text.leading.calls.reset() - text.attr.calls.reset() - }) - - it('sets leading when given', function () { - text.font({ leading: 3 }) - expect(text.leading).toHaveBeenCalledWith(3) - }) - - it('sets text-anchor when anchor given', function () { - text.font({ anchor: 'start' }) - expect(text.attr).toHaveBeenCalledWith('text-anchor', 'start') - }) - - it('sets all font properties via attr()', function () { - text.font({ - size: 20, - family: 'Verdana', - weight: 'bold', - stretch: 'wider', - variant: 'small-caps', - style: 'italic' - }) - expect(text.attr).toHaveBeenCalledWith('font-size', 20) - expect(text.attr).toHaveBeenCalledWith('font-family', 'Verdana') - expect(text.attr).toHaveBeenCalledWith('font-weight', 'bold') - expect(text.attr).toHaveBeenCalledWith('font-stretch', 'wider') - expect(text.attr).toHaveBeenCalledWith('font-variant', 'small-caps') - expect(text.attr).toHaveBeenCalledWith('font-style', 'italic') - }) - - it('redirects all other stuff directly to attr()', function () { - text.font({ - foo: 'bar', - bar: 'baz' - }) - expect(text.attr).toHaveBeenCalledWith('foo', 'bar') - expect(text.attr).toHaveBeenCalledWith('bar', 'baz') - }) - - it('sets key value pair when called with 2 parameters', function () { - text.font('size', 20) - expect(text.attr).toHaveBeenCalledWith('font-size', 20) - }) - - it('gets value if called with one parameter', function () { - text.font('size') - expect(text.attr).toHaveBeenCalledWith('font-size', undefined) - }) - }) - -}) diff --git a/spec/spec/svg.js b/spec/spec/svg.js deleted file mode 100644 index 41fce3d..0000000 --- a/spec/spec/svg.js +++ /dev/null @@ -1,128 +0,0 @@ -describe('SVG', function() { - - describe('()', function() { - var drawing, wrapper, wrapperHTML, rect - - beforeEach(function() { - wrapper = document.createElementNS('http://www.w3.org/2000/svg', 'svg') - wrapper.id = 'testSvg' - wrapperHTML = document.createElement('div') - wrapperHTML.id = 'testDiv' - rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect') - document.documentElement.appendChild(wrapper) - document.documentElement.appendChild(wrapperHTML) - }) - - afterEach(function() { - wrapper.parentNode.removeChild(wrapper) - wrapperHTML.parentNode.removeChild(wrapperHTML) - }) - - it('creates an instanceof SVG.Svg without any argument', function() { - expect(SVG() instanceof SVG.Svg).toBe(true) - expect(SVG().node.nodeName).toBe('svg') - }) - - it('creates an instanceof SVG.Dom with html node', function() { - var el = SVG(wrapperHTML) - expect(el instanceof SVG.Dom).toBe(true) - expect(el.node).toBe(wrapperHTML) - }) - - it('creates new SVG.Dom when called with css selector pointing to html node', function() { - var el = SVG('#testDiv') - expect(el instanceof SVG.Dom).toBe(true) - expect(el.node).toBe(wrapperHTML) - }) - - it('creates an instanceof SVG.Svg with svg node', function() { - var doc = SVG(wrapper) - expect(doc instanceof SVG.Svg).toBe(true) - expect(doc.node).toBe(wrapper) - }) - - it('creates new SVG.Svg when called with css selector pointing to svg node', function() { - var doc = SVG('#testSvg') - expect(doc instanceof SVG.Svg).toBe(true) - expect(doc.node).toBe(wrapper) - }) - - it('adopts any SVGElement', function() { - expect(SVG(rect) instanceof SVG.Rect).toBe(true) - expect(SVG(rect).node).toBe(rect) - }) - - it('creates an instanceof SVG.Svg when importing a whole svg', function() { - var doc = SVG('<svg width="200"><rect></rect></svg>') - - expect(doc instanceof SVG.Svg).toBe(true) - expect(doc.node.nodeName).toBe('svg') - expect(doc.width()).toBe(200) - expect(doc.get(0).node.nodeName).toBe('rect') - }) - - it('creates SVG.Shape from any shape string', function() { - var rect = SVG('<rect width="200" height="100" />') - , circle = SVG('<circle r="200" />') - - expect(rect instanceof SVG.Rect).toBe(true) - expect(rect.node.nodeName).toBe('rect') - expect(rect.width()).toBe(200) - - expect(circle instanceof SVG.Circle).toBe(true) - expect(circle.node.nodeName).toBe('circle') - expect(circle.attr('r')).toBe(200) - }) - - it('returns the argument when called with any SVG.Element', function() { - drawing = SVG(wrapper) - expect(SVG(drawing)).toBe(drawing) - }) - }) - - describe('create()', function() { - it('creates an element with given node name and return it', function() { - var element = SVG.create('rect') - - expect(element.nodeName).toBe('rect') - }) - }) - - describe('extend()', function() { - it('adds all functions in the given object to the target object', function() { - SVG.extend(SVG.Rect, { - soft: function() { - return this.opacity(0.2) - } - }) - - expect(typeof SVG.Rect.prototype.soft).toBe('function') - expect(draw.rect(100,100).soft().attr('opacity')).toBe(0.2) - }) - it('accepts and extend multiple modules at once', function() { - SVG.extend([SVG.Rect, SVG.Ellipse, SVG.Path], { - soft: function() { - return this.opacity(0.5) - } - }) - - expect(typeof SVG.Rect.prototype.soft).toBe('function') - expect(draw.rect(100,100).soft().attr('opacity')).toBe(0.5) - expect(typeof SVG.Ellipse.prototype.soft).toBe('function') - expect(draw.ellipse(100,100).soft().attr('opacity')).toBe(0.5) - expect(typeof SVG.Path.prototype.soft).toBe('function') - expect(draw.path().soft().attr('opacity')).toBe(0.5) - }) - // it('ignores non existant objects', function() { - // SVG.extend([SVG.Rect, SVG.Bogus], { - // soft: function() { - // return this.opacity(0.3) - // } - // }) - // - // expect(typeof SVG.Rect.prototype.soft).toBe('function') - // expect(draw.rect(100,100).soft().attr('opacity')).toBe(0.3) - // expect(typeof SVG.Bogus).toBe('undefined') - // }) - }) -}) diff --git a/spec/spec/symbol.js b/spec/spec/symbol.js deleted file mode 100644 index a4febbd..0000000 --- a/spec/spec/symbol.js +++ /dev/null @@ -1,16 +0,0 @@ -describe('Symbol', function() { - describe('()', function() { - var element - - beforeEach(function() { - element = draw.symbol() - }) - - it('creates an instance of SVG.Symbol', function() { - expect(element instanceof SVG.Symbol).toBeTruthy() - }) - it('is an instance of SVG.Container', function() { - expect(element instanceof SVG.Container).toBeTruthy() - }) - }) -})
\ No newline at end of file diff --git a/spec/spec/textpath.js b/spec/spec/textpath.js deleted file mode 100644 index 9d4577f..0000000 --- a/spec/spec/textpath.js +++ /dev/null @@ -1,98 +0,0 @@ -describe('TextPath', function() { - var text - , path - , txt = 'We go up, then we go down, then up again' - , data = 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100' - - beforeEach(function() { - text = draw.text(txt) - path = draw.path(data) - }) - - afterEach(function() { - draw.clear() - }) - - describe('textPath()', function () { - it ('creates a new textPath and uses text and path', function () { - expect(draw.textPath(txt, data)).toEqual(jasmine.any(SVG.TextPath)) - }) - - it ('reuses text and path instances if possible', function () { - const textPath = draw.textPath(text, path) - expect(text.find('textPath')[0]).toBe(textPath) - expect(textPath.reference('href')).toBe(path) - }) - - it ('passes the text into textPath and not text', function () { - const tspan = text.first() - const textPath = draw.textPath(text, path) - expect(textPath.first()).toBe(tspan) - expect(text.first()).toBe(textPath) - }) - }) - - describe('text().path()', function() { - it('returns an instance of TextPath', function() { - expect(text.path(data) instanceof SVG.TextPath).toBe(true) - }) - it('creates a textPath node in the text element', function() { - text.path(data) - expect(text.node.querySelector('textPath')).not.toBe(null) - }) - it('references the passed path', function () { - const textPath = text.path(path) - expect(textPath.reference('href')).toBe(path) - }) - }) - - describe('path().text()', function() { - it('returns an instance of TextPath', function() { - expect(path.text(txt) instanceof SVG.TextPath).toBe(true) - }) - it('creates a text with textPath node and inserts it after the path', function() { - var textPath = path.text(txt) - expect(textPath.parent() instanceof SVG.Text).toBe(true) - expect(SVG.adopt(path.node.nextSibling) instanceof SVG.Text).toBe(true) - }) - it('transplants the node from text to textPath', function () { - let nodesInText = [].slice.call(text.node.childNodes) - var textPath = path.text(txt) - let nodesInTextPath = [].slice.call(textPath.node.childNodes) - expect(nodesInText).toEqual(nodesInTextPath) - }) - }) - - describe('text.textPath()', function() { - it('returns only the first textPath element in a text', function() { - text.path(data) - expect(text.textPath() instanceof SVG.TextPath).toBe(true) - }) - }) - - describe('track()', function() { - it('returns the referenced path instance', function() { - expect(text.path(data).track() instanceof SVG.Path).toBe(true) - }) - }) - - describe('array()', function() { - it('return the path array of the underlying path', function() { - expect(text.path(data).array()).toEqual(new SVG.PathArray(data)) - }) - it('return null if there is no underlying path', function () { - expect(text.path(data).attr('href', null, SVG.xlink).array()).toBe(null) - }) - }) - - describe('plot()', function() { - it('change the array of the underlying path when a string is passed', function() { - expect(text.path().plot(data).array()).toEqual(new SVG.PathArray(data)) - }) - it('return the path array of the underlying path when no arguments is passed', function () { - var textPath = text.path(data) - expect(textPath.plot()).toBe(textPath.array()) - expect(textPath.plot()).not.toBe(null) - }) - }) -}) diff --git a/spec/spec/types/ArrayPolyfill.js b/spec/spec/types/ArrayPolyfill.js deleted file mode 100644 index edf12bd..0000000 --- a/spec/spec/types/ArrayPolyfill.js +++ /dev/null @@ -1,27 +0,0 @@ -/* globals describe, expect, it, jasmine */ - -import { subClassArray } from '../../../src/types/ArrayPolyfill.js' -const { any, createSpy } = jasmine - -describe('ArrayPolyfill.js', function () { - describe('subClassArray()', function () { - it('creates a new class inherited from Array', () => { - const MyArray = subClassArray('myArray', Array) - expect(new MyArray()).toEqual(any(Array)) - expect(new MyArray()).toEqual(any(MyArray)) - }) - - it('sets the name attribute of the class correctly', () => { - const MyArray = subClassArray('myArray', Array) - expect(MyArray.name).toEqual('myArray') - }) - - it('calls the given function on construction', () => { - const spy = createSpy() - const MyArray = subClassArray('myArray', Array, spy) - - new MyArray(1, 2, 3, 4) // eslint-disable-line - expect(spy).toHaveBeenCalledWith(1, 2, 3, 4) - }) - }) -}) diff --git a/spec/spec/use.js b/spec/spec/use.js deleted file mode 100644 index 5935710..0000000 --- a/spec/spec/use.js +++ /dev/null @@ -1,43 +0,0 @@ -describe('Use', function() { - var use - - describe('on a container element', function() { - var rect - - beforeEach(function() { - rect = draw.rect(100,100) - use = draw.use(rect) - }) - - it('creates an instance of SVG.Use', function() { - expect(use instanceof SVG.Use).toBe(true) - }) - - it('sets the target element id to its href attribute', function() { - expect(use.node.getAttributeNS(SVG.namespaces.xlink, 'href')).toBe('#' + rect) - }) - - it('adopts the geometry of the target element', function() { - expect(use.bbox()).toEqual(rect.bbox()) - }) - }) - - describe('on an external path', function() { - var file = 'http://upload.wikimedia.org/wikipedia/commons/8/84/Example.svg' - , id = 'flowRoot1882' - - beforeEach(function() { - use = draw.use(id, file) - }) - - it('creates an instance of SVG.Use', function() { - expect(use instanceof SVG.Use).toBe(true) - }) - - it('sets the target element id and file path to its href attribute', function() { - expect(use.node.getAttributeNS(SVG.namespaces.xlink, 'href')).toBe(file + '#' + id) - }) - - }) - -}) diff --git a/spec/spec/utils.js b/spec/spec/utils.js deleted file mode 100644 index be8262e..0000000 --- a/spec/spec/utils.js +++ /dev/null @@ -1,10 +0,0 @@ -describe('SVG.utils', function() { - describe('degrees()', function() { - it('converts radiant to degrees', function() { - expect(SVG.utils.degrees(Math.PI)).toBe(180) - }) - it('maps to 0 - 360 degree only', function() { - expect(SVG.utils.degrees(2.5 * Math.PI)).toBe(90) - }) - }) -})
\ No newline at end of file diff --git a/spec/spec/utils/adopter.js b/spec/spec/utils/adopter.js index e544752..5ed6713 100644 --- a/spec/spec/utils/adopter.js +++ b/spec/spec/utils/adopter.js @@ -66,7 +66,7 @@ describe('adopter.js', () => { }) it('creates an element from passed svg string', () => { - const rect = makeInstance('<rect width="200px">') + const rect = makeInstance('<rect width="200px" />') expect(adoptSpy).toHaveBeenCalledWith(any(Node)) expect(adoptSpy).toHaveBeenCalledWith(objectContaining({ nodeName: 'rect' })) @@ -84,7 +84,7 @@ describe('adopter.js', () => { }) it('does not have its wrapper attached', () => { - const rect = makeInstance('<rect width="200px">') + const rect = makeInstance('<rect width="200px" />') expect(rect.parent()).toBe(null) }) @@ -212,6 +212,7 @@ describe('adopter.js', () => { expect(typeof A.prototype.test).toBe('function') expect(new A().test().prop).toBe('test') }) + it('accepts and extend multiple modules at once', () => { const A = class {} const B = class {} diff --git a/spec/spec/utils/methods.js b/spec/spec/utils/methods.js new file mode 100644 index 0000000..10d50d8 --- /dev/null +++ b/spec/spec/utils/methods.js @@ -0,0 +1,30 @@ +/* globals describe, expect, it */ + +import { registerMethods, getMethodsFor, getMethodNames } from '../../../src/utils/methods.js' + +describe('methods.js', () => { + describe('registerMethods() / getMethodsFor() / addMethodNames / getMethodNames()', () => { + it('adds methods for a given type of classes with object given', () => { + const foo = { + func1: () => {} + } + registerMethods({ foo }) + + expect(getMethodsFor('foo')).toEqual(foo) + }) + + it('adds methods for a given type of classes with 2 parameters given', () => { + const foo = { + func1: () => {} + } + registerMethods('foo', foo) + + expect(getMethodsFor('foo')).toEqual(foo) + }) + + it('adds a method name', () => { + registerMethods({ bar: { func2: () => {} } }) + expect(getMethodNames()).toContain('func2') + }) + }) +}) diff --git a/spec/spec/utils/window.js b/spec/spec/utils/window.js new file mode 100644 index 0000000..65fbcab --- /dev/null +++ b/spec/spec/utils/window.js @@ -0,0 +1,36 @@ +/* globals describe, expect, it */ + +import { registerWindow, globals, withWindow, getWindow, saveWindow, restoreWindow } from '../../../src/utils/window.js' + +describe('window.js', () => { + describe('registerWindow()', () => { + it('sets a new window as global', () => { + saveWindow() + const win = {} + const doc = {} + registerWindow(win, doc) + expect(globals.window).toBe(win) + expect(globals.document).toBe(doc) + restoreWindow() // we need this or jasmine will fail in afterAll + }) + }) + + describe('withWindow()', () => { + it('runs a function in the specified window context', () => { + const win = { foo: 'bar', document: {} } + const oldWindow = globals.window + expect(globals.window).not.toBe(win) + withWindow({ foo: 'bar', document: {} }, () => { + expect(globals.window).toEqual(win) + expect(globals.document).toEqual(win.document) + }) + expect(globals.window).toBe(oldWindow) + }) + }) + + describe('getWindow()', () => { + it('returns the registered window', () => { + expect(getWindow()).toBe(globals.window) + }) + }) +}) diff --git a/spec/support/jasmine.json b/spec/support/jasmine.json deleted file mode 100644 index c7845fc..0000000 --- a/spec/support/jasmine.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "spec_dir": "spec/spec", - "spec_files": [ - "!(helpers).js" - ], - "helpers": [ - "helpers.js" - ] -} diff --git a/src/animation/Runner.js b/src/animation/Runner.js index e2ba380..e0ac5a8 100644 --- a/src/animation/Runner.js +++ b/src/animation/Runner.js @@ -9,11 +9,10 @@ import Animator from './Animator.js' import Box from '../types/Box.js' import EventTarget from '../types/EventTarget.js' import Matrix from '../types/Matrix.js' -import Morphable, { TransformBag } from './Morphable.js' +import Morphable, { TransformBag, ObjectBag } from './Morphable.js' import Point from '../types/Point.js' import SVGNumber from '../types/SVGNumber.js' import Timeline from './Timeline.js' -import { ObjectBag } from '../main.js' export default class Runner extends EventTarget { constructor (options) { @@ -654,11 +653,6 @@ registerMethods({ } }) -const intersect = (a, b) => { - var setB = new Set(b) - return [ ...new Set(a) ].filter(x => setB.has(x)) -} - // Will output the elements from array A that are not in the array B const difference = (a, b) => a.filter(x => !b.includes(x)) diff --git a/src/elements/Dom.js b/src/elements/Dom.js index 1f25c0b..eb59418 100644 --- a/src/elements/Dom.js +++ b/src/elements/Dom.js @@ -264,8 +264,9 @@ export default class Dom extends EventTarget { xml (xmlOrFn, outerXML, ns) { var well, len, fragment - if (xmlOrFn === false) { - outerXML = false + if (typeof xmlOrFn === 'boolean') { + ns = outerXML + outerXML = xmlOrFn xmlOrFn = null } @@ -319,7 +320,7 @@ export default class Dom extends EventTarget { outerXML = outerXML == null ? false : outerXML // Create temporary holder - well = globals.document.createElementNS(ns, 'svg') + well = create('wrapper', ns) fragment = globals.document.createDocumentFragment() // Dump raw svg diff --git a/src/elements/Fragment.js b/src/elements/Fragment.js index 228e93f..d2c4764 100644 --- a/src/elements/Fragment.js +++ b/src/elements/Fragment.js @@ -1,30 +1,31 @@ import Dom from './Dom.js' import { globals } from '../utils/window.js' -import { register } from '../utils/adopter.js' -import Svg from './Svg.js' +import { register, create } from '../utils/adopter.js' class Fragment extends Dom { constructor (node = globals.document.createDocumentFragment()) { super(node) } - // Import / Export raw svg - svg (svgOrFn, outerHTML) { - if (svgOrFn === false) { - outerHTML = false - svgOrFn = null + // Import / Export raw xml + xml (xmlOrFn, outerXML, ns) { + if (typeof xmlOrFn === 'boolean') { + ns = outerXML + outerXML = xmlOrFn + xmlOrFn = null } - // act as getter if no svg string is given - if (svgOrFn == null || typeof svgOrFn === 'function') { - const wrapper = new Svg() + // because this is a fragment we have to put all elements into a wrapper first + // before we can get the innerXML from it + if (xmlOrFn == null || typeof xmlOrFn === 'function') { + const wrapper = new Dom(create('wrapper', ns)) wrapper.add(this.node.cloneNode(true)) - return wrapper.svg(svgOrFn, false) + return wrapper.xml(false, ns) } // Act as setter if we got a string - return super.svg(svgOrFn, false) + return super.xml(xmlOrFn, false, ns) } } diff --git a/src/elements/TextPath.js b/src/elements/TextPath.js index e4208c2..9ed4a71 100644 --- a/src/elements/TextPath.js +++ b/src/elements/TextPath.js @@ -92,7 +92,12 @@ registerMethods({ }), targets () { - return baseFind('svg textPath[*|href*="' + this.id() + '"]') + return baseFind('svg textPath').filter((node) => { + return node.attr('href').includes(this.id()) + }) + + // Does not work in IE11. Use when IE support is dropped + // return baseFind('svg textPath[*|href*="' + this.id() + '"]') } } }) diff --git a/src/polyfills/innerHTML.js b/src/polyfills/innerHTML.js index 4be7f1b..138277e 100644 --- a/src/polyfills/innerHTML.js +++ b/src/polyfills/innerHTML.js @@ -13,18 +13,18 @@ output.push('<', node.tagName) if (node.hasAttributes()) { [].forEach.call(node.attributes, function (attrNode) { - output.push(' ', attrNode.name, '=\'', attrNode.value, '\'') + output.push(' ', attrNode.name, '="', attrNode.value, '"') }) } + output.push('>') if (node.hasChildNodes()) { - output.push('>'); [].forEach.call(node.childNodes, function (childNode) { serializeXML(childNode, output) }) - output.push('</', node.tagName, '>') } else { - output.push('/>') + // output.push('/>') } + output.push('</', node.tagName, '>') } else if (nodeType === 8) { output.push('<!--', node.nodeValue, '-->') } diff --git a/src/types/ArrayPolyfill.js b/src/types/ArrayPolyfill.js deleted file mode 100644 index 4d2309f..0000000 --- a/src/types/ArrayPolyfill.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint no-new-func: "off" */ -export const subClassArray = (function () { - try { - // try es6 subclassing - return Function('name', 'baseClass', '_constructor', [ - 'baseClass = baseClass || Array', - 'return {', - ' [name]: class extends baseClass {', - ' constructor (...args) {', - ' super(...args)', - ' _constructor && _constructor.apply(this, args)', - ' }', - ' }', - '}[name]' - ].join('\n')) - } catch (e) { - // Use es5 approach - return (name, baseClass = Array, _constructor) => { - const Arr = function () { - baseClass.apply(this, arguments) - _constructor && _constructor.apply(this, arguments) - } - - Arr.prototype = Object.create(baseClass.prototype) - Arr.prototype.constructor = Arr - - Arr.prototype.map = function (fn) { - const arr = new Arr() - arr.push.apply(arr, Array.prototype.map.call(this, fn)) - return arr - } - - return Arr - } - } -})() diff --git a/src/types/List.js b/src/types/List.js index b68e362..197a155 100644 --- a/src/types/List.js +++ b/src/types/List.js @@ -1,16 +1,25 @@ import { extend } from '../utils/adopter.js' -import { subClassArray } from './ArrayPolyfill.js' +// import { subClassArray } from './ArrayPolyfill.js' + +class List extends Array { + constructor (arr = [], ...args) { + super(arr, ...args) + if (typeof arr === 'number') return this + this.length = 0 + this.push(...arr) + } +} -const List = subClassArray('List', Array, function (arr = []) { +/* = subClassArray('List', Array, function (arr = []) { // This catches the case, that native map tries to create an array with new Array(1) if (typeof arr === 'number') return this this.length = 0 this.push(...arr) -}) +}) */ export default List -extend(List, { +extend([ List ], { each (fnOrMethodName, ...args) { if (typeof fnOrMethodName === 'function') { return this.map((el, i, arr) => { @@ -45,5 +54,5 @@ List.extend = function (methods) { return obj }, {}) - extend(List, methods) + extend([ List ], methods) } diff --git a/src/types/PathArray.js b/src/types/PathArray.js index 03fdee3..d9c1eb2 100644 --- a/src/types/PathArray.js +++ b/src/types/PathArray.js @@ -6,17 +6,11 @@ import { numbersWithDots, pathLetters } from '../modules/core/regex.js' -import { extend } from '../utils/adopter.js' -import { subClassArray } from './ArrayPolyfill.js' import Point from './Point.js' import SVGArray from './SVGArray.js' import parser from '../modules/core/parser.js' import Box from './Box.js' -const PathArray = subClassArray('PathArray', SVGArray) - -export default PathArray - export function pathRegReplace (a, b, c, d) { return c + d.replace(dots, ' .') } @@ -130,11 +124,11 @@ for (var i = 0, il = mlhvqtcsaz.length; i < il; ++i) { })(mlhvqtcsaz[i].toUpperCase()) } -extend(PathArray, { +export default class PathArray extends SVGArray { // Convert array to string toString () { return arrayToString(this) - }, + } // Move path string move (x, y) { @@ -175,7 +169,7 @@ extend(PathArray, { } return this - }, + } // Resize path string size (width, height) { @@ -221,7 +215,7 @@ extend(PathArray, { } return this - }, + } // Absolutize and parse path to array parse (array = [ 'M', 0, 0 ]) { @@ -268,11 +262,11 @@ extend(PathArray, { } while (len > index) return result - }, + } // Get bounding box of path bbox () { parser().path.setAttribute('d', this.toString()) return new Box(parser.nodes.path.getBBox()) } -}) +} diff --git a/src/types/PointArray.js b/src/types/PointArray.js index 54df08f..27a2076 100644 --- a/src/types/PointArray.js +++ b/src/types/PointArray.js @@ -1,15 +1,9 @@ import { delimiter } from '../modules/core/regex.js' -import { extend } from '../utils/adopter.js' -import { subClassArray } from './ArrayPolyfill.js' import SVGArray from './SVGArray.js' -import { Matrix } from '../main.js' import Box from './Box.js' +import Matrix from './Matrix.js' -const PointArray = subClassArray('PointArray', SVGArray) - -export default PointArray - -extend(PointArray, { +export default class PointArray extends SVGArray { // Convert array to string toString () { // convert to a poly point string @@ -18,7 +12,7 @@ extend(PointArray, { } return array.join(' ') - }, + } // Convert array to line object toLine () { @@ -28,7 +22,7 @@ extend(PointArray, { x2: this[1][0], y2: this[1][1] } - }, + } // Parse point string and flat array parse (array = [ 0, 0 ]) { @@ -52,11 +46,11 @@ extend(PointArray, { } return points - }, + } transform (m) { return this.clone().transformO(m) - }, + } // transform points with matrix (similar to Point.transform) transformO (m) { @@ -72,7 +66,7 @@ extend(PointArray, { } return this - }, + } // Move point string move (x, y) { @@ -90,7 +84,7 @@ extend(PointArray, { } return this - }, + } // Resize poly string size (width, height) { @@ -104,7 +98,7 @@ extend(PointArray, { } return this - }, + } // Get bounding box of points bbox () { @@ -120,4 +114,4 @@ extend(PointArray, { }) return new Box(minX, minY, maxX - minX, maxY - minY) } -}) +} diff --git a/src/types/SVGArray.js b/src/types/SVGArray.js index 7f27ec4..dafa2d4 100644 --- a/src/types/SVGArray.js +++ b/src/types/SVGArray.js @@ -1,36 +1,33 @@ import { delimiter } from '../modules/core/regex.js' -import { extend } from '../utils/adopter.js' -import { subClassArray } from './ArrayPolyfill.js' -const SVGArray = subClassArray('SVGArray', Array, function (arr) { - this.init(arr) -}) - -export default SVGArray +export default class SVGArray extends Array { + constructor (...args) { + super(...args) + this.init(...args) + } -extend(SVGArray, { init (arr) { // This catches the case, that native map tries to create an array with new Array(1) if (typeof arr === 'number') return this this.length = 0 this.push(...this.parse(arr)) return this - }, + } toArray () { return Array.prototype.concat.apply([], this) - }, + } toString () { return this.join(' ') - }, + } // Flattens the array if needed valueOf () { const ret = [] ret.push(...this) return ret - }, + } // Parse whitespace separated string parse (array = []) { @@ -38,13 +35,13 @@ extend(SVGArray, { if (array instanceof Array) return array return array.trim().split(delimiter).map(parseFloat) - }, + } clone () { return new this.constructor(this) - }, + } toSet () { return new Set(this) } -}) +} diff --git a/src/utils/adopter.js b/src/utils/adopter.js index a136655..2de1b27 100644 --- a/src/utils/adopter.js +++ b/src/utils/adopter.js @@ -8,9 +8,9 @@ const elements = {} export const root = '___SYMBOL___ROOT___' // Method for element creation -export function create (name) { +export function create (name, ns = svg) { // create element - return globals.document.createElementNS(svg, name) + return globals.document.createElementNS(ns, name) } export function makeInstance (element, isHTML = false) { @@ -114,26 +114,18 @@ export function assignNewId (node) { } // Method for extending objects -export function extend (modules, methods, attrCheck) { +export function extend (modules, methods) { var key, i modules = Array.isArray(modules) ? modules : [ modules ] for (i = modules.length - 1; i >= 0; i--) { for (key in methods) { - let method = methods[key] - if (attrCheck) { - method = wrapWithAttrCheck(methods[key]) - } - modules[i].prototype[key] = method + modules[i].prototype[key] = methods[key] } } } -// export function extendWithAttrCheck (...args) { -// extend(...args, true) -// } - export function wrapWithAttrCheck (fn) { return function (...args) { const o = args[args.length - 1] @@ -145,27 +137,3 @@ export function wrapWithAttrCheck (fn) { } } } - -export function invent (config) { - // Create element initializer - var initializer = typeof config.create === 'function' - ? config.create - : function (node) { - this.constructor(node || create(config.create)) - } - - // Inherit prototype - if (config.inherit) { - /* eslint new-cap: off */ - initializer.prototype = new config.inherit() - initializer.prototype.constructor = initializer - } - - // Extend with methods - if (config.extend) { extend(initializer, config.extend) } - - // Attach construct method to parent - if (config.construct) { extend(config.parent || elements.Container, config.construct) } - - return initializer -} |