diff --git a/.eslintrc.json b/.eslintrc.json index a1de8acf0..8ed908804 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,7 +3,7 @@ "env": { "browser": true, "amd": true, - "es6": false, + "es6": true, "commonjs": false, "jquery": true, "mocha": true diff --git a/.gitignore b/.gitignore index 0c080ba78..c0c43c7a8 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ grunt/requirejs.js package-lock.json !.nvmrc !.prettierrc +!.gitmodules diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..6e7a9ce3f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/shared"] + path = src/shared + url = git@github.com:adsabs/ui-component-library.git diff --git a/.travis.yml b/.travis.yml index 487533240..95002b426 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: node_js -node_js: "11.14.0" +node_js: '11.14.0' cache: npm +git: + submodules: false before_install: npm install -g grunt-cli install: npm install deployg: grunt release @@ -10,5 +12,5 @@ script: #- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then echo "grunt sauce"; grunt sauce; fi env: global: - - secure: "QiHFURctWLbr3uGEwqgABdKBzzXHHD819h4XTQsJ90Lcv04DsSzXZV0GAHa1bXiNIrNwxZD7T7fsakOBViEjIsginD1ZFAUMkR5KHYII3Gzlpu1ikuIHBrrPRLzTFhrsnJxFDRau9gwLeIoTgIP5AC3bw8ne/+6Oe6mW2fpphgU=" - - secure: "SRFYya2d43gzs0WWmYhIqekI1gUoxqeox/hlc7vn6dEWxVNFsHA0oWkMSivSY8y9fqvUyh4p40e4NDlN86EnGF9aq/r4iNBMlIR0UVuxjVBi8HaMR5w3/JvlD7gNI7Y6du0cpkJaVAekJbi21HP1bmcV0sYXcXUj6uL4HUVq4sw=" + - secure: 'QiHFURctWLbr3uGEwqgABdKBzzXHHD819h4XTQsJ90Lcv04DsSzXZV0GAHa1bXiNIrNwxZD7T7fsakOBViEjIsginD1ZFAUMkR5KHYII3Gzlpu1ikuIHBrrPRLzTFhrsnJxFDRau9gwLeIoTgIP5AC3bw8ne/+6Oe6mW2fpphgU=' + - secure: 'SRFYya2d43gzs0WWmYhIqekI1gUoxqeox/hlc7vn6dEWxVNFsHA0oWkMSivSY8y9fqvUyh4p40e4NDlN86EnGF9aq/r4iNBMlIR0UVuxjVBi8HaMR5w3/JvlD7gNI7Y6du0cpkJaVAekJbi21HP1bmcV0sYXcXUj6uL4HUVq4sw=' diff --git a/grunt/check-release-version.js b/grunt/check-release-version.js index 4205cffd6..b793d85ab 100644 --- a/grunt/check-release-version.js +++ b/grunt/check-release-version.js @@ -4,45 +4,50 @@ * * @module grunt/check-release-version */ -module.exports = function (grunt) { - grunt.registerMultiTask('check-release-version', 'Get release version', async function () { - const done = this.async(); - const axios = require('axios'); - const fs = require('fs'); - const githubReleasesPath = 'https://api.github.com/repos/adsabs/bumblebee/releases/latest'; - const releaseFilePath = '/release'; +module.exports = function(grunt) { + grunt.registerMultiTask( + 'check-release-version', + 'Get release version', + async function() { + const done = this.async(); + const axios = require('axios'); + const fs = require('fs'); + const githubReleasesPath = + 'https://api.github.com/repos/adsabs/bumblebee/releases/latest'; + const releaseFilePath = '/release'; - try { - let version; + try { + let version; - if (fs.existsSync(releaseFilePath)) { + if (fs.existsSync(releaseFilePath)) { + // check for the existence of release file + console.log('found release file!'); + const buffer = fs.readFileSync(releaseFilePath); + version = buffer.toString().trim(); + } else { + // otherwise, get the latest version from github + console.log( + 'did not find release file, fetching latest release from github' + ); + const response = await axios.get(githubReleasesPath); + version = response.data.tag_name; + } - // check for the existence of release file - console.log('found release file!'); - const buffer = fs.readFileSync(releaseFilePath); - version = buffer.toString(); - } else { - - // otherwise, get the latest version from github - console.log('did not find release file, fetching latest release from github'); - const response = await axios.get(githubReleasesPath); - version = response.data.tag_name; - } - - if (version) { - console.log('version found: ', version); - grunt.config('appVersion', version); + if (version) { + console.log('version found: ', version); + grunt.config('appVersion', version); + } + } catch (e) { + console.error(e); + } finally { + done(); } - } catch (e) { - console.error(e); - } finally { - done(); } - }); + ); return { release: { - options: {} - } - } + options: {}, + }, + }; }; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 16577e3c8..a150a38e1 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1004,6 +1004,7 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, +<<<<<<< HEAD "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -1014,6 +1015,8 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, +======= +>>>>>>> 1195dba1... initial boilerplate "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", @@ -1064,12 +1067,6 @@ "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", "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==", - "dev": true - }, "acorn-node": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.6.2.tgz", @@ -1128,11 +1125,14 @@ "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true }, +<<<<<<< HEAD "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, +======= +>>>>>>> 1195dba1... initial boilerplate "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -1206,24 +1206,6 @@ "sprintf-js": "~1.0.2" } }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.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==", - "dev": true - } - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -1265,70 +1247,6 @@ "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, - "array-includes": { - "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.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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" - } - } - } - }, "array-map": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", @@ -1362,69 +1280,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "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": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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" - } - } - } - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1494,18 +1349,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, "async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", @@ -1608,12 +1451,6 @@ } } }, - "axobject-query": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", - "integrity": "sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ==", - "dev": true - }, "backbone": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", @@ -3135,11 +2972,14 @@ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", "dev": true }, +<<<<<<< HEAD "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, +======= +>>>>>>> 1195dba1... initial boilerplate "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -3252,12 +3092,6 @@ } } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -3270,12 +3104,6 @@ "integrity": "sha1-4JIVodUVQtsqJXaWl2W89hJVg+s=", "dev": true }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -3359,6 +3187,7 @@ "timers-ext": "0.1" } }, +<<<<<<< HEAD "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -3407,6 +3236,8 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, +======= +>>>>>>> 1195dba1... initial boilerplate "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -3553,12 +3384,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" }, - "compare-versions": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", - "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", - "dev": true - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -3871,12 +3696,6 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, "content-disposition": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", @@ -3963,6 +3782,7 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, +<<<<<<< HEAD "cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", @@ -3993,6 +3813,8 @@ } } }, +======= +>>>>>>> 1195dba1... initial boilerplate "coveralls": { "version": "2.13.3", "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", @@ -4280,12 +4102,6 @@ "es5-ext": "~0.10.2" } }, - "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", - "dev": true - }, "dash-ast": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", @@ -4775,15 +4591,6 @@ "path-type": "^3.0.0" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "dom-helpers": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", @@ -5238,200 +5045,6 @@ } } }, - "eslint": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz", - "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^6.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.4.1", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "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" - } - }, - "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 - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, - "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" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "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==", - "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" - } - } - } - }, "eslint-config-airbnb": { "version": "18.0.1", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz", @@ -5454,489 +5067,54 @@ "object.entries": "^1.1.0" } }, - "eslint-config-prettier": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", - "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", + "eslint-plugin-requirejs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-requirejs/-/eslint-plugin-requirejs-4.0.0.tgz", + "integrity": "sha512-0RUXMrQ7elTtTZT6dwP6HozoAUzUBnMawBmdOKyQAWqulrLnKg8WGKJIpo7cDisjAr91SXDUIhCOrIqgbz9ETQ==", "dev": true, "requires": { - "get-stdin": "^6.0.0" + "ignore": "5.0.5" }, "dependencies": { - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "ignore": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.5.tgz", + "integrity": "sha512-kOC8IUb8HSDMVcYrDVezCxpJkzSQWTAzf3olpKM6o9rM5zpojx23O0Fl8Wr4+qJ6ZbPEHqf1fdwev/DS7v7pmA==", "dev": true } } }, - "eslint-import-resolver-node": { - "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==", + "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 + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "dev": true + }, + "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": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-module-utils": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", - "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", - "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", - "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.1", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", - "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^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 - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "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" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "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" - } - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.5", - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", - "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", - "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.2" - } - } - } - }, - "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-react": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.3.tgz", - "integrity": "sha512-Bt56LNHAQCoou88s8ViKRjMB2+36XRejCQ1VoLj716KI1MoE99HpTVvIThJ0rvFmG4E4Gsq+UgToEjn+j044Bg==", - "dev": true, - "requires": { - "array-includes": "^3.1.1", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.14.2", - "string.prototype.matchall": "^4.0.2" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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.values": { - "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.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", - "dev": true - }, - "eslint-plugin-requirejs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-requirejs/-/eslint-plugin-requirejs-4.0.0.tgz", - "integrity": "sha512-0RUXMrQ7elTtTZT6dwP6HozoAUzUBnMawBmdOKyQAWqulrLnKg8WGKJIpo7cDisjAr91SXDUIhCOrIqgbz9ETQ==", - "dev": true, - "requires": { - "ignore": "5.0.5" - }, - "dependencies": { - "ignore": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.5.tgz", - "integrity": "sha512-kOC8IUb8HSDMVcYrDVezCxpJkzSQWTAzf3olpKM6o9rM5zpojx23O0Fl8Wr4+qJ6ZbPEHqf1fdwev/DS7v7pmA==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, - "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", - "dev": true, - "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.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": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", - "dev": true - }, - "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": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "1", + "es5-ext": "~0.10.14" }, "dependencies": { "d": { @@ -6243,28 +5421,6 @@ } } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -6441,12 +5597,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, "fast-glob": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", @@ -6515,15 +5665,6 @@ "object-assign": "^4.1.0" } }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, "file-saver": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz", @@ -6751,34 +5892,6 @@ } } }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", - "dev": true - }, "follow-redirects": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", @@ -6921,12 +6034,6 @@ "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", @@ -8984,6 +8091,7 @@ } } }, +<<<<<<< HEAD "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -9132,6 +8240,8 @@ } } }, +======= +>>>>>>> 1195dba1... initial boilerplate "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -9219,6 +8329,7 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" }, +<<<<<<< HEAD "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", @@ -9228,6 +8339,8 @@ "resolve-from": "^4.0.0" } }, +======= +>>>>>>> 1195dba1... initial boilerplate "import-lazy": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", @@ -9235,12 +8348,6 @@ "dev": true, "optional": true }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, "in-publish": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", @@ -9487,77 +8594,13 @@ "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", "dev": true }, - "tough-cookie": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz", - "integrity": "sha1-giDH4hq9WxPZaAQlS9WoHr8sfWI=", - "dev": true, - "requires": { - "punycode": ">=0.2.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", - "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", - "dev": true, - "requires": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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==", + "tough-cookie": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz", + "integrity": "sha1-giDH4hq9WxPZaAQlS9WoHr8sfWI=", "dev": true, "requires": { - "has": "^1.0.3" + "punycode": ">=0.2.0" } } } @@ -9830,11 +8873,14 @@ "dev": true, "optional": true }, +<<<<<<< HEAD "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, +======= +>>>>>>> 1195dba1... initial boilerplate "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -9873,12 +8919,6 @@ "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-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -10262,11 +9302,14 @@ "dev": true, "optional": true }, +<<<<<<< HEAD "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==" }, +======= +>>>>>>> 1195dba1... initial boilerplate "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -10286,12 +9329,6 @@ "jsonify": "~0.0.0" } }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -10386,16 +9423,6 @@ } } }, - "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", - "dev": true, - "requires": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" - } - }, "junk": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", @@ -10521,6 +9548,7 @@ "integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA=", "dev": true }, +<<<<<<< HEAD "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -10927,6 +9955,8 @@ } } }, +======= +>>>>>>> 1195dba1... initial boilerplate "load-grunt-config": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/load-grunt-config/-/load-grunt-config-0.19.2.tgz", @@ -12301,6 +11331,7 @@ "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", "dev": true }, +<<<<<<< HEAD "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -12312,6 +11343,8 @@ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" }, +======= +>>>>>>> initial boilerplate "needle": { "version": "0.7.11", "resolved": "https://registry.npmjs.org/needle/-/needle-0.7.11.tgz", @@ -15607,12 +14640,6 @@ } } }, - "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 - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -15641,133 +14668,15 @@ } }, "object.entries": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", - "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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.fromentries": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", - "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", + "es-abstract": "^1.12.0", "function-bind": "^1.1.1", "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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.getownpropertydescriptors": { @@ -15794,6 +14703,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", "dev": true, + "optional": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.12.0", @@ -15836,12 +14746,6 @@ "integrity": "sha1-XeRqCFi59J+fIRqo8mYoVQZX8mI=", "dev": true }, - "opencollective-postinstall": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", - "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", - "dev": true - }, "opn": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz", @@ -15928,12 +14832,6 @@ "win-release": "^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 - }, "osenv": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.0.tgz", @@ -16098,6 +14996,7 @@ "no-case": "^2.2.0" } }, +<<<<<<< HEAD "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -16106,6 +15005,8 @@ "callsites": "^3.0.0" } }, +======= +>>>>>>> 1195dba1... initial boilerplate "parents": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", @@ -16425,26 +15326,6 @@ "pinkie": "^2.0.0" } }, - "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": { - "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - } - } - }, "pkg-up": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", @@ -16454,6 +15335,7 @@ "find-up": "^1.0.0" } }, +<<<<<<< HEAD "please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -16462,6 +15344,8 @@ "semver-compare": "^1.0.0" } }, +======= +>>>>>>> 1195dba1... initial boilerplate "plur": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", @@ -16490,21 +15374,6 @@ "dev": true, "optional": true }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, "pretty-bytes": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.2.0.tgz", @@ -17249,75 +16118,6 @@ "integrity": "sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w==", "dev": true }, - "regexp.prototype.flags": { - "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.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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" - } - } - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, "regexpu-core": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", @@ -17510,11 +16310,14 @@ "path-parse": "^1.0.6" } }, +<<<<<<< HEAD "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, +======= +>>>>>>> 1195dba1... initial boilerplate "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -17549,6 +16352,7 @@ "lowercase-keys": "^1.0.0" } }, +<<<<<<< HEAD "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -17568,6 +16372,8 @@ } } }, +======= +>>>>>>> 1195dba1... initial boilerplate "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -17619,21 +16425,13 @@ "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=", "dev": true }, - "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" - } - }, "rx": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/rx/-/rx-2.5.3.tgz", "integrity": "sha1-Ia3H2A8CACr1Da6X/Z2/JIdV9WY=", "dev": true }, +<<<<<<< HEAD "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", @@ -17642,6 +16440,8 @@ "tslib": "^1.9.0" } }, +======= +>>>>>>> 1195dba1... initial boilerplate "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -17879,11 +16679,14 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, +<<<<<<< HEAD "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" }, +======= +>>>>>>> 1195dba1... initial boilerplate "semver-diff": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-0.1.0.tgz", @@ -17905,7 +16708,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true + "dev": true, + "optional": true }, "semver-truncate": { "version": "1.1.2", @@ -18198,69 +17002,6 @@ "integrity": "sha1-kEktcv/MgVmXa6umL7D2iE8MM3g=", "dev": true }, - "side-channel": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", - "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", - "dev": true, - "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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" - } - } - } - }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -18278,6 +17019,11 @@ "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", "dev": true }, + "simple-react-validator": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/simple-react-validator/-/simple-react-validator-1.3.2.tgz", + "integrity": "sha512-MJujXCgf+Fa0GFTUNA4zgV0NqLSnnRxoaRdUxLY5rwE7Y3Hs/dqMoigCKTvBRCCnX83eXt38gBbV09FRWn2SkA==" + }, "sinon": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.2.tgz", @@ -18299,25 +17045,6 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "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", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -18842,93 +17569,6 @@ } } }, - "string.prototype.matchall": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", - "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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" - } - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -19119,58 +17759,6 @@ "acorn-node": "^1.2.0" } }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "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", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "tar": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", @@ -19523,11 +18111,14 @@ "glob": "^7.1.2" } }, +<<<<<<< HEAD "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, +======= +>>>>>>> 1195dba1... initial boilerplate "tsscmp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", @@ -20001,12 +18592,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, - "v8-compile-cache": { - "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": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -20080,12 +18665,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -20149,15 +18728,6 @@ "integrity": "sha1-f1I+/bcbAQDnfc6DTAZSPL49VOA=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -20192,6 +18762,7 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, +<<<<<<< HEAD "yaml": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", @@ -20210,6 +18781,8 @@ } } }, +======= +>>>>>>> 1195dba1... initial boilerplate "yargs": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", diff --git a/scripts/templates/react-widget/index.js b/scripts/templates/react-widget/index.js index c4185d9e1..75a42667e 100644 --- a/scripts/templates/react-widget/index.js +++ b/scripts/templates/react-widget/index.js @@ -7,7 +7,7 @@ define([ './middleware', './reducer', 'js/react/shared/helpers', - 'js/react/shared/middleware/api', + 'js/react/shared/middleware/index', ], function( App, WithBackboneView, @@ -22,14 +22,10 @@ define([ const mapStateToProps = ({}) => ({}); const {} = actions; const actionCreators = {}; + const middlewares = [middleware, ...sharedMiddleware]; return WithBackboneView( connect(mapStateToProps, actionCreators)(App), - (context) => - configureStore( - context, - reducer, - withContext(middleware, sharedMiddleware) - ) + (context) => configureStore(context, reducer, withContext(...middlewares)) ); }); diff --git a/src/config/discovery.config.js b/src/config/discovery.config.js index e153bff67..4e3a14d5b 100644 --- a/src/config/discovery.config.js +++ b/src/config/discovery.config.js @@ -5,11 +5,12 @@ require.config({ deps: (function() { if (typeof window !== 'undefined' && window.skipMain) { return ['common.config']; + } else { + return ['config/common.config', 'js/apps/discovery/main']; } - return ['config/common.config', 'js/apps/discovery/main']; })(), - // this will be overridden in the compiled file + //this will be overridden in the compiled file waitSeconds: 30, // Configuration we want to make available to modules of ths application @@ -129,7 +130,7 @@ require.config({ ShowCoreads: 'js/wraps/coreads', ShowSimilar: 'js/wraps/similar', MetaTagsWidget: 'js/widgets/meta_tags/widget', - // can't camel case because router only capitalizes first letter + //can't camel case because router only capitalizes first letter ShowToc: 'js/wraps/table_of_contents', ShowResources: 'es6!js/widgets/resources/widget.jsx', ShowAssociated: 'es6!js/widgets/associated/widget.jsx', @@ -142,6 +143,12 @@ require.config({ LibraryActionsWidget: 'es6!js/widgets/library_actions/widget.jsx', AllLibrariesWidget: 'js/widgets/libraries_all/widget', LibraryListWidget: 'js/widgets/library_list/widget', + + // react widgets + + MyAdsFreeform: 'reactify!js/react/BumblebeeWidget?MyAdsFreeform', + MyAdsDashboard: 'reactify!js/react/BumblebeeWidget?MyAdsDashboard', + RecommenderWidget: 'reactify!js/react/BumblebeeWidget?Recommender', }, plugins: {}, }, @@ -174,7 +181,7 @@ require.config({ async: 'libs/requirejs-plugins/async', babel: 'libs/requirejs-babel-plugin/babel-5.8.34.min', backbone: [ - // '//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min', + //'//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min', 'libs/backbone/backbone', ], 'backbone-validation': [ diff --git a/src/index.html b/src/index.html index c58985827..55c39aa32 100644 --- a/src/index.html +++ b/src/index.html @@ -63,7 +63,7 @@

0% Complete - lsdkfj +
diff --git a/src/js/apps/discovery/main.js b/src/js/apps/discovery/main.js index 3c4be6224..8edcbb6f9 100644 --- a/src/js/apps/discovery/main.js +++ b/src/js/apps/discovery/main.js @@ -131,6 +131,7 @@ define(['config/discovery.config', 'module'], function(config, module) { // accessibility: skip to main content $('body').on('click', '#skip-to-main-content', function() { + $('#main-content').focus(); return false; }); diff --git a/src/js/apps/discovery/navigator.js b/src/js/apps/discovery/navigator.js index 4e016e8d5..fe9731ac3 100644 --- a/src/js/apps/discovery/navigator.js +++ b/src/js/apps/discovery/navigator.js @@ -60,6 +60,7 @@ define([ var searchPageAlwaysVisible = [ 'Results', + 'MyAdsFreeform', 'QueryInfo', 'AffiliationFacet', 'AuthorFacet', @@ -123,7 +124,7 @@ define([ var defer = $.Deferred(); app .getObject('MasterPageManager') - .show('LandingPage', ['SearchWidget']) + .show('LandingPage', ['SearchWidget', 'RecommenderWidget']) .then(function() { return app.getWidget('LandingPage').then(function(widget) { if (data && data.origin === 'SearchWidget') { @@ -209,7 +210,6 @@ define([ }); this.set('LibraryImport', function(page, data) { - var that = this; var defer = $.Deferred(); var that = this; if (redirectIfNotSignedIn(that.endpoint)) { @@ -284,6 +284,30 @@ define([ ) ); + this.set('MyAdsDashboard', function() { + var defer = $.Deferred(); + var that = this; + if (redirectIfNotSignedIn(that.endpoint)) { + defer.resolve(); + return defer.promise(); + } + + app + .getObject('MasterPageManager') + .show('SettingsPage', ['MyAdsDashboard', 'UserNavbarWidget']) + .then(function() { + app.getWidget('SettingsPage').done(function(widget) { + widget.setActive('MyAdsDashboard'); + that.route = '#user/settings/myads'; + that.title = 'myADS Notifications'; + publishPageChange('settings-page'); + defer.resolve(); + }); + }); + + return defer.promise(); + }); + this.set('LibraryActionsWidget', function() { var $dd = $.Deferred(); var that = this; @@ -399,8 +423,8 @@ define([ app .getWidget('LibraryListWidget', 'IndividualLibraryWidget') .then(function(w) { - w.LibraryListWidget.setData(data); - w.IndividualLibraryWidget.setSubView(data); + w['LibraryListWidget'].setData(data); + w['IndividualLibraryWidget'].setSubView(data); if (pub) publishPageChange('libraries-page'); defer.resolve(); @@ -533,13 +557,13 @@ define([ this.set('authentication-page', function(page, data) { var defer = $.Deferred(); - var data = data || {}; - var subView = data.subView || 'login'; - var loggedIn = app - .getBeeHive() - .getObject('User') - .isLoggedIn(); - var that = this; + var data = data || {}, + subView = data.subView || 'login', + loggedIn = app + .getBeeHive() + .getObject('User') + .isLoggedIn(), + that = this; if (loggedIn) { // redirect to index @@ -794,8 +818,7 @@ define([ 'BubbleChart', ]; - var widgetName; - var pages; + var widgetName, pages; // convention is that a navigate command for search page widget starts with "show-" // waits for the navigate to results page emitted by the discovery_mediator @@ -843,7 +866,7 @@ define([ that.route += '&__tb=1'; } - const q = query; + let q = query; if (q instanceof ApiQuery) { var update = {}; var par = function(str) { @@ -945,14 +968,14 @@ define([ }); this.set('user-action', function(endPoint, data) { - var failMessage = ''; - var failTitle = ''; - var route; - var done; - var defer = $.Deferred(); + var failMessage = '', + failTitle = '', + route, + done, + defer = $.Deferred(); - var token = data.token; - var subView = data.subView; + var token = data.token, + subView = data.subView; function fail(jqXHR, status, errorThrown) { self @@ -1153,8 +1176,7 @@ define([ }); }); return; - } - if (orcidApi.hasAccess()) { + } else if (orcidApi.hasAccess()) { // XXX:rca = this block is async; showing modals even if the page under may be // changing; likely not intended to be doing that but not sure... @@ -1219,8 +1241,8 @@ define([ * */ function showResultsPageWidgetWithUniqueUrl(command, options) { - var defer = $.Deferred(); - var that = this; + var defer = $.Deferred(), + that = this; options = options || {}; var q = app.getObject('AppStorage').getCurrentQuery(); if (!q && options.q) { @@ -1316,10 +1338,10 @@ define([ this.set('verify-abstract', function() { // XXX:rca - moved from router; not in a working state // check we are using the canonical bibcode and redirect to it if necessary - var q; - var req; - var defer = $.Deferred; - var that = this; + var q, + req, + defer = $.Deferred, + that = this; q = new ApiQuery({ q: 'identifier:' + this.queryUpdater.quoteIfNecessary(bibcode), @@ -1330,8 +1352,7 @@ define([ target: ApiTargets.SEARCH, options: { done: function(resp) { - var navigateString; - var href; + var navigateString, href; if (!subPage) { navigateString = 'ShowAbstract'; @@ -1340,7 +1361,7 @@ define([ 'Show' + subPage[0].toUpperCase() + subPage.slice(1); href = '#abs/' + bibcode + '/' + subPage; } - // self.routerNavigate(navigateString, { href: href }); + //self.routerNavigate(navigateString, { href: href }); if ( resp.response && @@ -1648,8 +1669,8 @@ define([ }); this.set('show-author-affiliation-tool', function(id, options) { - var defer = $.Deferred(); - var that = this; + var defer = $.Deferred(), + that = this; var q = app.getObject('AppStorage').getCurrentQuery(); app .getObject('MasterPageManager') diff --git a/src/js/apps/discovery/router.js b/src/js/apps/discovery/router.js index 68493e50d..94f3ecce3 100644 --- a/src/js/apps/discovery/router.js +++ b/src/js/apps/discovery/router.js @@ -1,312 +1,295 @@ define([ - 'underscore', - 'jquery', - 'backbone', - 'js/components/api_query', - 'js/mixins/dependon', - 'js/components/api_feedback', - 'js/components/api_request', - 'js/components/api_targets', - 'js/mixins/api_access', - 'js/components/api_query_updater', -], function( - _, - $, - Backbone, - ApiQuery, - Dependon, - ApiFeedback, - ApiRequest, - ApiTargets, - ApiAccessMixin, - ApiQueryUpdater -) { - var Router = Backbone.Router.extend({ - initialize: function(options) { - options = options || {}; - this.queryUpdater = new ApiQueryUpdater('Router'); - }, - - execute: function(callback, args) { - // only perform actions if history has started - if (Backbone.History.started) { - var route = Backbone.history.getFragment(); - route = route === '' ? 'index' : route; - - // Workaround for issue where hitting back button from the index page - // goes to an empty `search/` route, so capture that here and go back 2 - if (route === 'search/' && _.isEmpty(_.reject(args, _.isUndefined))) { - return Backbone.history.history.go(-2); + 'underscore', + 'jquery', + 'backbone', + 'js/components/api_query', + 'js/mixins/dependon', + 'js/components/api_feedback', + 'js/components/api_request', + 'js/components/api_targets', + 'js/mixins/api_access', + 'js/components/api_query_updater' + + ], + function ( + _, + $, + Backbone, + ApiQuery, + Dependon, + ApiFeedback, + ApiRequest, + ApiTargets, + ApiAccessMixin, + ApiQueryUpdater + ) { + var Router = Backbone.Router.extend({ + + initialize: function (options) { + options = options || {}; + this.queryUpdater = new ApiQueryUpdater('Router'); + }, + + execute: function (callback, args) { + // only perform actions if history has started + if (Backbone.History.started) { + var route = Backbone.history.getFragment(); + route = route === '' ? 'index' : route; + + // Workaround for issue where hitting back button from the index page + // goes to an empty `search/` route, so capture that here and go back 2 + if (route === 'search/' && _.isEmpty(_.reject(args, _.isUndefined))) { + return Backbone.history.history.go(-2); + } } - } - if (_.isFunction(callback)) { - callback.apply(this, args); - } - }, - - activate: function(beehive) { - this.setBeeHive(beehive); - if (!this.hasPubSub()) { - throw new Error( - 'Ooops! Who configured this #@$%! There is no PubSub service!' - ); - } - }, - - /* - * if you don't want the navigator to duplicate the route in history, - * use this function instead of pubsub.publish(pubsub.NAVIGATE ...) - * */ - - routerNavigate: function(route, options) { - var options = options || {}; - this.getPubSub().publish(this.getPubSub().NAVIGATE, route, options); - }, - - routes: { - '/': 'index', - '': 'index', - 'classic-form(/)': 'classicForm', - 'paper-form(/)': 'paperForm', - 'index/(:query)': 'index', - 'search/(:query)(/)(:widgetName)': 'search', - 'search(?:query)': 'search', - 'execute-query/(:query)': 'executeQuery', - 'abs/*path': 'view', + if (_.isFunction(callback)) { + callback.apply(this, args); + } + }, + + activate: function (beehive) { + this.setBeeHive(beehive); + if (!this.hasPubSub()) { + throw new Error('Ooops! Who configured this #@$%! There is no PubSub service!'); + } + }, + /* - * user endpoints require user to be logged in, either - * to orcid or to ads + * if you don't want the navigator to duplicate the route in history, + * use this function instead of pubsub.publish(pubsub.NAVIGATE ...) * */ - 'user/orcid*(:subView)': 'orcidPage', - 'user/account(/)(:subView)': 'authenticationPage', - 'user/account/verify/(:subView)/(:token)': 'routeToVerifyPage', - 'user/settings(/)(:subView)(/)': 'settingsPage', - 'user/libraries(/)(:id)(/)(:subView)(/)(:subData)(/)': 'librariesPage', - 'user/home(/)': 'homePage', - /* end user routes */ - - 'orcid-instructions(/)': 'orcidInstructions', - - 'public-libraries/(:id)(/)': 'publicLibraryPage', - '*invalidRoute': 'noPageFound', - }, - - index: function(query) { - this.routerNavigate('index-page'); - }, - - classicForm: function() { - this.routerNavigate('ClassicSearchForm'); - }, - - paperForm: function() { - this.routerNavigate('PaperSearchForm'); - }, - - search: function(query, widgetName) { - if (query) { - try { - var q = new ApiQuery().load(query); - this.routerNavigate('search-page', { - q: q, - page: widgetName && 'show-' + widgetName, - replace: true, - }); - } catch (e) { - console.error('Error parsing query from a string: ', query, e); - this.getPubSub().publish(this.getPubSub().NAVIGATE, 'index-page'); - this.getPubSub().publish( - this.getPubSub().BIG_FIRE, - new ApiFeedback({ + + routerNavigate: function (route, options) { + var options = options || {}; + this.getPubSub().publish(this.getPubSub().NAVIGATE, route, options); + }, + + routes: { + '/': 'index', + '': 'index', + 'classic-form(/)': 'classicForm', + 'paper-form(/)': 'paperForm', + 'index/(:query)': 'index', + 'search/(:query)(/)(:widgetName)': 'search', + 'search(?:query)': 'search', + 'execute-query/(:query)': 'executeQuery', + 'abs/*path': 'view', + /* + * user endpoints require user to be logged in, either + * to orcid or to ads + * */ + 'user/orcid*(:subView)': 'orcidPage', + 'user/account(/)(:subView)': 'authenticationPage', + 'user/account/verify/(:subView)/(:token)': 'routeToVerifyPage', + 'user/settings(/)(:subView)(/)': 'settingsPage', + 'user/libraries(/)(:id)(/)(:subView)(/)(:subData)(/)': 'librariesPage', + 'user/home(/)': 'homePage', + /* end user routes */ + + 'orcid-instructions(/)': 'orcidInstructions', + + 'public-libraries/(:id)(/)': 'publicLibraryPage', + '*invalidRoute': 'noPageFound' + }, + + index: function (query) { + this.routerNavigate('index-page'); + }, + + classicForm: function () { + this.routerNavigate('ClassicSearchForm'); + }, + + paperForm: function () { + this.routerNavigate('PaperSearchForm'); + }, + + search: function (query, widgetName) { + + if (query) { + try { + var q = new ApiQuery().load(query); + this.routerNavigate('search-page', { + q: q, + page: widgetName && 'show-' + widgetName, + replace: true + }); + } catch (e) { + console.error('Error parsing query from a string: ', query, e); + this.getPubSub().publish(this.getPubSub().NAVIGATE, 'index-page'); + this.getPubSub().publish(this.getPubSub().BIG_FIRE, new ApiFeedback({ code: ApiFeedback.CODES.CANNOT_ROUTE, reason: 'Cannot parse query', - query: query, - }) - ); - return this.getPubSub().publish( - this.getPubSub().ALERT, - new ApiFeedback({ + query: query + })); + return this.getPubSub().publish(this.getPubSub().ALERT, new ApiFeedback({ code: ApiFeedback.CODES.ALERT, msg: 'unable parse query', type: 'danger', - modal: true, - }) - ); + modal: true + })); + } + } else { + this.getPubSub().publish(this.getPubSub().NAVIGATE, 'index-page'); } - } else { - this.getPubSub().publish(this.getPubSub().NAVIGATE, 'index-page'); - } - }, - - executeQuery: function(queryId) { - this.getPubSub().publish( - this.getPubSub().NAVIGATE, - 'execute-query', - queryId - ); - }, - - view: function(path) { - if (!path) { - return this.routerNavigate('404'); - } + }, - // break apart the path - const parts = path.split('/'); - // check for a subpage - let subPage; - const subPageRegex = /^(abstract|citations|references|coreads|similar|toc|graphics|metrics|exportcitation)$/; - if (parts[parts.length - 1].match(subPageRegex)) { - subPage = parts.pop(); - } + executeQuery: function (queryId) { + this.getPubSub().publish(this.getPubSub().NAVIGATE, 'execute-query', queryId); + }, - // take the rest and combine into the identifier - const id = parts.join('/'); - - var navigateString; - var href; - if (!subPage) { - navigateString = 'ShowAbstract'; - href = '#abs/' + encodeURIComponent(id) + '/abstract'; - } else { - navigateString = 'Show' + subPage[0].toUpperCase() + subPage.slice(1); - href = '#abs/' + encodeURIComponent(id) + '/' + subPage; - } - this.routerNavigate(navigateString, { - href: href, - bibcode: id, - }); - }, - - routeToVerifyPage: function(subView, token) { - this.getPubSub().publish(this.getPubSub().NAVIGATE, 'user-action', { - subView: subView, - token: token, - }); - }, - - orcidPage: function() { - this.getPubSub().publish(this.getPubSub().NAVIGATE, 'orcid-page'); - }, - - orcidInstructions: function() { - this.getPubSub().publish(this.getPubSub().NAVIGATE, 'orcid-instructions'); - }, - - authenticationPage: function(subView) { - // possible subViews: "login", "register", "reset-password" - if ( - subView && - !_.contains( - ['login', 'register', 'reset-password-1', 'reset-password-2'], - subView - ) - ) { - throw new Error( - "that isn't a subview that the authentication page knows about" - ); - } - this.routerNavigate('authentication-page', { - subView: subView, - }); - }, - - settingsPage: function(subView) { - // possible subViews: "token", "password", "email", "preferences" - if (_.contains(['token', 'password', 'email', 'delete'], subView)) { - this.routerNavigate('UserSettings', { - subView: subView, + view: function (path) { + if (!path) { + return this.routerNavigate('404'); + } + + // break apart the path + const parts = path.split('/'); + + // check for a subpage + let subPage; + const subPageRegex = /^(abstract|citations|references|coreads|similar|toc|graphics|metrics|exportcitation)$/ + if (parts[parts.length - 1].match(subPageRegex)) { + subPage = parts.pop(); + } + + // take the rest and combine into the identifier + const id = parts.join('/'); + + var navigateString, href; + if (!subPage) { + navigateString = 'ShowAbstract'; + href = '#abs/' + encodeURIComponent(id) + '/abstract'; + } else { + navigateString = 'Show' + subPage[0].toUpperCase() + subPage.slice(1); + href = '#abs/' + encodeURIComponent(id) + '/' + subPage; + } + this.routerNavigate(navigateString, { + href: href, + bibcode: id }); - } else if (_.contains(['librarylink', 'orcid', 'application'], subView)) { - // show preferences if no subview provided - this.routerNavigate('UserPreferences', { + }, + + + routeToVerifyPage: function (subView, token) { + this.getPubSub().publish(this.getPubSub().NAVIGATE, 'user-action', { subView: subView, + token: token }); - } else if (_.contains(['libraryimport'], subView)) { - this.routerNavigate('LibraryImport'); - } else { - // just default to showing the library link page for now - this.routerNavigate('UserPreferences', { - subView: undefined, - }); - } - }, + }, + + orcidPage: function () { + this.getPubSub().publish(this.getPubSub().NAVIGATE, 'orcid-page'); + }, - librariesPage: function(id, subView, subData) { - if (id) { - if (id === 'actions') { - return this.routerNavigate('LibraryActionsWidget', 'libraries'); + orcidInstructions: function () { + this.getPubSub().publish(this.getPubSub().NAVIGATE, 'orcid-instructions'); + }, + + authenticationPage: function (subView) { + // possible subViews: "login", "register", "reset-password" + if (subView && !_.contains(['login', 'register', 'reset-password-1', 'reset-password-2'], subView)) { + throw new Error('that isn\'t a subview that the authentication page knows about'); } + this.routerNavigate('authentication-page', { + subView: subView + }); + }, - // individual libraries view - var subView = subView || 'library'; - if (_.contains(['library', 'admin'], subView)) { - this.routerNavigate('IndividualLibraryWidget', { - subView: subView, - id: id, + settingsPage: function (subView) { + // possible subViews: "token", "password", "email", "preferences" + if (_.contains(['token', 'password', 'email', 'delete'], subView)) { + this.routerNavigate('UserSettings', { + subView: subView }); - } else if ( - _.contains(['export', 'metrics', 'visualization'], subView) - ) { - subView = 'library-' + subView; - - if (subView == 'library-export') { - this.routerNavigate(subView, { - subView: subData || 'bibtex', - id: id, - }); - } else if (subView == 'library-metrics') { - this.routerNavigate(subView, { - id: id, + } else if (_.contains(['librarylink', 'orcid', 'application'], subView)) { + // show preferences if no subview provided + this.routerNavigate('UserPreferences', { + subView: subView + }); + } else if (_.contains(['libraryimport'], subView)) { + this.routerNavigate('LibraryImport'); + + } else if (_.contains(['myads'], subView)) { + this.routerNavigate('MyAdsDashboard'); + } else { + // just default to showing the library link page for now + this.routerNavigate('UserPreferences', { + subView: undefined + }); + } + }, + + librariesPage: function (id, subView, subData) { + if (id) { + if (id === 'actions') { + return this.routerNavigate('LibraryActionsWidget', 'libraries'); + } + + // individual libraries view + var subView = subView || 'library'; + if (_.contains(['library', 'admin'], subView)) { + this.routerNavigate('IndividualLibraryWidget', { + subView: subView, + id: id }); + } else if (_.contains(['export', 'metrics', 'visualization'], subView)) { + subView = 'library-' + subView; + + if (subView == 'library-export') { + this.routerNavigate(subView, { + subView: subData || 'bibtex', + id: id + }); + } else if (subView == 'library-metrics') { + this.routerNavigate(subView, { + id: id + }); + } + } else { + throw new Error('did not recognize subview for library view'); } } else { - throw new Error('did not recognize subview for library view'); + // main libraries view + this.routerNavigate('AllLibrariesWidget', 'libraries'); } - } else { + }, + + publicLibraryPage: function (id) { // main libraries view - this.routerNavigate('AllLibrariesWidget', 'libraries'); - } - }, - - publicLibraryPage: function(id) { - // main libraries view - this.getPubSub().publish( - this.getPubSub().NAVIGATE, - 'IndividualLibraryWidget', - { + this.getPubSub().publish(this.getPubSub().NAVIGATE, 'IndividualLibraryWidget', { id: id, publicView: true, - subView: 'library', - } - ); - }, - - homePage: function(subView) { - this.routerNavigate('home-page', { - subView: subView, - }); - }, - - noPageFound: function() { - this.routerNavigate('404'); - }, - - _extractParameters: function(route, fragment) { - return _.map(route.exec(fragment).slice(1), function(param) { - // do not decode api queries - if (/q\=/.test(param)) { - return param; - } + subView: 'library' + }); + }, - return param ? decodeURIComponent(param) : param; - }); - }, - }); + homePage: function (subView) { + this.routerNavigate('home-page', { + subView: subView + }); + }, + + noPageFound: function () { + this.routerNavigate('404'); + }, - _.extend(Router.prototype, Dependon.BeeHive, ApiAccessMixin); - return Router; -}); + _extractParameters: function (route, fragment) { + return _.map(route.exec(fragment).slice(1), function (param) { + // do not decode api queries + if (/q\=/.test(param)) { + return param; + } + + return param ? decodeURIComponent(param) : param; + }); + } + }); + + _.extend(Router.prototype, Dependon.BeeHive, ApiAccessMixin); + + return Router; + }); diff --git a/src/js/components/api_targets.js b/src/js/components/api_targets.js index bf26557e3..75a1bbfef 100644 --- a/src/js/components/api_targets.js +++ b/src/js/components/api_targets.js @@ -5,7 +5,7 @@ * and any related limits */ -define(['underscore', 'backbone'], function(_, Backbone) { +define([], function() { var config = { BOOTSTRAP: '/accounts/bootstrap', SEARCH: 'search/query', @@ -21,6 +21,7 @@ define(['underscore', 'backbone'], function(_, Backbone) { SERVICE_CITATION_HELPER: 'citation_helper', SERVICE_AUTHOR_AFFILIATION_EXPORT: 'authoraff', MYADS_STORAGE: 'vault', + MYADS_NOTIFICATIONS: 'vault/_notifications', AUTHOR_AFFILIATION_SEARCH: 'author-affiliation/search', AUTHOR_AFFILIATION_EXPORT: 'author-affiliation/export', RESOLVER: 'resolver', diff --git a/src/js/mixins/discovery_bootstrap.js b/src/js/mixins/discovery_bootstrap.js index 07f744b59..02f17bb61 100644 --- a/src/js/mixins/discovery_bootstrap.js +++ b/src/js/mixins/discovery_bootstrap.js @@ -325,24 +325,6 @@ define([ // apply a global link handler for push state (after router is started) startGlobalHandler(); - - $(document).on('scroll', function() { - if ($('#landing-page-layout').length > 0) { - return; - } - // navbar is currently 40 px height - if ($(window).scrollTop() > 50) { - $('.s-quick-add').addClass('hidden'); - $('.s-search-bar-full-width-container').addClass( - 's-search-bar-motion' - ); - } else { - $('.s-search-bar-full-width-container').removeClass( - 's-search-bar-motion' - ); - $('.s-quick-add').removeClass('hidden'); - } - }); defer.resolve(); }); diff --git a/src/js/page_managers/master.js b/src/js/page_managers/master.js index 0de13266f..b48379f7b 100644 --- a/src/js/page_managers/master.js +++ b/src/js/page_managers/master.js @@ -93,8 +93,7 @@ define([ model.attributes.numAttach += 1; // scroll to top - document.body.scrollTop = document.documentElement.scrollTop = 0; - $('#app-container').scrollTop(0); + $(document.documentElement).scrollTop(0); // and fix the search bar back in its default spot $('.s-search-bar-full-width-container').removeClass( 's-search-bar-motion' diff --git a/src/js/page_managers/templates/results-page-layout.html b/src/js/page_managers/templates/results-page-layout.html index c5138056e..2e541ec5a 100644 --- a/src/js/page_managers/templates/results-page-layout.html +++ b/src/js/page_managers/templates/results-page-layout.html @@ -76,6 +76,7 @@

+
diff --git a/src/js/react/BumblebeeWidget.js b/src/js/react/BumblebeeWidget.js index b5e866342..8c92bcecf 100644 --- a/src/js/react/BumblebeeWidget.js +++ b/src/js/react/BumblebeeWidget.js @@ -29,7 +29,21 @@ define([ }; const BumblebeeWidget = BaseWidget.extend({ - initialize({ componentId, initialData }) { + /** + * @override + */ + getBeeHive() { + return getBeeHive(); + }, + + /** + * @override + */ + hasBeeHive() { + return true; + }, + + initialize({ componentId }) { this.view.on({ sendRequest: _.bind(this.onSendRequest, this), subscribeToPubSub: _.bind(this.subscribeToPubSub, this), @@ -37,7 +51,6 @@ define([ doSearch: _.bind(this.doSearch, this), getCurrentQuery: _.bind(this.onGetCurrentQuery, this), isLoggedIn: _.bind(this.isLoggedIn, this), - getInitialData: _.bind(this.getInitialData, this), analyticsEvent: _.bind(this.analyticsEvent, this), }); @@ -46,29 +59,41 @@ define([ this.view.destroy().render(); } }); - this.initialData = initialData; this.activate(); this.onSendRequest = _.debounce(this.onSendRequest, 1000, { leading: true, trailing: false, }); + + if (this.view._store) { + this._store = this.view._store; + } }, - getInitialData(cb) { - if (typeof cb === 'function') { - cb(this.initialData); + dispatch({ type, ...args }) { + if (this._store && typeof this._store.dispatch === 'function') { + this._store.dispatch({ type, ...args }); } }, + getState() { + return this._store.getState(); + }, activate() { const ps = getPubSub(); subscribe(ps.USER_ANNOUNCEMENT, this.handleUserAnnouncement.bind(this)); - }, - handleUserAnnouncement(event, data) { - const user = getBeeHive().getObject('User'); - if (event == user.USER_SIGNED_IN) { - } else if (event == user.USER_SIGNED_OUT) { + + const user = this.getBeeHive().getObject('User'); + if (user && typeof user.getUserName === 'function') { + this.dispatch({ + type: 'USER_ANNOUNCEMENT/user_signed_in', + payload: user.getUserName(), + }); } }, + handleUserAnnouncement(event, payload) { + const type = `USER_ANNOUNCEMENT/${event}`; + this.dispatch({ type, payload }); + }, isLoggedIn(cb) { const user = this.getBeeHive().getObject('User'); if (typeof cb === 'function') { @@ -88,9 +113,11 @@ define([ }, doSearch(queryParams) { const query = new ApiQuery(); - _.isString(queryParams) - ? query.load(queryParams) - : query.set({ ...queryParams }); + if (_.isString(queryParams)) { + query.load(queryParams); + } else { + query.set({ ...queryParams }); + } this.publishToPubSub('NAVIGATE', 'search-page', { q: query, }); @@ -100,8 +127,17 @@ define([ const request = new ApiRequest({ target, query: new ApiQuery(query), - options, }); + request.set('options', { + ...options, + contentType: + target === 'search/query' + ? 'application/x-www-form-urlencoded' + : options.contentType, + data: + target === 'search/query' ? request.get('query').url() : options.data, + }); + publish(ps.EXECUTE_REQUEST, request); }, analyticsEvent(...args) { diff --git a/src/js/react/MyAdsDashboard/actions.js b/src/js/react/MyAdsDashboard/actions.js new file mode 100644 index 000000000..ddfa0fcea --- /dev/null +++ b/src/js/react/MyAdsDashboard/actions.js @@ -0,0 +1,144 @@ +define([], function() { + const actions = { + // requests + ADD_NOTIFICATION: 'ADD_NOTIFICATION', + UPDATE_NOTIFICATION: 'UPDATE_NOTIFICATION', + REMOVE_NOTIFICATION: 'REMOVE_NOTIFICATION', + GET_NOTIFICATIONS: 'GET_NOTIFICATIONS', + GET_NOTIFICATION: 'GET_NOTIFICATION', + FETCH_CLASSIC_MIRRORS: 'FETCH_CLASSIC_MIRRORS', + LOGIN_CLASSIC: 'LOGIN_CLASSIC', + IMPORT_CLASSIC: 'IMPORT_CLASSIC', + LOGIN_CLASSIC_CHECK: 'LOGIN_CLASSIC_CHECK', + SET_NOTIFICATION_QUERY_KEY: 'SET_NOTIFICATION_QUERY_KEY', + + // notifications state management + SET_NOTIFICATIONS: 'SET_NOTIFICATIONS', + EDIT_NOTIFICATION: 'EDIT_NOTIFICATION', + SET_EDITING_NOTIFICATION: 'SET_EDITING_NOTIFICATION', + RESET_EDITING_NOTIFICATION: 'RESET_EDITING_NOTIFICATION', + TOGGLE_ACTIVE: 'TOGGLE_ACTIVE', + SET_NOTIFICATION_QUERY: 'SET_NOTIFICATION_QUERY', + GET_NOTIFICATION_QUERIES: 'GET_NOTIFICATION_QUERIES', + + // paging + GOTO: 'GOTO', + + // imports + IMPORT_NOTIFICATIONS: 'IMPORT_NOTIFICATIONS', + + // searching + GET_QUERY_FROM_QID: 'GET_QUERY_FROM_QID', + RUN_QUERY: 'RUN_QUERY', + }; + + const actionCreators = { + addNotification: (notification) => ({ + type: 'API_REQUEST', + scope: actions.ADD_NOTIFICATION, + options: { + type: 'POST', + target: 'vault/notifications', + data: notification, + }, + }), + getNotifications: () => ({ + type: 'API_REQUEST', + scope: actions.GET_NOTIFICATIONS, + options: { + type: 'GET', + target: 'vault/notifications', + }, + }), + getNotification: (id) => ({ + type: 'API_REQUEST', + scope: actions.GET_NOTIFICATION, + options: { + type: 'GET', + target: `vault/notifications/${id}`, + }, + }), + updateNotification: (notification) => ({ + type: 'API_REQUEST', + scope: actions.UPDATE_NOTIFICATION, + options: { + type: 'PUT', + target: `vault/notifications/${notification.id}`, + data: notification, + }, + }), + removeNotification: (id) => ({ + type: 'API_REQUEST', + scope: actions.REMOVE_NOTIFICATION, + options: { + type: 'DELETE', + target: `vault/notifications/${id}`, + }, + }), + fetchClassicMirrors: () => ({ + type: 'API_REQUEST', + scope: actions.FETCH_CLASSIC_MIRRORS, + options: { + type: 'GET', + target: 'harbour/mirrors', + }, + }), + loginClassic: (data) => ({ + type: 'API_REQUEST', + scope: actions.LOGIN_CLASSIC, + options: { + type: 'POST', + target: 'harbour/auth/classic', + data: data, + }, + }), + loginClassicCheck: () => ({ + type: 'API_REQUEST', + scope: actions.LOGIN_CLASSIC_CHECK, + options: { + type: 'GET', + target: 'harbour/user', + }, + }), + importClassic: () => ({ + type: 'API_REQUEST', + scope: actions.IMPORT_CLASSIC, + options: { + type: 'GET', + target: 'vault/myads-import', + }, + }), + importNotifications: () => ({ type: actions.IMPORT_NOTIFICATIONS }), + goTo: (payload) => ({ type: actions.GOTO, payload }), + editNotification: (id) => ({ type: actions.EDIT_NOTIFICATION, id }), + toggleActive: (id) => ({ type: actions.TOGGLE_ACTIVE, id }), + getNotificationQueries: (id) => ({ + type: 'API_REQUEST', + scope: actions.GET_NOTIFICATION_QUERIES, + options: { + type: 'GET', + target: `vault/notification_query/${id}`, + }, + }), + getQueryFromQID: (qid) => ({ + type: 'API_REQUEST', + scope: 'GET_QUERY_FROM_QID', + options: { + type: 'GET', + target: `vault/query/${qid}`, + }, + }), + runQuery: (id, queryKey) => ({ + type: 'RUN_QUERY', + payload: { + id, + queryKey, + }, + }), + }; + + return { + ...actions, + ...actionCreators, + }; +}); diff --git a/src/js/react/MyAdsDashboard/components/ActionsDropdown.jsx.js b/src/js/react/MyAdsDashboard/components/ActionsDropdown.jsx.js new file mode 100644 index 000000000..908aa8199 --- /dev/null +++ b/src/js/react/MyAdsDashboard/components/ActionsDropdown.jsx.js @@ -0,0 +1,111 @@ +/* eslint-disable no-script-url */ +define(['react', 'react-bootstrap', 'react-prop-types'], function( + React, + { Dropdown, MenuItem, Label }, + PropTypes +) { + const renderRunButtons = (item, onSelect) => { + let labels = []; + if (item.type === 'template') { + if (item.template === 'arxiv') { + if (item.data === null) { + labels = ['Search']; + } else { + labels = [ + 'Keyword Matches - Recent Papers', + 'Other Recent Papers in Selected Categories', + ]; + } + } else if (item.template === 'keyword' && item.data !== null) { + labels = ['Recent Papers', 'Most Popular', 'Most Cited']; + } else { + labels = ['Search']; + } + } else { + labels = ['Search']; + } + return labels.map((l, i) => ( + +