diff --git a/.babelrc.js b/.babelrc.js new file mode 100644 index 0000000000000000000000000000000000000000..189fb2552a16237e7ff7929e89c4a36030a25a72 --- /dev/null +++ b/.babelrc.js @@ -0,0 +1,7 @@ +module.exports = { + presets: [ + '@babel/preset-env', + '@babel/preset-typescript', + '@babel/preset-react', + ], +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..0b5af7129e7c75da6bb7e63de458d6cb97468264 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*.{js,ts,tsx}] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.eslintrc.js b/.eslintrc.js index c115fa7958874a63bed8477b9cf85344c13d7829..373bce7499fafc7e20a61643b9ef7fcfe3d3d902 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -23,6 +23,8 @@ module.exports = { 'no-underscore-dangle': 0, 'no-nested-ternary': 0, 'import/newline-after-import': 0, + 'no-use-before-define': 0, + 'import/prefer-default-export': 0, }, globals: { process: true, diff --git a/.gitignore b/.gitignore index 00813b5c31da451561d91b9223b12e4efdfc8a79..e0dbb1783357774e6d05141f536ccd7fa3abf045 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /build /build-debug /.buildconfig +/theme \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000000000000000000000000000000000..2007037e2885c52788089c8a656b53ae7ae800b7 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "endOfLine": "lf", + "semi": false, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/index.js b/index.js index 82b7cdabb7719a177c066128d79bb6a08b63eeac..9453fdc86d23c5bb67a835f712bddb97d655336c 100755 --- a/index.js +++ b/index.js @@ -1,9 +1,31 @@ #!/usr/bin/env node -const { spawnSync } = require('child_process') +const { spawnSync, spawn } = require('child_process') const config = require('./sitegin/config') +function onBabelExit(code) { + setTimeout(() => { + runBabel({ watch: true }) + }, 500) +} + +function runBabel({ watch = false }) { + const babel = spawn( + './node_modules/.bin/babel', + [ + 'theme-source', + '-d', + 'theme', + '--delete-dir-on-start', + watch ? '--watch' : null, + ].filter(a => a), + { stdio: 'inherit', cwd: __dirname }, + ) + if (watch) babel.on('exit', onBabelExit) +} + ;(async () => { const opts = await config() + runBabel({ watch: !opts.nowatch }) if (opts.config.options.nowatch) { require('./sitegin/index.js') } else { @@ -11,6 +33,8 @@ const config = require('./sitegin/config') process.argv[0], [ './node_modules/.bin/nodemon', + '--ignore', + 'build-debug', 'sitegin/index.js', ...process.argv.slice(2), ], diff --git a/package-lock.json b/package-lock.json index 3ab3e03215b39bb81ed39120b368a83665d4d9bf..f26d5dfdd123c76c4d585dad933b164765d02d7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,103 +4,1996 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/cli": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.7.7.tgz", + "integrity": "sha512-XQw5KyCZyu/M8/0rYiZyuwbgIQNzOrJzs9dDLX+MieSgBwTLvTj4QVbLmxJACAIvQIDT7PtyHN2sC48EOWTgaA==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "commander": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.0.tgz", + "integrity": "sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, "@babel/code-frame": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", + "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.7", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.7", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/generator": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.0.tgz", + "integrity": "sha512-1wdJ6UxHyL1XoJQ119JmvuRX27LRih7iYStMPZOWAjQqeAabFg3dYXKMpgihma+to+0ADsTVVt6oRyUxWZw6Mw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", + "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", + "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz", + "integrity": "sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "esutils": "^2.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-call-delegate": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", + "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz", + "integrity": "sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-member-expression-to-functions": "^7.7.4", + "@babel/helper-optimise-call-expression": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", + "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", + "dev": true, + "requires": { + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/helper-define-map": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", + "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.4", + "@babel/types": "^7.7.4", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", + "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", + "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", + "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", + "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz", + "integrity": "sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-simple-access": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", + "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", + "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-wrap-function": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", + "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.7.4", + "@babel/helper-optimise-call-expression": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-simple-access": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", + "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", + "dev": true, + "requires": { + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", + "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helpers": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", + "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", + "dev": true, + "requires": { + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "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" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.0.tgz", + "integrity": "sha512-GqL+Z0d7B7ADlQBMXlJgvXEbtt5qlqd1YQ5fr12hTSfh7O/vgrEIvJxU2e7aSVrEUn75zTZ6Nd0s8tthrlZnrQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", + "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.7.4", + "@babel/plugin-syntax-async-generators": "^7.7.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", + "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.7.4" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", + "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.7.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz", + "integrity": "sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.7.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz", + "integrity": "sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", + "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", + "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", + "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz", + "integrity": "sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", + "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz", + "integrity": "sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz", + "integrity": "sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", + "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", + "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.7.4" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", + "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", + "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", + "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-define-map": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-optimise-call-expression": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", + "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", + "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz", + "integrity": "sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", + "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", + "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", + "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", + "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "dev": true + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", + "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", + "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/generator": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.0.tgz", - "integrity": "sha512-1wdJ6UxHyL1XoJQ119JmvuRX27LRih7iYStMPZOWAjQqeAabFg3dYXKMpgihma+to+0ADsTVVt6oRyUxWZw6Mw==", + "@babel/plugin-transform-modules-amd": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz", + "integrity": "sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ==", "dev": true, "requires": { - "@babel/types": "^7.7.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" + "@babel/helper-module-transforms": "^7.7.5", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz", + "integrity": "sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-module-transforms": "^7.7.5", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.7.4", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "@babel/plugin-transform-modules-systemjs": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", + "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/helper-hoist-variables": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "@babel/plugin-transform-modules-umd": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", + "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/helper-module-transforms": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", + "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.7.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", + "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", + "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz", + "integrity": "sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.7.4", + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "@babel/types": "^7.7.4" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + } + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", + "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz", + "integrity": "sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.7.tgz", + "integrity": "sha512-SlPjWPbva2+7/ZJbGcoqjl4LsQaLpKEzxW9hcxU7675s24JmdotJOSJ4cgAbV82W3FcZpHIGmRZIlUL8ayMvjw==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.7.4" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.7.4.tgz", + "integrity": "sha512-PWYjSfqrO273mc1pKCRTIJXyqfc9vWYBax88yIhQb+bpw3XChVC7VWS4VwRVs63wFHKxizvGSd00XEr+YB9Q2A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.7.4" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz", + "integrity": "sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.7.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz", + "integrity": "sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", + "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", + "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", + "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", + "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", + "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", + "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz", + "integrity": "sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.7.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", + "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/preset-env": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", + "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.4", + "@babel/plugin-proposal-dynamic-import": "^7.7.4", + "@babel/plugin-proposal-json-strings": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", + "@babel/plugin-syntax-async-generators": "^7.7.4", + "@babel/plugin-syntax-dynamic-import": "^7.7.4", + "@babel/plugin-syntax-json-strings": "^7.7.4", + "@babel/plugin-syntax-object-rest-spread": "^7.7.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", + "@babel/plugin-syntax-top-level-await": "^7.7.4", + "@babel/plugin-transform-arrow-functions": "^7.7.4", + "@babel/plugin-transform-async-to-generator": "^7.7.4", + "@babel/plugin-transform-block-scoped-functions": "^7.7.4", + "@babel/plugin-transform-block-scoping": "^7.7.4", + "@babel/plugin-transform-classes": "^7.7.4", + "@babel/plugin-transform-computed-properties": "^7.7.4", + "@babel/plugin-transform-destructuring": "^7.7.4", + "@babel/plugin-transform-dotall-regex": "^7.7.7", + "@babel/plugin-transform-duplicate-keys": "^7.7.4", + "@babel/plugin-transform-exponentiation-operator": "^7.7.4", + "@babel/plugin-transform-for-of": "^7.7.4", + "@babel/plugin-transform-function-name": "^7.7.4", + "@babel/plugin-transform-literals": "^7.7.4", + "@babel/plugin-transform-member-expression-literals": "^7.7.4", + "@babel/plugin-transform-modules-amd": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.7.5", + "@babel/plugin-transform-modules-systemjs": "^7.7.4", + "@babel/plugin-transform-modules-umd": "^7.7.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", + "@babel/plugin-transform-new-target": "^7.7.4", + "@babel/plugin-transform-object-super": "^7.7.4", + "@babel/plugin-transform-parameters": "^7.7.7", + "@babel/plugin-transform-property-literals": "^7.7.4", + "@babel/plugin-transform-regenerator": "^7.7.5", + "@babel/plugin-transform-reserved-words": "^7.7.4", + "@babel/plugin-transform-shorthand-properties": "^7.7.4", + "@babel/plugin-transform-spread": "^7.7.4", + "@babel/plugin-transform-sticky-regex": "^7.7.4", + "@babel/plugin-transform-template-literals": "^7.7.4", + "@babel/plugin-transform-typeof-symbol": "^7.7.4", + "@babel/plugin-transform-unicode-regex": "^7.7.4", + "@babel/types": "^7.7.4", + "browserslist": "^4.6.0", + "core-js-compat": "^3.6.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } } } }, - "@babel/parser": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.0.tgz", - "integrity": "sha512-GqL+Z0d7B7ADlQBMXlJgvXEbtt5qlqd1YQ5fr12hTSfh7O/vgrEIvJxU2e7aSVrEUn75zTZ6Nd0s8tthrlZnrQ==", - "dev": true + "@babel/preset-react": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.7.4.tgz", + "integrity": "sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.7.4", + "@babel/plugin-transform-react-jsx": "^7.7.4", + "@babel/plugin-transform-react-jsx-self": "^7.7.4", + "@babel/plugin-transform-react-jsx-source": "^7.7.4" + } + }, + "@babel/preset-typescript": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.7.7.tgz", + "integrity": "sha512-Apg0sCTovsSA+pEaI8efnA44b9x4X/7z4P8vsWMiN8rSUaM4y4+Shl5NMWnMl6njvt96+CEb6jwpXAKYAVCSQA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.7.4" + } }, "@babel/template": { "version": "7.7.0", @@ -781,6 +2674,15 @@ "resolve": "^1.12.0" } }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -1113,6 +3015,17 @@ "stream-throttle": "^0.1.3" } }, + "browserslist": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz", + "integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001017", + "electron-to-chromium": "^1.3.322", + "node-releases": "^1.1.44" + } + }, "bs-recipes": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", @@ -1209,6 +3122,12 @@ } } }, + "caniuse-lite": { + "version": "1.0.30001019", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz", + "integrity": "sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g==", + "dev": true + }, "capture-stack-trace": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", @@ -1518,6 +3437,15 @@ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", @@ -1539,6 +3467,24 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" }, + "core-js-compat": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.2.tgz", + "integrity": "sha512-+G28dzfYGtAM+XGvB1C5AS1ZPKfQ47HLhcdeIQdZgQnJVdp7/D0m+W/TErwhgsX6CujRUk/LebB6dCrKrtJrvQ==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1758,6 +3704,12 @@ "kindof": ">= 2.0.0 < 3" } }, + "electron-to-chromium": { + "version": "1.3.328", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.328.tgz", + "integrity": "sha512-x4XefnFxDxFwaQ01d/pppJP9meWhOIJ/gtI6/4jqkpsadq79uL7NYSaX64naLmJqvzUBjSrO3IM2+1b/W9KdPg==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2781,6 +4733,12 @@ "minipass": "^2.6.0" } }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3782,6 +5740,15 @@ } } }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -4145,11 +6112,16 @@ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.13.1", @@ -4437,6 +6409,14 @@ "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", @@ -5123,6 +7103,23 @@ } } }, + "node-releases": { + "version": "1.1.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", + "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "node-sass": { "version": "4.13.0", "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", @@ -5930,6 +7927,12 @@ "fast-diff": "^1.1.2" } }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, "process": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", @@ -5954,6 +7957,16 @@ "nodegit-promise": "~4.0.0" } }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -6027,6 +8040,32 @@ } } }, + "react": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz", + "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.12.0.tgz", + "integrity": "sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.18.0" + } + }, + "react-is": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -6086,11 +8125,35 @@ "strip-indent": "^1.0.1" } }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, "regenerator-runtime": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6106,6 +8169,20 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, "registry-auth-token": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", @@ -6123,6 +8200,29 @@ "rc": "^1.0.1" } }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", + "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -6362,6 +8462,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "scheduler": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", + "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -6661,6 +8770,12 @@ "integrity": "sha512-oQnO02I7JDbtrSKN8Qs3upobCQRythJCBn3DzPmv4m/SoPvhZJDVqHDFkRZ1lZhN2GkBqOR3m7WT79190z9kEg==", "dev": true }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -7567,6 +9682,34 @@ } } }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", diff --git a/package.json b/package.json index ceb5a3174992a9836d7534b38e4b05d54a565cac..63fc4d8390885c0de8f39ec3117165460d5892e4 100644 --- a/package.json +++ b/package.json @@ -26,12 +26,19 @@ "nodemon": "^1.19.4", "nunjucks": "^3.2.0", "nunjucks-date-filter": "^0.1.1", + "react": "^16.12.0", + "react-dom": "^16.12.0", "syntax-error": "^1.4.0", "toml": "^3.0.0", "toml-js": "0.0.8", "walk": "^2.3.14" }, "devDependencies": { + "@babel/cli": "^7.7.7", + "@babel/core": "^7.7.7", + "@babel/preset-env": "^7.7.7", + "@babel/preset-react": "^7.7.4", + "@babel/preset-typescript": "^7.7.7", "babel-eslint": "^10.0.3", "eslint": "^6.6.0", "eslint-config-airbnb-base": "^14.0.0", diff --git a/sitegin/config.js b/sitegin/config.js index 216577f466fca5d21a010602accfbcb113868d8b..716ae58960f48d90847a75f3478e2f19cc0f05c6 100644 --- a/sitegin/config.js +++ b/sitegin/config.js @@ -26,6 +26,12 @@ const options = cli.parse({ 'string', 'theme', ], + themesourcedir: [ + null, + 'Allows to specify arbitrary theme source directory', + 'string', + 'theme-source', + ], builddir: [ null, 'Allows to specify arbitrary content directory.', @@ -63,6 +69,7 @@ module.exports = () => { const config = { options, builddir, + themeSourceDir: options.themesourcedir, sourceDir: options.contentdir, staticDir: options.staticdir, themeDir: options.themedir, diff --git a/sitegin/index.js b/sitegin/index.js index 2923490f0e788af199997841af1858f03f5b8fe8..e1ea9df37094cb435f0d2543c12bbe141d740561 100755 --- a/sitegin/index.js +++ b/sitegin/index.js @@ -57,7 +57,7 @@ function sitegin(config) { doSync() if (!first) { first = true - copyStaticFiles(config.builddir, config.staticDir, config.themeDir) + copyStaticFiles(config.builddir, config.staticDir) } if (runAgain) run() }) @@ -78,7 +78,7 @@ function sitegin(config) { console.log('Sitegin successfully loaded') run() - rendersass(config.builddir, config.themeDir) + rendersass(config.builddir, config.themeSourceDir) if (!options.noserver) { const sync = require('browser-sync').create() @@ -86,6 +86,7 @@ function sitegin(config) { sync.reload('*') } sync.init({ + open: false, server: { baseDir: config.builddir, }, @@ -111,7 +112,7 @@ function sitegin(config) { } } -function copyStaticFiles(builddir, staticdir, themedir) { +function copyStaticFiles(builddir, staticdir) { // STATIC FILES const fsextra = require('node-fs-extra') fsextra.copy( @@ -127,25 +128,18 @@ function copyStaticFiles(builddir, staticdir, themedir) { fsextra.copy(`${staticdir}/articles`, `${builddir}/clanek`, function() { console.log('copy static/articles done') }) - fsextra.copy( - `${themedir}/static`, - builddir, - function(file) { - return !file.match('\\.git') - }, - function() { - console.log(`copy ${themedir}/static done`) - }, - ) } -function rendersass(builddir, themedir) { +function rendersass(builddir, themesourcedir) { // SASS const sass = require('node-sass') const fs = require('fs') const mkdirp = require('mkdirp') - sass.render({ file: `${themedir}/sass/style.scss` }, function(err, result) { + sass.render({ file: `${themesourcedir}/sass/style.scss` }, function( + err, + result, + ) { if (err === null) { console.log('compiled sass') mkdirp(`${builddir}/theme`, () => { diff --git a/sitegin/nunjucks.js b/sitegin/nunjucks.js deleted file mode 100644 index 38f9f09d5f95c8546b432c0e1ef9e45ce27879ea..0000000000000000000000000000000000000000 --- a/sitegin/nunjucks.js +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This job renders `data` using nunjucks template `type` - */ - -const nunjucks = require('nunjucks') -const fs = require('fs') -const dateFilter = require('nunjucks-date-filter') -const util = require('util') -const url = require('url') - -const config = require('./config') - -console.log(`watch: ${config.watch}`) -const env = new nunjucks.Environment( - new nunjucks.FileSystemLoader(`${config.themeDir}/templates`, { - watch: config.watch, - }), -) - -env.addFilter('date', dateFilter) - -env.addFilter('paginationList', (page, count) => { - let curPage = page - const pages = [] - pages.push(curPage) - for (let i = 0; i < count; i += 1) { - curPage = curPage.metadata.prevpage - if (curPage === undefined) break - pages.unshift(curPage) - } - - curPage = page - for (let i = 0; i < count; i += 1) { - curPage = curPage.metadata.nextpage - if (curPage === undefined) break - pages.push(curPage) - } - return pages -}) - -env.addFilter('inspect', obj => util.inspect(obj)) - -env.addFilter('log', obj => console.log(obj)) - -env.addFilter('relURL', (filename, dir_) => { - let dir = dir_ - if (filename.substr(0, 1) === '/' || filename.match('://')) return filename - if (dir.substr(0, 1) !== '/') dir = `/${dir}` - if (filename.match(/\/$/)) return dir + filename - if (dir.match(/\/$/)) return dir + filename - return `${dir}/${filename}` -}) - -env.addFilter('absURL', (rel, base) => url.resolve(base, rel)) - -let formats = {} - -module.exports = (data, type_) => - new Promise((resolve, reject) => { - if (formats[type_]) resolve(formats[type_]) - else { - fs.readdir(`${config.themeDir}/templates`, (err, files_) => { - if (err) { - console.log(config) - reject( - new Error(`Error listing files in ${config.themeDir}/templates`), - ) - return - } - - const files = files_.filter(file => file.match(`${type_}..*.nunj`)) - - const filteredFiles = [] - let todo = 0 - files.forEach(file => { - fs.stat(`${config.themeDir}/templates/${file}`, (err2, stat) => { - if (err2) - reject( - new Error(`Error stating ${config.themeDir}/templates${file}`), - ) - if (stat.isFile()) filteredFiles.push(file) - todo -= 1 - if (todo <= 0) { - formats[type_] = filteredFiles - resolve(filteredFiles) - } - }) - todo += 1 - }) - }) - } - }) - .then(filelist => { - const promises = [] - filelist.forEach(file => { - const type = file.replace(/^.*\.([a-z]+)\.nunj/, '$1') - promises.push( - new Promise((resolve, reject) => { - env.getTemplate(file, (err, tmpl) => { - if (err) - reject(new Error(`Failed to load template ${type}.html.nunj`)) - resolve({ tmpl, type, file }) - }) - }), - ) - }) - return Promise.all(promises) - }) - .then(tmpls => { - const promises = [] - tmpls.forEach(o => { - promises.push( - new Promise((resolve, reject) => { - const param = { - ...data, - config: { - ...data.config, - baseurl: config ? config.options.baseurl : '', - }, - } - o.tmpl.render(param, (err, val) => { - if (err) { - // reject(new Error('Error rendering template '+o.file)); - reject(err) - } - resolve({ content: val, type: o.type }) - }) - }), - ) - }) - return Promise.all(promises) - }) - -module.exports.reset = () => { - formats = {} -} diff --git a/sitegin/templates.js b/sitegin/templates.js new file mode 100644 index 0000000000000000000000000000000000000000..564ccba6e1208f9b3b170670d5fd007f4437cce8 --- /dev/null +++ b/sitegin/templates.js @@ -0,0 +1,40 @@ +/* + * This job renders `data` using nunjucks template `type` + */ +const React = require('react') +const ReactDOM = require('react-dom/server') +const path = require('path') + +const config = require('./config') + +module.exports = async (data, type_) => { + try { + // eslint-disable-next-line import/no-dynamic-require,global-require + const Template = require(path.join( + process.cwd(), + config.themeDir, + 'templates', + `${type_}.js`, + )).default + return [ + { + content: ReactDOM.renderToStaticMarkup( + React.createElement(Template, { + ...data, + config: { + ...data.config, + baseurl: config ? config.options.baseurl : '', + }, + }), + ), + type: 'html', + }, + ] + } catch (e) { + // temporary until I implement all templates + if (e.code === 'MODULE_NOT_FOUND') return [] + throw e + } +} + +module.exports.reset = () => {} diff --git a/sitegin/theme.js b/sitegin/theme.js index 2bdbb1557e61122644fae1ca9b0804bc503362a5..b2cc45e39b2b1ecd137b58d2444aeaba9bab518c 100644 --- a/sitegin/theme.js +++ b/sitegin/theme.js @@ -1,4 +1,4 @@ -const nunjucks = require('./nunjucks') +const templates = require('./templates') module.exports = function theme(_obj) { console.log('Build step: Theme') @@ -11,7 +11,7 @@ module.exports = function theme(_obj) { const runJob = (obj, type) => { todo += 1 - nunjucks(obj, type, _obj.config) + templates(obj, type, _obj.config) .then(data => { // eslint-disable-next-line no-param-reassign if (!obj.rendered) obj.rendered = [] diff --git a/old-theme/static/theme/favicons/android-chrome-144x144.png b/static/theme/favicons/android-chrome-144x144.png similarity index 100% rename from old-theme/static/theme/favicons/android-chrome-144x144.png rename to static/theme/favicons/android-chrome-144x144.png diff --git a/old-theme/static/theme/favicons/android-chrome-192x192.png b/static/theme/favicons/android-chrome-192x192.png similarity index 100% rename from old-theme/static/theme/favicons/android-chrome-192x192.png rename to static/theme/favicons/android-chrome-192x192.png diff --git a/old-theme/static/theme/favicons/android-chrome-36x36.png b/static/theme/favicons/android-chrome-36x36.png similarity index 100% rename from old-theme/static/theme/favicons/android-chrome-36x36.png rename to static/theme/favicons/android-chrome-36x36.png diff --git a/old-theme/static/theme/favicons/android-chrome-48x48.png b/static/theme/favicons/android-chrome-48x48.png similarity index 100% rename from old-theme/static/theme/favicons/android-chrome-48x48.png rename to static/theme/favicons/android-chrome-48x48.png diff --git a/old-theme/static/theme/favicons/android-chrome-72x72.png b/static/theme/favicons/android-chrome-72x72.png similarity index 100% rename from old-theme/static/theme/favicons/android-chrome-72x72.png rename to static/theme/favicons/android-chrome-72x72.png diff --git a/old-theme/static/theme/favicons/android-chrome-96x96.png b/static/theme/favicons/android-chrome-96x96.png similarity index 100% rename from old-theme/static/theme/favicons/android-chrome-96x96.png rename to static/theme/favicons/android-chrome-96x96.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-114x114.png b/static/theme/favicons/apple-touch-icon-114x114.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-114x114.png rename to static/theme/favicons/apple-touch-icon-114x114.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-120x120.png b/static/theme/favicons/apple-touch-icon-120x120.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-120x120.png rename to static/theme/favicons/apple-touch-icon-120x120.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-144x144.png b/static/theme/favicons/apple-touch-icon-144x144.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-144x144.png rename to static/theme/favicons/apple-touch-icon-144x144.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-152x152.png b/static/theme/favicons/apple-touch-icon-152x152.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-152x152.png rename to static/theme/favicons/apple-touch-icon-152x152.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-180x180.png b/static/theme/favicons/apple-touch-icon-180x180.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-180x180.png rename to static/theme/favicons/apple-touch-icon-180x180.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-57x57.png b/static/theme/favicons/apple-touch-icon-57x57.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-57x57.png rename to static/theme/favicons/apple-touch-icon-57x57.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-60x60.png b/static/theme/favicons/apple-touch-icon-60x60.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-60x60.png rename to static/theme/favicons/apple-touch-icon-60x60.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-72x72.png b/static/theme/favicons/apple-touch-icon-72x72.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-72x72.png rename to static/theme/favicons/apple-touch-icon-72x72.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-76x76.png b/static/theme/favicons/apple-touch-icon-76x76.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-76x76.png rename to static/theme/favicons/apple-touch-icon-76x76.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon-precomposed.png b/static/theme/favicons/apple-touch-icon-precomposed.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon-precomposed.png rename to static/theme/favicons/apple-touch-icon-precomposed.png diff --git a/old-theme/static/theme/favicons/apple-touch-icon.png b/static/theme/favicons/apple-touch-icon.png similarity index 100% rename from old-theme/static/theme/favicons/apple-touch-icon.png rename to static/theme/favicons/apple-touch-icon.png diff --git a/old-theme/static/theme/favicons/browserconfig.xml b/static/theme/favicons/browserconfig.xml similarity index 100% rename from old-theme/static/theme/favicons/browserconfig.xml rename to static/theme/favicons/browserconfig.xml diff --git a/old-theme/static/theme/favicons/favicon-16x16.png b/static/theme/favicons/favicon-16x16.png similarity index 100% rename from old-theme/static/theme/favicons/favicon-16x16.png rename to static/theme/favicons/favicon-16x16.png diff --git a/old-theme/static/theme/favicons/favicon-194x194.png b/static/theme/favicons/favicon-194x194.png similarity index 100% rename from old-theme/static/theme/favicons/favicon-194x194.png rename to static/theme/favicons/favicon-194x194.png diff --git a/old-theme/static/theme/favicons/favicon-32x32.png b/static/theme/favicons/favicon-32x32.png similarity index 100% rename from old-theme/static/theme/favicons/favicon-32x32.png rename to static/theme/favicons/favicon-32x32.png diff --git a/old-theme/static/theme/favicons/favicon-96x96.png b/static/theme/favicons/favicon-96x96.png similarity index 100% rename from old-theme/static/theme/favicons/favicon-96x96.png rename to static/theme/favicons/favicon-96x96.png diff --git a/old-theme/static/theme/favicons/favicon.ico b/static/theme/favicons/favicon.ico similarity index 100% rename from old-theme/static/theme/favicons/favicon.ico rename to static/theme/favicons/favicon.ico diff --git a/old-theme/static/theme/favicons/manifest.json b/static/theme/favicons/manifest.json similarity index 100% rename from old-theme/static/theme/favicons/manifest.json rename to static/theme/favicons/manifest.json diff --git a/old-theme/static/theme/favicons/mstile-144x144.png b/static/theme/favicons/mstile-144x144.png similarity index 100% rename from old-theme/static/theme/favicons/mstile-144x144.png rename to static/theme/favicons/mstile-144x144.png diff --git a/old-theme/static/theme/favicons/mstile-150x150.png b/static/theme/favicons/mstile-150x150.png similarity index 100% rename from old-theme/static/theme/favicons/mstile-150x150.png rename to static/theme/favicons/mstile-150x150.png diff --git a/old-theme/static/theme/favicons/mstile-310x150.png b/static/theme/favicons/mstile-310x150.png similarity index 100% rename from old-theme/static/theme/favicons/mstile-310x150.png rename to static/theme/favicons/mstile-310x150.png diff --git a/old-theme/static/theme/favicons/mstile-310x310.png b/static/theme/favicons/mstile-310x310.png similarity index 100% rename from old-theme/static/theme/favicons/mstile-310x310.png rename to static/theme/favicons/mstile-310x310.png diff --git a/old-theme/static/theme/favicons/mstile-70x70.png b/static/theme/favicons/mstile-70x70.png similarity index 100% rename from old-theme/static/theme/favicons/mstile-70x70.png rename to static/theme/favicons/mstile-70x70.png diff --git a/old-theme/static/theme/favicons/safari-pinned-tab.svg b/static/theme/favicons/safari-pinned-tab.svg similarity index 100% rename from old-theme/static/theme/favicons/safari-pinned-tab.svg rename to static/theme/favicons/safari-pinned-tab.svg diff --git a/old-theme/static/theme/highlight.css b/static/theme/highlight.css similarity index 100% rename from old-theme/static/theme/highlight.css rename to static/theme/highlight.css diff --git a/old-theme/static/theme/icon.png b/static/theme/icon.png similarity index 100% rename from old-theme/static/theme/icon.png rename to static/theme/icon.png diff --git a/old-theme/static/theme/icon.svg b/static/theme/icon.svg similarity index 100% rename from old-theme/static/theme/icon.svg rename to static/theme/icon.svg diff --git a/old-theme/static/theme/icon56.png b/static/theme/icon56.png similarity index 100% rename from old-theme/static/theme/icon56.png rename to static/theme/icon56.png diff --git a/old-theme/static/theme/icon64.png b/static/theme/icon64.png similarity index 100% rename from old-theme/static/theme/icon64.png rename to static/theme/icon64.png diff --git a/old-theme/static/theme/icon_blackbg.png b/static/theme/icon_blackbg.png similarity index 100% rename from old-theme/static/theme/icon_blackbg.png rename to static/theme/icon_blackbg.png diff --git a/old-theme/static/theme/icon_borderless.png b/static/theme/icon_borderless.png similarity index 100% rename from old-theme/static/theme/icon_borderless.png rename to static/theme/icon_borderless.png diff --git a/old-theme/static/theme/icon_borderless.svg b/static/theme/icon_borderless.svg similarity index 100% rename from old-theme/static/theme/icon_borderless.svg rename to static/theme/icon_borderless.svg diff --git a/old-theme/static/theme/icon_circle.png b/static/theme/icon_circle.png similarity index 100% rename from old-theme/static/theme/icon_circle.png rename to static/theme/icon_circle.png diff --git a/old-theme/static/theme/js/init.js b/static/theme/js/init.js similarity index 100% rename from old-theme/static/theme/js/init.js rename to static/theme/js/init.js diff --git a/old-theme/static/theme/js/jquery-1.12.0.min.js b/static/theme/js/jquery-1.12.0.min.js similarity index 100% rename from old-theme/static/theme/js/jquery-1.12.0.min.js rename to static/theme/js/jquery-1.12.0.min.js diff --git a/old-theme/static/theme/js/materialize.js b/static/theme/js/materialize.js similarity index 100% rename from old-theme/static/theme/js/materialize.js rename to static/theme/js/materialize.js diff --git a/old-theme/static/theme/js/materialize.min.js b/static/theme/js/materialize.min.js similarity index 100% rename from old-theme/static/theme/js/materialize.min.js rename to static/theme/js/materialize.min.js diff --git a/old-theme/static/theme/js/socket.io-1.4.5.js b/static/theme/js/socket.io-1.4.5.js similarity index 100% rename from old-theme/static/theme/js/socket.io-1.4.5.js rename to static/theme/js/socket.io-1.4.5.js diff --git a/old-theme/static/theme/lightbox2/.gitignore b/static/theme/lightbox2/.gitignore similarity index 100% rename from old-theme/static/theme/lightbox2/.gitignore rename to static/theme/lightbox2/.gitignore diff --git a/old-theme/static/theme/lightbox2/.jscsrc b/static/theme/lightbox2/.jscsrc similarity index 100% rename from old-theme/static/theme/lightbox2/.jscsrc rename to static/theme/lightbox2/.jscsrc diff --git a/old-theme/static/theme/lightbox2/.jshintrc b/static/theme/lightbox2/.jshintrc similarity index 100% rename from old-theme/static/theme/lightbox2/.jshintrc rename to static/theme/lightbox2/.jshintrc diff --git a/old-theme/static/theme/lightbox2/dist/css/lightbox.min.css b/static/theme/lightbox2/dist/css/lightbox.min.css similarity index 100% rename from old-theme/static/theme/lightbox2/dist/css/lightbox.min.css rename to static/theme/lightbox2/dist/css/lightbox.min.css diff --git a/old-theme/static/theme/lightbox2/dist/images/close.png b/static/theme/lightbox2/dist/images/close.png similarity index 100% rename from old-theme/static/theme/lightbox2/dist/images/close.png rename to static/theme/lightbox2/dist/images/close.png diff --git a/old-theme/static/theme/lightbox2/dist/images/loading.gif b/static/theme/lightbox2/dist/images/loading.gif similarity index 100% rename from old-theme/static/theme/lightbox2/dist/images/loading.gif rename to static/theme/lightbox2/dist/images/loading.gif diff --git a/old-theme/static/theme/lightbox2/dist/images/next.png b/static/theme/lightbox2/dist/images/next.png similarity index 100% rename from old-theme/static/theme/lightbox2/dist/images/next.png rename to static/theme/lightbox2/dist/images/next.png diff --git a/old-theme/static/theme/lightbox2/dist/images/prev.png b/static/theme/lightbox2/dist/images/prev.png similarity index 100% rename from old-theme/static/theme/lightbox2/dist/images/prev.png rename to static/theme/lightbox2/dist/images/prev.png diff --git a/old-theme/static/theme/lightbox2/dist/js/lightbox.min.js b/static/theme/lightbox2/dist/js/lightbox.min.js similarity index 100% rename from old-theme/static/theme/lightbox2/dist/js/lightbox.min.js rename to static/theme/lightbox2/dist/js/lightbox.min.js diff --git a/old-theme/static/theme/logo56.png b/static/theme/logo56.png similarity index 100% rename from old-theme/static/theme/logo56.png rename to static/theme/logo56.png diff --git a/old-theme/static/theme/logo64.png b/static/theme/logo64.png similarity index 100% rename from old-theme/static/theme/logo64.png rename to static/theme/logo64.png diff --git a/theme-source/partials/base.js b/theme-source/partials/base.js new file mode 100644 index 0000000000000000000000000000000000000000..2826a8be1a0777586be31f14a91d659abb7187fb --- /dev/null +++ b/theme-source/partials/base.js @@ -0,0 +1,527 @@ +import React from 'react' +import { SymbolSearch, SymbolMenu, SymbolFacebook } from './svgs' +import { Search } from './search' + +export function Base({ + head = null, + metadata = {}, + canonicalURL, + config, + children, + footerlink = null, +}) { + return ( + <html lang="en"> + <head> + <meta httpEquiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta + name="viewport" + content="width=device-width, initial-scale=1, maximum-scale=1.0" + /> + <title>{metadata.title || 'Radioklub OK1KVK'}</title> + + <link rel="canonical" href={canonicalURL} /> + <meta + property="og:title" + content={metadata.title || 'Radioklub OK1KVK'} + /> + <meta property="og:locale" content="cs_CZ" /> + <meta property="og:url" content={canonicalURL} /> + <meta property="og:site_name" content="ok1kvk.cz" /> + <meta property="fb:app_id" content="1419886504744454" /> + + <link + href="https://fonts.googleapis.com/css?family=Roboto&subset=latin,latin-ext" + rel="stylesheet" + type="text/css" + /> + <link + href={`${config.baseurl}/theme/style.css?v=2`} + type="text/css" + rel="stylesheet" + media="screen,projection" + /> + <link + href={`${config.baseurl}/theme/highlight.css`} + type="text/css" + rel="stylesheet" + media="screen,projection" + /> + <link + href={`${config.baseurl}/theme/lightbox2/dist/css/lightbox.min.css`} + type="text/css" + rel="stylesheet" + media="screen,projection" + /> + + <script + src={`${config.baseurl}/theme/js/jquery-1.12.0.min.js`} + ></script> + + <link + rel="apple-touch-icon" + sizes="57x57" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-57x57.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="60x60" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-60x60.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="72x72" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-72x72.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="76x76" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-76x76.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="114x114" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-114x114.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="120x120" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-120x120.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="144x144" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-144x144.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="152x152" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-152x152.png?v=3`} + /> + <link + rel="apple-touch-icon" + sizes="180x180" + href={`${config.baseurl}/theme/favicons/apple-touch-icon-180x180.png?v=3`} + /> + <link + rel="icon" + type="image/png" + href={`${config.baseurl}/theme/favicons/favicon-32x32.png?v=3`} + sizes="32x32" + /> + <link + rel="icon" + type="image/png" + href={`${config.baseurl}/theme/favicons/android-chrome-192x192.png?v=3`} + sizes="192x192" + /> + <link + rel="icon" + type="image/png" + href={`${config.baseurl}/theme/favicons/favicon-96x96.png?v=3`} + sizes="96x96" + /> + <link + rel="icon" + type="image/png" + href={`${config.baseurl}/theme/favicons/favicon-16x16.png?v=3`} + sizes="16x16" + /> + <link + rel="manifest" + href={`${config.baseurl}/theme/favicons/manifest.json?v=3`} + /> + <link + rel="mask-icon" + href={`${config.baseurl}/theme/favicons/safari-pinned-tab.svg?v=3`} + color="#0288d1" + /> + <link + rel="shortcut icon" + href={`${config.baseurl}/theme/favicons/favicon.ico?v=3`} + /> + <meta name="msapplication-TileColor" content="#2d89ef" /> + <meta + name="msapplication-TileImage" + content={`${config.baseurl}/theme/favicons/mstile-144x144.png?v=3`} + /> + <meta + name="msapplication-config" + content={`${config.baseurl}/theme/favicons/browserconfig.xml?v=3`} + /> + <meta name="theme-color" content="#0288d1" /> + {config.devel ? ( + <script + src={`${config.baseurl}/theme/js/socket.io-1.4.5.js`} + ></script> + ) : null} + {head} + </head> + <body> + {/* % block bodyattr %}{% endblock % */} + <div id="all"> + {/* Top nav */} + <nav + className="supernav" + role="navigation" + style={{ zIndex: 5, position: 'absolute' }} + > + <div className="nav-wrapper container"> + <a + data-activates="nav-mobile" + className="menu-icon hide-on-med-and-up" + style={{ float: 'left' }} + > + <SymbolMenu color="#fff" size={false} /> + </a> + <div style={{ zIndex: 2 }} className="brand-logo"> + <a id="logo-container" href={`${config.baseurl}/tag/vse/1/`}> + <img + className="hide-on-small-and-up" + src={`${config.baseurl}/theme/icon56.png`} + /> + <img + className="hide-on-med-and-up hide-on-ultra-small" + src={`${config.baseurl}/theme/logo56.png`} + /> + <img + className="hide-on-small-only" + src={`${config.baseurl}/theme/logo64.png`} + /> + </a> + </div> + <div className="toplinks"> + <a className="hide-on-small-only left" id="aktuality"> + Aktuality + </a> + <a className="hide-on-small-only left" id="clanky"> + ÄŒlánky + </a> + <a className="hide-on-small-only left" id="o-nas"> + O nás + </a> + <a className="search-icon left"> + <SymbolSearch color="#fff" size={false} /> + </a> + </div> + </div> + </nav> + <script + dangerouslySetInnerHTML={{ + __html: ` + $(document).ready(function() { + $(".menu-icon").sideNav(); + $("#o-nas").click(function() { + var body = $("body"); + body.removeClass("show-subnav2"); + body.removeClass("show-subnav3"); + if(body.hasClass("show-subnav1")) + body.removeClass("show-subnav1"); + else + body.addClass("show-subnav1"); + }); + $("#aktuality").click(function() { + var body = $("body"); + body.removeClass("show-subnav1"); + body.removeClass("show-subnav3"); + if(body.hasClass("show-subnav2")) + body.removeClass("show-subnav2"); + else + body.addClass("show-subnav2"); + }); + $("#clanky").click(function() { + var body = $("body"); + body.removeClass("show-subnav1"); + body.removeClass("show-subnav2"); + if(body.hasClass("show-subnav3")) + body.removeClass("show-subnav3"); + else + body.addClass("show-subnav3"); + }) + $("body").click(function(e) { + if(!($(e.target).parents("a").length || $(e.target).is("a"))) { + $("body").removeClass("show-subnav2").removeClass("show-subnav1"); + } + }); + }); + `, + }} + /> + {/* Side nav */} + <ul id="nav-mobile" className="side-nav collapsible"> + <li className="no-padding"> + <a className="collapsible-header waves-effect waves-teal"> + Aktuality + </a> + <div className="collapsible-body"> + <ul> + <li> + <a href={`${config.baseurl}/tag/aktuality`}> + VÅ¡echny aktuality + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/pozvanky`}>Pozvánky</a> + </li> + <li> + <a href={`${config.baseurl}/tag/stalo-se`}>Stalo se</a> + </li> + <li> + <a href={`${config.baseurl}/tag/zavody`}>Závody</a> + </li> + </ul> + </div> + </li> + <li className="no-padding"> + <a className="collapsible-header waves-effect waves-teal"> + ÄŒlánky + </a> + <div className="collapsible-body"> + <ul> + <li> + <a href={`${config.baseurl}/tag/clanky`}>VÅ¡echny Älánky</a> + </li> + <li> + <a href={`${config.baseurl}/tag/programovani`}> + Programovánà + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/mikroprocesory`}> + Mikroprocesory + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/konstrukce`}>Konstrukce</a> + </li> + <li> + <a href={`${config.baseurl}/tag/technicke-clanky`}> + Technické Älánky + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/zajimavosti`}> + ZajÃmavosti + </a> + </li> + </ul> + </div> + </li> + <li className="no-padding"> + <a className="collapsible-header waves-effect waves-teal"> + O nás + </a> + <div className="collapsible-body"> + <ul> + <li> + <a href={`${config.baseurl}/clanek/o-radioklubu`}> + O Radioklubu + </a> + </li> + <li> + <a href={`${config.baseurl}/clanek/kontakt`}>Kontakt</a> + </li> + <li> + <a href={`${config.baseurl}/clanek/krouzek-mladeze`}> + Kroužek mládeže + </a> + </li> + <li> + <a href={`${config.baseurl}/clanek/pro-cleny-rk`}> + Pro Äleny RK + </a> + </li> + </ul> + </div> + </li> + </ul> + + {/* Lower nav */} + <nav + className="subnav subnav1 hide-on-small-and-down" + role="navigation" + > + <div className="nav-wrapper container"> + <ul className="right"> + <li> + <a href={`${config.baseurl}/clanek/o-radioklubu`}> + O Radioklubu + </a> + </li> + <li> + <a href={`${config.baseurl}/clanek/kontakt`}>Kontakt</a> + </li> + <li> + <a href={`${config.baseurl}/clanek/krouzek-mladeze`}> + Kroužek mládeže + </a> + </li> + <li> + <a href={`${config.baseurl}/clanek/pro-cleny-rk`}> + Pro Äleny RK + </a> + </li> + </ul> + </div> + </nav> + {/* Lower nav 2 - Aktuality */} + <nav + className="subnav subnav2 hide-on-small-and-down" + role="navigation" + > + <div className="nav-wrapper container"> + <ul className="right"> + <li> + <a href={`${config.baseurl}/tag/aktuality`}> + VÅ¡echny aktuality + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/pozvanky`}>Pozvánky</a> + </li> + <li> + <a href={`${config.baseurl}/tag/stalo-se`}>Stalo se</a> + </li> + <li> + <a href={`${config.baseurl}/tag/zavody`}>Závody</a> + </li> + </ul> + </div> + </nav> + {/* Lower nav 3 - ÄŒlánky */} + <nav + className="subnav subnav3 hide-on-small-and-down" + role="navigation" + > + <div className="nav-wrapper container"> + <ul className="right"> + <li> + <a href={`${config.baseurl}/tag/clanky`}>VÅ¡echny Älánky</a> + </li> + <li> + <a href={`${config.baseurl}/tag/programovani`}> + Programovánà + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/mikroprocesory`}> + Mikroprocesory + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/konstrukce`}>Konstrukce</a> + </li> + <li> + <a href={`${config.baseurl}/tag/technicke-clanky`}> + Technické Älánky + </a> + </li> + <li> + <a href={`${config.baseurl}/tag/zajimavosti`}>ZajÃmavosti</a> + </li> + </ul> + </div> + </nav> + <Search /> + + {children} + + <footer className="page-footer blue"> + <div className="container s6"> + <a + className="orange-text text-lighten-3" + target="_blank" + href="https://git.ok1kvk.cz/" + > + Gitlab + </a>{' '} + | + <a + className="orange-text text-lighten-3" + target="_blank" + href="http://forum.ok1kvk.cz/" + > + Fórum + </a>{' '} + | + <a + className="orange-text text-lighten-3" + href="/clanek/webkamera/" + > + Webkamera + </a>{' '} + | + <a + className="orange-text text-lighten-3" + href="/clanek/jak-nahlasit-chybu/" + > + Jak nahlásit chybu + </a> + {footerlink} + <div style={{ display: 'inline-block', height: '1em' }}> + <a + style={{ + display: 'block', + float: 'left', + marginTop: '-.5em', + }} + target="_blank" + href="https://www.facebook.com/ok1kvk" + > + <SymbolFacebook color="white" size="2em" /> + </a> + </div> + </div> + <div className="container s6"> + Stránky pro OK1KVK vytvoÅ™ila{' '} + <a + className="orange-text text-lighten-3" + target="_blank" + href="https://codewitchbella.com" + > + Isabella SkoÅ™epová + </a>{' '} + 2015-2020 + </div> + </footer> + + <script src={`${config.baseurl}/theme/js/materialize.js`}></script> + <script src={`${config.baseurl}/theme/js/init.js`}></script> + + <script + dangerouslySetInnerHTML={{ + __html: ` + (function($) { + var onresize = function(){ + $("footer").height("auto"); + $("#content").css("margin-bottom",$("footer").height()); + }; + $(window).resize(onresize); + $(document).load(onresize); + $(document).ready(onresize); + })(jQuery);`, + }} + /> + {config.debug ? null : ( + <script + dangerouslySetInnerHTML={{ + __html: ` + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-74646565-1', 'auto'); + ga('send', 'pageview'); + `, + }} + /> + )} + <script + src={`${config.baseurl}/theme/lightbox2/dist/js/lightbox.min.js`} + ></script> + </div> + </body> + </html> + ) +} diff --git a/theme-source/partials/list.js b/theme-source/partials/list.js new file mode 100644 index 0000000000000000000000000000000000000000..3ef1cc6b4313c1b2469eab8098933133c8f82cc8 --- /dev/null +++ b/theme-source/partials/list.js @@ -0,0 +1,239 @@ +import React from 'react' +import moment from 'moment' +import { Paginator } from './paginator' +import { SymbolBackward, SymbolForward } from './svgs' + +function normalize(value, defaultValue) { + if (value === null || value === undefined || value === false) { + return defaultValue + } + return value +} + +function truncate(input_, length_, killwords, end) { + let input = normalize(input_, '') + const length = length_ || 255 + + if (input.length <= length) { + return input + } + + if (killwords) { + input = input.substring(0, length) + } else { + let idx = input.lastIndexOf(' ', length) + if (idx === -1) { + idx = length + } + + input = input.substring(0, idx) + } + + input += end !== undefined && end !== null ? end : '...' + return input +} + +function trim(str) { + return str.replace(/^\s*|\s*$/g, '') +} + +function striptags(input_, preserveLinebreaks) { + const input = normalize(input_, '') + const tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>|<!--[\s\S]*?-->/gi + const trimmedInput = trim(input.replace(tags, '')) + let res = '' + if (preserveLinebreaks) { + res = trimmedInput + .replace(/^ +| +$/gm, '') // remove leading and trailing spaces + .replace(/ +/g, ' ') // squash adjacent spaces + .replace(/(\r\n)/g, '\n') // normalize linebreaks (CRLF -> LF) + .replace(/\n\n\n+/g, '\n\n') // squash abnormal adjacent linebreaks + } else { + res = trimmedInput.replace(/\s+/gi, ' ') + } + return res +} + +function dateFilter(date, format) { + let result + const errs = [] + const args = [] + let obj + Array.prototype.push.apply(args, arguments) + try { + obj = moment.utc(date) + } catch (err) { + errs.push(err) + } + if (obj) { + try { + if (obj[format] && typeof obj[format] === 'function') { + result = obj[format].apply(obj, args.slice(2)) + } else { + result = obj.format(format) + } + } catch (err) { + errs.push(err) + } + } + + if (errs.length) { + return errs.join('\n') + } + return result +} + +export function List({ subtags, tag, content, metadata, file, config }) { + return ( + <div id="content" class="container"> + <div class="section"> + <div class="row"> + <div class="col"> + <a class="breadcrumb">{tag.text}</a> + {subtags && + subtags.map(subtag => ( + <a + href="{{ config.baseurl }}/{{ subtag.url }}" + class="chip" + key={subtag.url} + > + {subtag.text} + </a> + ))} + </div> + </div> + <div class="row"> + {content.map(page => ( + <div class="col s12 m6 l4" key={page.file}> + <div class="block article"> + <a href="{{ config.baseurl }}/{{ page.file }}"> + <div + style={{ + height: 120, + backgroundImage: page.metadata.image + ? `url('{{ config.baseurl }}{{ page.metadata.image | relURL(page.file) }}')` + : undefined, + }} + className="leadimage light-blue darken-2" + ></div> + </a> + <div class="head-title"> + <a href="{{ config.baseurl }}/{{ page.file }}"> + <h5 class="center">{page.metadata.title}</h5> + </a> + </div> + <div style={{ padding: '0px 10px' }} className="head-perex"> + {page.metadata.perex + ? page.metadata.perex + : page.metadata.perex_e + ? truncate(page.metadata.perex_e) + : page.content + ? truncate(striptags(page.content)) + : null} + </div> + <div class="clear"></div> + <div style={{ padding: 10 }} className="head-info"> + <span + style={{ + color: '#a2a2a2', + textAlign: 'left', + display: 'inline-block', + width: '75%', + }} + > + {dateFilter(page.metadata.published, 'D. M. YYYY')}} napsal + {page.metadata.author.gender === 'F' ? 'a' : ''}{' '} + {page.metadata.author.name} + </span> + <a + style={{ + textAlign: 'right', + display: 'inline-block', + width: '25%', + }} + href="{{ config.baseurl }}/{{ page.file }}" + > + ÄŒÃst dál + </a> + </div> + </div> + </div> + ))} + </div> + <Paginator metadata={metadata} file={file} config={config} /> + </div> + + <div class="hide-on-small-only"> + {metadata.prevurl && ( + <div style={{ left: 0 }} class="sidelink sidelink-l"> + <a href={`${config.baseurl}/${metadata.prevurl}`}> + <div> + <SymbolBackward /> + </div> + </a> + </div> + )} + {metadata.nexturl && ( + <div style={{ right: 0 }} class="sidelink sidelink-r"> + <a href={`${config.baseurl}/${metadata.nexturl}`}> + <div> + <SymbolForward /> + </div> + </a> + </div> + )} + </div> + + <script + dangerouslySetInnerHTML={{ + __html: ` + (function($) { + var onresize = function(){ + // equalize article sizes + $(".head-perex").height("auto"); + var maxHeight = 0; + $(".head-perex").each(function(){ + if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } + }); + $(".head-perex").height(maxHeight); + + $(".head-title").height("auto"); + maxHeight = 0; + $(".head-title").each(function(){ + if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } + }); + $(".head-title").height(maxHeight); + + $(".head-info").height("auto"); + maxHeight = 0; + $(".head-info").each(function(){ + if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } + }); + $(".head-info").height(maxHeight); + + // Sidelink icons of same size + $(".sidelink-icon").css("top",$(window).height()/2); + }; + $(window).resize(onresize); + $(document).load(onresize); + $(document).ready(onresize); + $(document).keyup(function(e) { + if($("#search-overlay").hasClass("shown")) return; + ${ + metadata.nexturl + ? `if(e.key == "ArrowRight") window.location = "${config.baseurl}/${metadata.nexturl}";` + : '' + } + ${ + metadata.prevurl + ? `if(e.key == "ArrowLeft") window.location = "${config.baseurl}/${metadata.prevurl}"` + : '' + } + }); + })(jQuery); + `, + }} + /> + </div> + ) +} diff --git a/theme-source/partials/paginator.js b/theme-source/partials/paginator.js new file mode 100644 index 0000000000000000000000000000000000000000..8dd2ed4a9366a10e92afb357014286fa52f6515c --- /dev/null +++ b/theme-source/partials/paginator.js @@ -0,0 +1,102 @@ +import React from 'react' +import { + SymbolDoubleChevronLeft, + SymbolChevronLeft, + SymbolChevronRight, + SymbolDoubleChevronRight, +} from './svgs' + +function paginationList(page, count) { + let curPage = page + const pages = [] + pages.push(curPage) + for (let i = 0; i < count; i += 1) { + curPage = curPage.metadata.prevpage + if (curPage === undefined) break + pages.unshift(curPage) + } + + curPage = page + for (let i = 0; i < count; i += 1) { + curPage = curPage.metadata.nextpage + if (curPage === undefined) break + pages.push(curPage) + } + return pages +} + +export function Paginator({ metadata, file, config }) { + return ( + <ul class="pagination"> + <li> + <a + href={ + metadata.firstpage + ? `${config.baseurl}/${metadata.firstpage.file}` + : undefined + } + > + <SymbolDoubleChevronLeft + color={metadata.firstpage.file === file ? '#999' : '#000'} + size="1em" + /> + </a> + </li> + <li> + <a + href={ + metadata.prevpage + ? `${config.baseurl}/${metadata.prevpage.file}` + : undefined + } + > + <SymbolChevronLeft + color={metadata.prevpage ? '#000' : '#999'} + size="1em" + /> + </a> + </li> + {paginationList(metadata.thispage, 4).map(page => + page === metadata.thispage ? ( + <li class="active" key={page.pagenumber}> + <a>{page.metadata.pagenumber}</a> + </li> + ) : ( + <li class="waves-effect" key={page.pagenumber}> + <a href="{{ config.baseurl }}/{{ page.file }}"> + {page.metadata.pagenumber} + </a> + </li> + ), + )} + <li> + <a + href={ + metadata.nextpage + ? `${config.baseurl}/${metadata.nextpage.file}` + : undefined + } + > + <SymbolChevronRight + color={metadata.nextpage ? '#000' : '#999'} + size="1em" + /> + </a> + </li> + <li> + <a + href={ + metadata.lastpage + ? `${config.baseurl}/${metadata.lastpage.file}` + : undefined + } + > + <SymbolDoubleChevronRight + color={metadata.lastpage.file === file ? '#999' : '#000'} + size="1em" + /> + </a> + </li> + </ul> + ) +} diff --git a/theme-source/partials/search.js b/theme-source/partials/search.js new file mode 100644 index 0000000000000000000000000000000000000000..ab96710056c47f2e4db5ceaaa2a9ac76c475becd --- /dev/null +++ b/theme-source/partials/search.js @@ -0,0 +1,170 @@ +import React from 'react' +import { SymbolClose } from './svgs' + +export function Search() { + return ( + <> + <div class="hidden" id="search" style={{ display: 'none' }}> + <div> + <div> + <div> + <div style={{ backgroundColor: 'white' }}> + <div id="searchbox" style={{ padding: '0 60px 0 10px' }}> + <form> + <input + style={{ + padding: '0 60px 0 10px', + margin: '0 -10px', + width: '100%', + }} + placeholder="Vyhledávejte psanÃm..." + /> + </form> + <div + style={{ + cursor: 'pointer', + right: 0, + position: 'absolute', + top: 0, + width: 50, + height: 50, + lineHeight: 50, + }} + class="close-search" + > + <div + style={{ + height: '2em', + margin: 'auto 0', + position: 'relative', + top: '50%', + marginTop: '-1em', + }} + > + <SymbolClose color="gray" size="2em" /> + </div> + </div> + </div> + <div id="searchresults"></div> + </div> + </div> + </div> + </div> + </div> + <div id="search-overlay" style={{ display: 'none' }}></div> + <script + dangerouslySetInnerHTML={{ + __html: ` + function debounce(func, wait, immediate) { + var timeout; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + }; + }; + + var csc; + + var myCallback = function() { + var doRender = function() { + var options = {}; + options[google.search.Search.RESTRICT_EXTENDED_ARGS] = { + 'as_sitesearch': 'ok1kvk.cz' + }; + + csc = new google.search.CustomSearchControl('003089460452505374651:q5prtsadbio', options); + csc.setLinkTarget (google.search.Search.LINK_TARGET_SELF); + + var drawOptions = new google.search.DrawOptions(); + drawOptions.enableSearchResultsOnly(); + csc.draw("searchresults", drawOptions); + + var s = $("#searchbox input").val() + if(s != "") + csc.execute(s); + } + if (document.readyState == 'complete') { + doRender(); + } else { + google.setOnLoadCallback(doRender, true); + } + }; + + window.__gcse = { + parsetags: 'explicit', + callback: myCallback + }; + + (function() { + var cx = '003089460452505374651:q5prtsadbio'; + var gcse = document.createElement('script'); gcse.type = 'text/javascript'; + gcse.async = true; + gcse.src = 'https://cse.google.com/cse.js?cx=' + cx; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); + })(); + + $("#searchbox form").submit(function(e) { + e.preventDefault(); + }); + + $("#searchbox form").on("input", debounce(function(e) { + var s = $("#searchbox input").val() + if(s == "") { + $("#searchresults").html(""); + myCallback(); + } else + csc.execute(s); + },250)); + + (function() { + var searchHeight = $('#search').height(); + var adjustHeight = function() { + var newh = $('#search').height(); + if(newh != searchHeight) { + searchHeight = newh; + $("#all").height("auto"); + if(!$("#search").hasClass("hidden") && $("#all").height() < searchHeight+20+194) { + $("#all").height(searchHeight+20+194); + } + } + } + // Resize page on searching + $("#search > div").bind('DOMSubtreeModified', adjustHeight); + + // Search showing + $(".search-icon").on("click", function() { + $("#search").show(); + setTimeout(function() { + $("#search").removeClass("hidden"); + $("body").append(''); + $("#search-overlay").show().addClass("shown"); + adjustHeight(); + setTimeout(function() { + $("#searchbox input").focus(); + }, 320); + },0); + }); + + // Search hiding on search overlay click + $("#search-overlay, .close-search").click(function() { + $("#search-overlay").removeClass("shown"); + $("#search").addClass("hidden"); + setTimeout(function() { + adjustHeight(); + $("#search").hide(); + },320); + }); + })(); + `, + }} + /> + </> + ) +} diff --git a/theme-source/partials/svgs.js b/theme-source/partials/svgs.js new file mode 100644 index 0000000000000000000000000000000000000000..6a06003405c0beeebf41e3c2e1b1fee2fd566625 --- /dev/null +++ b/theme-source/partials/svgs.js @@ -0,0 +1,104 @@ +import React from 'react' + +function SVGSymbol({ color, size = '24px', d }) { + return ( + <svg + style={{ + marginTop: 'auto', + marginBottom: 'auto', + display: 'inline-block', + width: size, + height: size, + }} + viewBox="0 0 24 24" + > + <path fill={color || undefined} d={d} /> + </svg> + ) +} + +export function SymbolChevronLeft(props) { + return ( + <SVGSymbol + d="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z" + {...props} + /> + ) +} + +export function SymbolDoubleChevronLeft(props) { + return ( + <SVGSymbol + d="M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z" + {...props} + /> + ) +} + +export function SymbolChevronRight(props) { + return ( + <SVGSymbol + d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" + {...props} + /> + ) +} + +export function SymbolDoubleChevronRight(props) { + return ( + <SVGSymbol + d="M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z" + {...props} + /> + ) +} + +export function SymbolForward(props) { + return <SVGSymbol d="M12,8V4L20,12L12,20V16H4V8H12Z" {...props} /> +} + +export function SymbolBackward(props) { + return <SVGSymbol d="m 12,16 0,4 -8,-8 8,-8 0,4 8,0 0,8 -8,0 z" {...props} /> +} + +export function SymbolMenu(props) { + return ( + <SVGSymbol d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z" {...props} /> + ) +} + +export function SymbolSearch(props) { + return ( + <SVGSymbol + d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" + {...props} + /> + ) +} + +export function SymbolFacebook(props) { + return ( + <SVGSymbol + d="M19,4V7H17A1,1 0 0,0 16,8V10H19V13H16V20H13V13H11V10H13V7.5C13,5.56 14.57,4 16.5,4M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" + {...props} + /> + ) +} + +export function SymbolGplus(props) { + return ( + <SVGSymbol + d="M20,2A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4C2,2.89 2.9,2 4,2H20M20,12H18V10H17V12H15V13H17V15H18V13H20V12M9,11.29V13H11.86C11.71,13.71 11,15.14 9,15.14C7.29,15.14 5.93,13.71 5.93,12C5.93,10.29 7.29,8.86 9,8.86C10,8.86 10.64,9.29 11,9.64L12.36,8.36C11.5,7.5 10.36,7 9,7C6.21,7 4,9.21 4,12C4,14.79 6.21,17 9,17C11.86,17 13.79,15 13.79,12.14C13.79,11.79 13.79,11.57 13.71,11.29H9Z" + {...props} + /> + ) +} + +export function SymbolClose(props) { + return ( + <SVGSymbol + d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" + {...props} + /> + ) +} diff --git a/old-theme/sass/components/_buttons.scss b/theme-source/sass/components/_buttons.scss similarity index 100% rename from old-theme/sass/components/_buttons.scss rename to theme-source/sass/components/_buttons.scss diff --git a/old-theme/sass/components/_cards.scss b/theme-source/sass/components/_cards.scss similarity index 100% rename from old-theme/sass/components/_cards.scss rename to theme-source/sass/components/_cards.scss diff --git a/old-theme/sass/components/_carousel.scss b/theme-source/sass/components/_carousel.scss similarity index 100% rename from old-theme/sass/components/_carousel.scss rename to theme-source/sass/components/_carousel.scss diff --git a/old-theme/sass/components/_chips.scss b/theme-source/sass/components/_chips.scss similarity index 100% rename from old-theme/sass/components/_chips.scss rename to theme-source/sass/components/_chips.scss diff --git a/old-theme/sass/components/_collapsible.scss b/theme-source/sass/components/_collapsible.scss similarity index 100% rename from old-theme/sass/components/_collapsible.scss rename to theme-source/sass/components/_collapsible.scss diff --git a/old-theme/sass/components/_color.scss b/theme-source/sass/components/_color.scss similarity index 100% rename from old-theme/sass/components/_color.scss rename to theme-source/sass/components/_color.scss diff --git a/old-theme/sass/components/_dropdown.scss b/theme-source/sass/components/_dropdown.scss similarity index 100% rename from old-theme/sass/components/_dropdown.scss rename to theme-source/sass/components/_dropdown.scss diff --git a/old-theme/sass/components/_form.scss b/theme-source/sass/components/_form.scss similarity index 100% rename from old-theme/sass/components/_form.scss rename to theme-source/sass/components/_form.scss diff --git a/old-theme/sass/components/_global.scss b/theme-source/sass/components/_global.scss similarity index 100% rename from old-theme/sass/components/_global.scss rename to theme-source/sass/components/_global.scss diff --git a/old-theme/sass/components/_grid.scss b/theme-source/sass/components/_grid.scss similarity index 100% rename from old-theme/sass/components/_grid.scss rename to theme-source/sass/components/_grid.scss diff --git a/old-theme/sass/components/_icons-material-design.scss b/theme-source/sass/components/_icons-material-design.scss similarity index 100% rename from old-theme/sass/components/_icons-material-design.scss rename to theme-source/sass/components/_icons-material-design.scss diff --git a/old-theme/sass/components/_materialbox.scss b/theme-source/sass/components/_materialbox.scss similarity index 100% rename from old-theme/sass/components/_materialbox.scss rename to theme-source/sass/components/_materialbox.scss diff --git a/old-theme/sass/components/_mixins.scss b/theme-source/sass/components/_mixins.scss similarity index 100% rename from old-theme/sass/components/_mixins.scss rename to theme-source/sass/components/_mixins.scss diff --git a/old-theme/sass/components/_modal.scss b/theme-source/sass/components/_modal.scss similarity index 100% rename from old-theme/sass/components/_modal.scss rename to theme-source/sass/components/_modal.scss diff --git a/old-theme/sass/components/_navbar.scss b/theme-source/sass/components/_navbar.scss similarity index 100% rename from old-theme/sass/components/_navbar.scss rename to theme-source/sass/components/_navbar.scss diff --git a/old-theme/sass/components/_normalize.scss b/theme-source/sass/components/_normalize.scss similarity index 100% rename from old-theme/sass/components/_normalize.scss rename to theme-source/sass/components/_normalize.scss diff --git a/old-theme/sass/components/_prefixer.scss b/theme-source/sass/components/_prefixer.scss similarity index 100% rename from old-theme/sass/components/_prefixer.scss rename to theme-source/sass/components/_prefixer.scss diff --git a/old-theme/sass/components/_preloader.scss b/theme-source/sass/components/_preloader.scss similarity index 100% rename from old-theme/sass/components/_preloader.scss rename to theme-source/sass/components/_preloader.scss diff --git a/old-theme/sass/components/_roboto.scss b/theme-source/sass/components/_roboto.scss similarity index 100% rename from old-theme/sass/components/_roboto.scss rename to theme-source/sass/components/_roboto.scss diff --git a/old-theme/sass/components/_sideNav.scss b/theme-source/sass/components/_sideNav.scss similarity index 100% rename from old-theme/sass/components/_sideNav.scss rename to theme-source/sass/components/_sideNav.scss diff --git a/old-theme/sass/components/_slider.scss b/theme-source/sass/components/_slider.scss similarity index 100% rename from old-theme/sass/components/_slider.scss rename to theme-source/sass/components/_slider.scss diff --git a/old-theme/sass/components/_table_of_contents.scss b/theme-source/sass/components/_table_of_contents.scss similarity index 100% rename from old-theme/sass/components/_table_of_contents.scss rename to theme-source/sass/components/_table_of_contents.scss diff --git a/old-theme/sass/components/_tabs.scss b/theme-source/sass/components/_tabs.scss similarity index 100% rename from old-theme/sass/components/_tabs.scss rename to theme-source/sass/components/_tabs.scss diff --git a/old-theme/sass/components/_toast.scss b/theme-source/sass/components/_toast.scss similarity index 100% rename from old-theme/sass/components/_toast.scss rename to theme-source/sass/components/_toast.scss diff --git a/old-theme/sass/components/_tooltip.scss b/theme-source/sass/components/_tooltip.scss similarity index 100% rename from old-theme/sass/components/_tooltip.scss rename to theme-source/sass/components/_tooltip.scss diff --git a/old-theme/sass/components/_typography.scss b/theme-source/sass/components/_typography.scss similarity index 100% rename from old-theme/sass/components/_typography.scss rename to theme-source/sass/components/_typography.scss diff --git a/old-theme/sass/components/_variables.scss b/theme-source/sass/components/_variables.scss similarity index 100% rename from old-theme/sass/components/_variables.scss rename to theme-source/sass/components/_variables.scss diff --git a/old-theme/sass/components/_waves.scss b/theme-source/sass/components/_waves.scss similarity index 100% rename from old-theme/sass/components/_waves.scss rename to theme-source/sass/components/_waves.scss diff --git a/old-theme/sass/components/date_picker/_default.date.scss b/theme-source/sass/components/date_picker/_default.date.scss similarity index 100% rename from old-theme/sass/components/date_picker/_default.date.scss rename to theme-source/sass/components/date_picker/_default.date.scss diff --git a/old-theme/sass/components/date_picker/_default.scss b/theme-source/sass/components/date_picker/_default.scss similarity index 100% rename from old-theme/sass/components/date_picker/_default.scss rename to theme-source/sass/components/date_picker/_default.scss diff --git a/old-theme/sass/components/date_picker/_default.time.scss b/theme-source/sass/components/date_picker/_default.time.scss similarity index 100% rename from old-theme/sass/components/date_picker/_default.time.scss rename to theme-source/sass/components/date_picker/_default.time.scss diff --git a/old-theme/sass/materialize.scss b/theme-source/sass/materialize.scss similarity index 100% rename from old-theme/sass/materialize.scss rename to theme-source/sass/materialize.scss diff --git a/old-theme/sass/search.scss b/theme-source/sass/search.scss similarity index 100% rename from old-theme/sass/search.scss rename to theme-source/sass/search.scss diff --git a/old-theme/sass/style.scss b/theme-source/sass/style.scss similarity index 100% rename from old-theme/sass/style.scss rename to theme-source/sass/style.scss diff --git a/theme-source/templates/tag.js b/theme-source/templates/tag.js new file mode 100644 index 0000000000000000000000000000000000000000..8628c1765786c3ae91bd3039270181ba3d2e0f5f --- /dev/null +++ b/theme-source/templates/tag.js @@ -0,0 +1,14 @@ +import React from 'react' +import { Base } from '../partials/base' +import { List as ListPartial } from '../partials/list' + +export default function List(props) { + return ( + <Base + head={<meta property="og:type" content="website" />} + config={props.config} + > + <ListPartial {...props} /> + </Base> + ) +}