From 2690160c088ba7b3efb4977575b7dfc8e823f9bd Mon Sep 17 00:00:00 2001 From: Daniel Vassallo Date: Thu, 17 Oct 2019 12:59:52 -0700 Subject: [PATCH] Change tagline to: Create secure and GDPR-compliant web apps --- .vscode/settings.json | 3 + package-lock.json | 759 +++++++++++++++++++----------------- package.json | 7 +- postcss.config.js | 9 +- src/img/logo.png | Bin 19507 -> 15511 bytes src/index.js | 24 +- src/pages/about.html | 11 +- src/pages/index.html | 72 ++-- src/pages/mailing-list.html | 12 +- src/partials/header.html | 23 +- src/style.css | 42 +- src/template.html | 4 +- webpack.config.js | 8 - 13 files changed, 517 insertions(+), 457 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9976383 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "html.format.wrapLineLength": 0 +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b311620..0ae85a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/cli": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.6.2.tgz", - "integrity": "sha512-JDZ+T/br9pPfT2lmAMJypJDTTTHM9ePD/ED10TRjRzJVdEVy+JB3iRlhzYmTt5YkNgHvxWGlUVnLtdv6ruiDrQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.6.4.tgz", + "integrity": "sha512-tqrDyvPryBM6xjIyKKUwr3s8CzmmYidwgdswd7Uc/Cv0ogZcuS1TYQTLx/eWKP3UbJ6JxZAiYlBZabXm/rtRsQ==", "dev": true, "requires": { "chokidar": "^2.1.8", @@ -32,18 +32,18 @@ } }, "@babel/core": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.2.tgz", - "integrity": "sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", + "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", + "@babel/generator": "^7.6.4", "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.2", + "@babel/parser": "^7.6.4", "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0", + "@babel/traverse": "^7.6.3", + "@babel/types": "^7.6.3", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", @@ -71,12 +71,12 @@ } }, "@babel/generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", - "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", + "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", "dev": true, "requires": { - "@babel/types": "^7.6.0", + "@babel/types": "^7.6.3", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -297,9 +297,9 @@ } }, "@babel/parser": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", - "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", + "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -439,9 +439,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.2.tgz", - "integrity": "sha512-zZT8ivau9LOQQaOGC7bQLQOT4XPkPXgN2ERfUgk1X8ql+mVkLc4E8eKk+FO3o0154kxzqenWCorfmEXpEZcrSQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -594,9 +594,9 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.2.tgz", - "integrity": "sha512-xBdB+XOs+lgbZc2/4F5BVDVcDNS4tcSKQc96KmlqLEAwz6tpYPEvPdmDfvVG0Ssn8lAhronaRs6Z6KSexIpK5g==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", + "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", "dev": true, "requires": { "regexpu-core": "^4.6.0" @@ -740,9 +740,9 @@ } }, "@babel/preset-env": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.2.tgz", - "integrity": "sha512-Ru7+mfzy9M1/YTEtlDS8CD45jd22ngb9tXnn64DvQK3ooyqSw9K4K9DUWmYknTTVk4TqygL9dqCrZgm1HMea/Q==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", + "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -761,7 +761,7 @@ "@babel/plugin-transform-arrow-functions": "^7.2.0", "@babel/plugin-transform-async-to-generator": "^7.5.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.2", + "@babel/plugin-transform-block-scoping": "^7.6.3", "@babel/plugin-transform-classes": "^7.5.5", "@babel/plugin-transform-computed-properties": "^7.2.0", "@babel/plugin-transform-destructuring": "^7.6.0", @@ -776,7 +776,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.6.0", "@babel/plugin-transform-modules-systemjs": "^7.5.0", "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.2", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", @@ -789,7 +789,7 @@ "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.0", + "@babel/types": "^7.6.3", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", @@ -798,9 +798,9 @@ } }, "@babel/runtime": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.2.tgz", - "integrity": "sha512-EXxN64agfUqqIGeEjI5dL5z0Sw0ZwWo1mLTi4mQowCZ42O59b7DRpZAnTC6OqdF28wMBMFKNb/4uFGrVaigSpg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", + "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.2" @@ -818,17 +818,17 @@ } }, "@babel/traverse": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", - "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", + "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", + "@babel/generator": "^7.6.3", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.2", - "@babel/types": "^7.6.0", + "@babel/parser": "^7.6.3", + "@babel/types": "^7.6.3", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" @@ -852,9 +852,9 @@ } }, "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", + "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -862,6 +862,16 @@ "to-fast-properties": "^2.0.0" } }, + "@fullhuman/postcss-purgecss": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-1.3.0.tgz", + "integrity": "sha512-zvfS3dPKD2FAtMcXapMJXGbDgEp9E++mLR6lTgSruv6y37uvV5xJ1crVktuC1gvnmMwsa7Zh1m05FeEiz4VnIQ==", + "dev": true, + "requires": { + "postcss": "^7.0.14", + "purgecss": "^1.4.0" + } + }, "@jimp/bmp": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.5.4.tgz", @@ -1192,9 +1202,9 @@ "dev": true }, "@types/node": { - "version": "12.7.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.8.tgz", - "integrity": "sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==", + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.1.tgz", + "integrity": "sha512-TJtwsqZ39pqcljJpajeoofYRfeZ7/I/OMUQ5pR4q5wOKf2ocrUvBAZUMhWsOvKx3dVc/aaV5GluBivt0sWqA5A==", "dev": true }, "@types/q": { @@ -1456,9 +1466,9 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "ansi-styles": { @@ -1601,23 +1611,6 @@ "requires": { "object-assign": "^4.1.1", "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } } }, "assert-plus": { @@ -1678,18 +1671,18 @@ "dev": true }, "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "version": "9.6.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.5.tgz", + "integrity": "sha512-rGd50YV8LgwFQ2WQp4XzOTG69u1qQsXn0amww7tjqV5jJuNazgFKYEVItEBngyyvVITKOg20zr2V+9VsrXJQ2g==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", + "browserslist": "^4.7.0", + "caniuse-lite": "^1.0.30000999", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" + "postcss": "^7.0.18", + "postcss-value-parser": "^4.0.2" } }, "aws-sign2": { @@ -1885,9 +1878,9 @@ } }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", "dev": true }, "bmp-js": { @@ -2065,14 +2058,14 @@ } }, "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.1.tgz", + "integrity": "sha512-QtULFqKIAtiyNx7NhZ/p4rB8m3xDozVo/pi5VgTlADLF2tNigz/QH+v0m5qhn7XfHT7u+607NcCNOnC0HZAlMg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" + "caniuse-lite": "^1.0.30000999", + "electron-to-chromium": "^1.3.284", + "node-releases": "^1.1.36" } }, "buffer": { @@ -2170,6 +2163,17 @@ "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + } } }, "cache-base": { @@ -2262,9 +2266,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000997", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000997.tgz", - "integrity": "sha512-BQLFPIdj2ntgBNWp9Q64LGUIEmvhKkzzHhUHR3CD5A9Lb7ZKF20/+sgadhFap69lk5XmK1fTUleDclaRFvgVUA==", + "version": "1.0.30000999", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", + "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==", "dev": true }, "caseless": { @@ -2378,40 +2382,6 @@ "string-width": "^3.1.0", "strip-ansi": "^5.2.0", "wrap-ansi": "^5.1.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 - }, - "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" - } - } } }, "clone": { @@ -2521,9 +2491,9 @@ } }, "commander": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz", - "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "commondir": { @@ -2682,18 +2652,18 @@ "dev": true }, "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", "dev": true }, "core-js-compat": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", - "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.2.tgz", + "integrity": "sha512-gfiK4QnNXhnnHVOIZst2XHdFfdMTPxtR0EGs0TdILMlGIft+087oH6/Sw2xTTIjpWXC9vEwsJA8VG3XTGcmO5g==", "dev": true, "requires": { - "browserslist": "^4.6.6", + "browserslist": "^4.7.0", "semver": "^6.3.0" }, "dependencies": { @@ -2760,6 +2730,58 @@ "sha.js": "^2.4.8" } }, + "cross-env": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", + "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", + "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.1.tgz", + "integrity": "sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3332,24 +3354,6 @@ "lru-cache": "^4.1.5", "semver": "^5.6.0", "sigmund": "^1.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } } }, "ee-first": { @@ -3359,9 +3363,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.270", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.270.tgz", - "integrity": "sha512-426qbfgLn0hVE4pDxok2dcAhA3u5lwXlBg2+i6VWQJvnMZNgevkC6s/qr91YH/avVMKXKwxnR5iBznpivg210A==", + "version": "1.3.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.284.tgz", + "integrity": "sha512-duOA4IWKH4R8ttiE8q/7xfg6eheRvMKlGqOOcGlDukdHEDJ26Wf7cMrCiK9Am11mswR6E/a23jXVA4UPDthTIw==", "dev": true }, "elliptic": { @@ -3407,14 +3411,26 @@ } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { @@ -3450,9 +3466,9 @@ } }, "es-abstract": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", - "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", + "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", "dev": true, "requires": { "es-to-primitive": "^1.2.0", @@ -3463,8 +3479,8 @@ "is-regex": "^1.0.4", "object-inspect": "^1.6.0", "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.0.0", - "string.prototype.trimright": "^2.0.0" + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "es-to-primitive": { @@ -3854,9 +3870,9 @@ }, "dependencies": { "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.2.tgz", + "integrity": "sha512-S1FfZpeBchkhyoY76YAdFzKS4zz9aOK7EeFaNA2aJlyXyA+sgqz6xdxmLPGXEAf0nF44MVN1kSjrA9Kt3ATDQg==", "dev": true } } @@ -4706,6 +4722,43 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "get-caller-file": { @@ -5528,13 +5581,10 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "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 }, "is-function": { "version": "1.0.1", @@ -5802,9 +5852,9 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -5988,12 +6038,21 @@ "dev": true }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "yallist": "^3.0.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + }, + "dependencies": { + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } } }, "make-dir": { @@ -6396,9 +6455,9 @@ } }, "node-forge": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.2.tgz", - "integrity": "sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, "node-libs-browser": { @@ -6443,6 +6502,12 @@ "isarray": "^1.0.0" } }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -6454,16 +6519,33 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } } } }, "node-releases": { - "version": "1.1.33", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.33.tgz", - "integrity": "sha512-I0V30bWQEoHb+10W8oedVoUrdjW5wIkYm0w7vvcrPO95pZY738m1k77GF5sO0vKg5eXYg9oGtrMAETbgZGm11A==", + "version": "1.1.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.36.tgz", + "integrity": "sha512-ggXhX6QGyJSjj3r+6ml2LqqC28XOWmKtpb+a15/Zpr9V3yoNazxJNlcQDS9bYaid5FReEWHEgToH1mwoUceWwg==", "dev": true, "requires": { - "semver": "^5.3.0" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "noop-logger": { @@ -7093,20 +7175,29 @@ "dev": true }, "portfinder": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz", - "integrity": "sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -7979,16 +8070,6 @@ "yargs": "^14.0.0" } }, - "purgecss-webpack-plugin": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/purgecss-webpack-plugin/-/purgecss-webpack-plugin-1.6.0.tgz", - "integrity": "sha512-rVrTWYsOTShUvD5gl0q/krkwTlBUILlyoqRk2XoujNm2dETt276yvK4vP9oyXVPSQyaMCjjP5YPMCq9PNgIlJQ==", - "dev": true, - "requires": { - "purgecss": "^1.4.0", - "webpack-sources": "^1.4.3" - } - }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -8257,6 +8338,23 @@ "htmlparser2": "^3.3.0", "strip-ansi": "^3.0.0", "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "repeat-element": { @@ -8545,12 +8643,12 @@ "dev": true }, "selfsigned": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.6.tgz", - "integrity": "sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", "dev": true, "requires": { - "node-forge": "0.8.2" + "node-forge": "0.9.0" } }, "semver": { @@ -9215,14 +9313,14 @@ "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "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": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "string.prototype.trim": { @@ -9266,12 +9364,12 @@ } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "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": "^2.0.0" + "ansi-regex": "^4.1.0" } }, "strip-eof": { @@ -9446,9 +9544,9 @@ } }, "terser": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.4.tgz", - "integrity": "sha512-Kcrn3RiW8NtHBP0ssOAzwa2MsIRQ8lJWiBG/K7JgqPlomA3mtb2DEmp4/hrUA+Jujx+WZ02zqd7GYD+QRBB/2Q==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", + "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -9505,9 +9603,9 @@ } }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "timers-browserify": { @@ -9917,18 +10015,18 @@ } }, "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "2.0.1" }, "dependencies": { "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", "dev": true } } @@ -10037,9 +10135,9 @@ } }, "webpack": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.0.tgz", - "integrity": "sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g==", + "version": "4.41.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -10086,36 +10184,15 @@ "yargs": "13.2.4" }, "dependencies": { - "ansi-regex": { + "enhanced-resolve": { "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 - }, - "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==", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", "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" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, "supports-color": { @@ -10145,6 +10222,16 @@ "y18n": "^4.0.0", "yargs-parser": "^13.1.0" } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -10170,9 +10257,9 @@ } }, "webpack-dev-server": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.1.tgz", - "integrity": "sha512-9F5DnfFA9bsrhpUCAfQic/AXBVHvq+3gQS+x6Zj0yc1fVVE0erKh2MV4IV12TBewuTrYeeTIRwCH9qLMvdNvTw==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.2.tgz", + "integrity": "sha512-0xxogS7n5jHDQWy0WST0q6Ykp7UGj4YvWh+HVN71JoE7BwPxMZrwgraBvmdEMbDVMBzF0u+mEzn8TQzBm5NYJQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -10184,18 +10271,18 @@ "del": "^4.1.1", "express": "^4.17.1", "html-entities": "^1.2.1", - "http-proxy-middleware": "^0.19.1", + "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", - "is-absolute-url": "^3.0.2", + "is-absolute-url": "^3.0.3", "killable": "^1.0.1", "loglevel": "^1.6.4", "opn": "^5.5.0", "p-retry": "^3.0.1", "portfinder": "^1.0.24", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.6", + "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", "sockjs": "0.3.19", @@ -10204,16 +10291,16 @@ "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.1", + "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", "yargs": "12.0.5" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "cliui": { @@ -10227,6 +10314,12 @@ "wrap-ansi": "^2.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -10259,12 +10352,6 @@ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "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 - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -10302,6 +10389,12 @@ "strip-ansi": "^4.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -10313,6 +10406,15 @@ } } }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -10459,6 +10561,33 @@ "dev": true, "requires": { "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "worker-farm": { @@ -10479,40 +10608,6 @@ "ansi-styles": "^3.2.0", "string-width": "^3.0.0", "strip-ansi": "^5.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 - }, - "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" - } - } } }, "wrappy": { @@ -10584,9 +10679,9 @@ "dev": true }, "yargs": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz", - "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", + "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", "dev": true, "requires": { "cliui": "^5.0.0", @@ -10599,47 +10694,13 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" - }, - "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 - }, - "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" - } - } + "yargs-parser": "^15.0.0" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index aaa62c3..54a27bd 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "version": "1.0.0", "scripts": { "clean": "rm -Rf dist", - "build": "npm run clean && webpack --mode production --config webpack.config.js", + "build": "npm run clean && cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", "start": "webpack-dev-server --mode development --config webpack.config.js" }, "author": "Daniel Vassallo", @@ -16,9 +16,11 @@ "@babel/plugin-transform-runtime": "^7.4.4", "@babel/preset-env": "^7.4.5", "@babel/runtime": "^7.4.5", + "@fullhuman/postcss-purgecss": "^1.3.0", "autoprefixer": "^9.6.0", "babel-loader": "^8.0.6", "babel-polyfill": "^6.26.0", + "cross-env": "^6.0.3", "css-loader": "^2.1.1", "favicons-webpack-plugin": "^1.0.2", "file-loader": "^3.0.1", @@ -31,7 +33,6 @@ "opn-browser-webpack-plugin": "0.0.7", "optimize-css-assets-webpack-plugin": "^5.0.1", "postcss-loader": "^3.0.0", - "purgecss-webpack-plugin": "^1.6.0", "source-map-loader": "^0.2.4", "tailwindcss": "^1.0.4", "terser-webpack-plugin": "^1.3.0", @@ -39,4 +40,4 @@ "webpack-cli": "^3.3.2", "webpack-dev-server": "^3.5.1" } -} +} \ No newline at end of file diff --git a/postcss.config.js b/postcss.config.js index 3487d34..124e6da 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,6 +1,13 @@ module.exports = { plugins: [ require('tailwindcss'), - require('autoprefixer') + require('autoprefixer'), + process.env.NODE_ENV === 'production' && require('@fullhuman/postcss-purgecss')({ + content: [ + './src/**/*.html', + './src/**/*.css', + ], + defaultExtractor: content => content.match(/[A-Za-z0-9-_:/]+/g) || [] + }) ] } \ No newline at end of file diff --git a/src/img/logo.png b/src/img/logo.png index 832c546e23f698a7b1c80df52483494efc52b8ef..265401d36edfbdfc6bbe5032cfb171ce08ac8dc8 100644 GIT binary patch delta 15257 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 JPDHLkV1iR|$VUJG diff --git a/src/index.js b/src/index.js index b73edcb..7a6a8ca 100644 --- a/src/index.js +++ b/src/index.js @@ -19,7 +19,7 @@ window.displayMailChimpStatus = function (data) { return; } - mcStatus.classList.remove('mc-error'); + mcStatus.classList.remove('mc-error') mcStatus.classList.add('mc-success') } @@ -63,4 +63,24 @@ document.addEventListener('submit', function (event) { submitMailChimpForm(event.target) -}, false) \ No newline at end of file +}, false) + +window.toggleMenu = function () { + const menu = document.querySelector('.menu') + const menuOpen = document.querySelector('.menu-open') + const menuClose = document.querySelector('.menu-close') + + if (!menu || !menuOpen || !menuClose) return + + const isOpen = !menu.classList.contains('hidden') + + if (isOpen) { + menu.classList.add('hidden') + menuOpen.classList.remove('hidden') + menuClose.classList.add('hidden') + } else { + menu.classList.remove('hidden') + menuOpen.classList.add('hidden') + menuClose.classList.remove('hidden') + } +} \ No newline at end of file diff --git a/src/pages/about.html b/src/pages/about.html index eaad1fa..7c8352a 100644 --- a/src/pages/about.html +++ b/src/pages/about.html @@ -1,14 +1,9 @@
-

Who's behind this?

+

Who's behind this?

-

This product is the work of Daniel Vassallo and Justin Berman. We're a small independent business, structured to be lean, - profitable, and sustainable. We're here for the long haul. -

+

This product is the work of Daniel Vassallo and Justin Berman. We're a small independent business, structured to be lean, profitable, and sustainable. We're here for the long haul.

-

If you have any questions, or there's anything we can do to help you with your web app, please get in touch. Thank you!

+

If you have any questions, or there's anything we can do to help you with your web app, please get in touch. Thank you!


\ No newline at end of file diff --git a/src/pages/index.html b/src/pages/index.html index 281eff6..2b75a5a 100644 --- a/src/pages/index.html +++ b/src/pages/index.html @@ -1,35 +1,30 @@
-

Userbase allows you to create database-backed web apps using only static JavaScript, HTML, and CSS. No backend code - necessary.

+

Create secure and GDPR-compliant web apps using only static JavaScript, HTML, and CSS.


-

What does it do?

+

What is Userbase?

-

Userbase is a database and backend service, purpose-built for web apps. It is accessible directly from the - browser through a very simple JavaScript SDK.

-

Zero management

-

Unlike a regular database, all Userbase queries run in the browser, with the server-side acting as - a dumb data store. There's no database to manage or worry about. -

-

Built-in user management

-

Userbase takes care of your user accounts. It comes with built-in APIs for user signups, logins, password - resets, and access control.

-

End-to-end encryption

-

Userbase won't show you what your users store in your web app. Yes, that's a feature, not a bug. Userbase spares - you from the liability of handling user data by encrypting everything in the browser, using keys that always stay - with the user.

+

Userbase is a database and backend service, purpose-built for web apps. It is accessible directly from the browser through a very simple JavaScript SDK.

+ +

Zero-management database

+

Unlike a regular database, all Userbase queries run in the browser. The server-side is just a dumb data store, and there's no database to manage or worry about.

+ +

Built-in user accounts

+

Userbase takes care of your user accounts. It comes with built-in APIs for user signups, logins, password resets, and access control.

+ +

End-to-end encryption

+

Userbase won't show you what your users store in your web app. It spares you from the liability of handling user data by encrypting everything in the browser, using keys that always stay with the user.


-

When would I use it?

+

When would I use it?

-

If you're building a web app, you will likely need a database and a backend. Userbase can replace both of those - things...

+

If you're building a web app, you will likely need a database and a backend. Userbase can replace both of those things...

  • If you want to build a web app without writing any backend code.
  • If you never want to see your users' data.
  • @@ -42,22 +37,14 @@
    -

    How do I start?

    +

    How do I start?

    -

    Userbase will be available around mid-December 2019. Enter your email to receive important updates in your inbox. -

    +

    Userbase will be available around mid-December 2019. Enter your email to receive important updates in your inbox.

    -
    + + - - - +