From f037137b55302691025f37cef6812029574706f7 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sat, 25 Apr 2020 15:59:34 -0300 Subject: [PATCH 01/19] Add visualizations project settings --- redash-visualizations/jsconfig.json | 9 + redash-visualizations/package-lock.json | 11686 +++++++++++++++++++++ redash-visualizations/package.json | 78 + redash-visualizations/prettier.config.js | 6 + redash-visualizations/webpack.config.js | 65 + 5 files changed, 11844 insertions(+) create mode 100644 redash-visualizations/jsconfig.json create mode 100644 redash-visualizations/package-lock.json create mode 100644 redash-visualizations/package.json create mode 100644 redash-visualizations/prettier.config.js create mode 100644 redash-visualizations/webpack.config.js diff --git a/redash-visualizations/jsconfig.json b/redash-visualizations/jsconfig.json new file mode 100644 index 0000000000..6b60f37bf0 --- /dev/null +++ b/redash-visualizations/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["./src/*"] + } + }, + "exclude": ["dist", "lib"] +} diff --git a/redash-visualizations/package-lock.json b/redash-visualizations/package-lock.json new file mode 100644 index 0000000000..10781f7c0f --- /dev/null +++ b/redash-visualizations/package-lock.json @@ -0,0 +1,11686 @@ +{ + "name": "redash-visualizations", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "3d-view": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/3d-view/-/3d-view-2.0.0.tgz", + "integrity": "sha1-gxrpQtdQjFCAHj4G+v4ejFdOF74=", + "requires": { + "matrix-camera-controller": "^2.1.1", + "orbit-camera-controller": "^4.0.0", + "turntable-camera-controller": "^3.0.0" + } + }, + "@ant-design/colors": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.2.2.tgz", + "integrity": "sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==", + "dev": true, + "requires": { + "tinycolor2": "^1.4.1" + } + }, + "@ant-design/icons": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.0.6.tgz", + "integrity": "sha512-Hvly7PhImdZo5+UnpRPSpqcYFttTEE9ELCgir6R9cPe99IHciLv97EZTshYTFp4T6i2q0x9nuSLpG11UFeu4Dg==", + "dev": true, + "requires": { + "@ant-design/colors": "^3.1.0", + "@ant-design/icons-svg": "^4.0.0", + "classnames": "^2.2.6", + "insert-css": "^2.0.0", + "rc-util": "^4.9.0" + } + }, + "@ant-design/icons-svg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.0.0.tgz", + "integrity": "sha512-Nai+cd3XUrv/z50gSk1FI08j6rENZ1e93rhKeLTBGwa5WrmHvhn2vowa5+voZW2qkXJn1btS6tdvTEDB90M0Pw==", + "dev": true + }, + "@ant-design/react-slick": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.25.5.tgz", + "integrity": "sha512-fusHR9LkarCARvYTN6cG3yz2/Ogf+HTaJ2XEihIjsjgm6uE1aSXycRFEVDpOFP1Aib51Z2Iz3tgg/gL+WbK8rQ==", + "dev": true, + "requires": { + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "lodash": "^4.17.15", + "resize-observer-polyfill": "^1.5.0" + } + }, + "@babel/cli": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.8.4.tgz", + "integrity": "sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag==", + "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" + } + }, + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "dev": true, + "requires": { + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "dev": true, + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", + "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/types": "^7.9.0" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz", + "integrity": "sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/types": "^7.9.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz", + "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", + "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", + "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", + "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", + "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.9.0", + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz", + "integrity": "sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz", + "integrity": "sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz", + "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.4.tgz", + "integrity": "sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.4", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@choojs/findup": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", + "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", + "requires": { + "commander": "^2.15.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "@mapbox/geojson-area": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz", + "integrity": "sha1-GNeBSqNr8j+7zDefjiaiKSfevxA=", + "requires": { + "wgs84": "0.0.0" + } + }, + "@mapbox/geojson-rewind": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.4.1.tgz", + "integrity": "sha512-mxo2MEr7izA1uOXcDsw99Kgg6xW3P4H2j4n1lmldsgviIelpssvP+jQDivFKOHrOVJDpTTi5oZJvRcHtU9Uufw==", + "requires": { + "@mapbox/geojson-area": "0.2.2", + "concat-stream": "~1.6.0", + "minimist": "^1.2.5", + "sharkdown": "^0.1.0" + } + }, + "@mapbox/geojson-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", + "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==" + }, + "@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha1-zlblOfg1UrWNENZy6k1vya3HsjQ=" + }, + "@mapbox/mapbox-gl-supported": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", + "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==" + }, + "@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=" + }, + "@mapbox/tiny-sdf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz", + "integrity": "sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg==" + }, + "@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4=" + }, + "@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "requires": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" + }, + "@plotly/d3-sankey": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz", + "integrity": "sha512-2jdVos1N3mMp3QW0k2q1ph7Gd6j5PY1YihBrwpkFnKqO+cqtZq3AdEYUeSGXMeLsBDQYiqTVcihYfk8vr5tqhw==", + "requires": { + "d3-array": "1", + "d3-collection": "1", + "d3-shape": "^1.2.0" + } + }, + "@plotly/d3-sankey-circular": { + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/@plotly/d3-sankey-circular/-/d3-sankey-circular-0.33.1.tgz", + "integrity": "sha512-FgBV1HEvCr3DV7RHhDsPXyryknucxtfnLwPtCKKxdolKyTFYoLX/ibEfX39iFYIL7DYbVeRtP43dbFcrHNE+KQ==", + "requires": { + "d3-array": "^1.2.1", + "d3-collection": "^1.0.4", + "d3-shape": "^1.2.0", + "elementary-circuits-directed-graph": "^1.0.4" + } + }, + "@turf/area": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.0.1.tgz", + "integrity": "sha512-Zv+3N1ep9P5JvR0YOYagLANyapGWQBh8atdeR3bKpWcigVXFsEKNUw03U/5xnh+cKzm7yozHD6MFJkqQv55y0g==", + "requires": { + "@turf/helpers": "6.x", + "@turf/meta": "6.x" + } + }, + "@turf/bbox": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.0.1.tgz", + "integrity": "sha512-EGgaRLettBG25Iyx7VyUINsPpVj1x3nFQFiGS3ER8KCI1MximzNLsam3eXRabqQDjyAKyAE1bJ4EZEpGvspQxw==", + "requires": { + "@turf/helpers": "6.x", + "@turf/meta": "6.x" + } + }, + "@turf/centroid": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.0.2.tgz", + "integrity": "sha512-auyDauOtC4eddH7GC3CHFTDu2PKhpSeKCRhwhHhXtJqn2dWCJQNIoCeJRmfXRIbzCWhWvgvQafvvhq8HNvmvWw==", + "requires": { + "@turf/helpers": "6.x", + "@turf/meta": "6.x" + } + }, + "@turf/helpers": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz", + "integrity": "sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==" + }, + "@turf/meta": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.0.2.tgz", + "integrity": "sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA==", + "requires": { + "@turf/helpers": "6.x" + } + }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dev": true, + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "@types/node": { + "version": "13.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", + "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, + "@types/react": { + "version": "16.9.34", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.34.tgz", + "integrity": "sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-lifecycles-compat": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/react-lifecycles-compat/-/react-lifecycles-compat-3.0.1.tgz", + "integrity": "sha512-4KiU5s1Go4xRbf7t6VxUUpBeN5PGjpjpBv9VvET4uiPHC500VNYBclU13f8ehHkHoZL39b2cfwHu6RzbV3b44A==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/shallowequal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/shallowequal/-/shallowequal-1.1.1.tgz", + "integrity": "sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "a-big-triangle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/a-big-triangle/-/a-big-triangle-1.0.3.tgz", + "integrity": "sha1-7v0wsCqPUl6LH3K7a7GwwWdRx5Q=", + "requires": { + "gl-buffer": "^2.1.1", + "gl-vao": "^1.2.0", + "weak-map": "^1.0.5" + } + }, + "abs-svg-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha1-32Acjo0roQ1KdtYl4japo5wnI78=" + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==" + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" + }, + "add-dom-event-listener": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz", + "integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==", + "dev": true, + "requires": { + "object-assign": "4.x" + } + }, + "add-line-numbers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/add-line-numbers/-/add-line-numbers-1.0.1.tgz", + "integrity": "sha1-SNu96kfb0jTer+rGyTzqb3C0t+M=", + "requires": { + "pad-left": "^1.0.2" + } + }, + "affine-hull": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/affine-hull/-/affine-hull-1.0.0.tgz", + "integrity": "sha1-dj/x040GPOt+Jy8X7k17vK+QXF0=", + "requires": { + "robust-orientation": "^1.1.3" + } + }, + "airbnb-prop-types": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.15.0.tgz", + "integrity": "sha512-jUh2/hfKsRjNFC4XONQrxo/n/3GG4Tn6Hl0WlFQN5PY9OMC9loSCoAYKnZsWaP8wEfd5xcrPloK0Zg6iS1xwVA==", + "dev": true, + "requires": { + "array.prototype.find": "^2.1.0", + "function.prototype.name": "^1.1.1", + "has": "^1.0.3", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.9.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "almost-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz", + "integrity": "sha1-+FHGMROHV5lCdqou++jfowZszN0=" + }, + "alpha-complex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/alpha-complex/-/alpha-complex-1.0.0.tgz", + "integrity": "sha1-kIZYcNawVCrnPAwTHU75iWabctI=", + "requires": { + "circumradius": "^1.0.0", + "delaunay-triangulate": "^1.1.6" + } + }, + "alpha-shape": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/alpha-shape/-/alpha-shape-1.0.0.tgz", + "integrity": "sha1-yDEJkj7P2mZ9IWP+Tyb+JHJvZKk=", + "requires": { + "alpha-complex": "^1.0.0", + "simplicial-complex-boundary": "^1.0.0" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "optional": true + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", + "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" + }, + "antd": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/antd/-/antd-4.1.4.tgz", + "integrity": "sha512-YRF/nrAq4R+olKRJxEDqeO4xkTvx+U6ovIQjGew1JDiEHMMhSftpvpYg2Iu5hRdFL66uxQk6VYngMttBpuYm9Q==", + "dev": true, + "requires": { + "@ant-design/icons": "^4.0.0", + "@ant-design/react-slick": "~0.25.5", + "array-tree-filter": "^2.1.0", + "classnames": "~2.2.6", + "copy-to-clipboard": "^3.2.0", + "css-animation": "^1.5.0", + "lodash": "^4.17.13", + "moment": "^2.24.0", + "omit.js": "^1.0.2", + "prop-types": "^15.7.2", + "raf": "^3.4.1", + "rc-animate": "~2.10.2", + "rc-cascader": "~1.0.0", + "rc-checkbox": "~2.2.0", + "rc-collapse": "~1.11.3", + "rc-dialog": "~7.6.0", + "rc-drawer": "~3.1.1", + "rc-dropdown": "~3.0.0", + "rc-field-form": "~1.1.0", + "rc-input-number": "~4.5.4", + "rc-mentions": "~1.1.0", + "rc-menu": "~8.0.1", + "rc-notification": "~4.0.0", + "rc-pagination": "~2.2.0", + "rc-picker": "~1.4.0", + "rc-progress": "~2.5.0", + "rc-rate": "~2.5.1", + "rc-resize-observer": "^0.2.0", + "rc-select": "~10.2.0", + "rc-slider": "~9.2.3", + "rc-steps": "~3.5.0", + "rc-switch": "~1.9.0", + "rc-table": "~7.4.2", + "rc-tabs": "~10.1.1", + "rc-tooltip": "~4.0.2", + "rc-tree": "~3.1.0", + "rc-tree-select": "~3.1.0", + "rc-trigger": "~4.0.0", + "rc-upload": "~3.0.0", + "rc-util": "^4.20.0", + "rc-virtual-list": "^1.1.0", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.20", + "warning": "~4.0.3" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-bounds": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-bounds/-/array-bounds-1.0.1.tgz", + "integrity": "sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==" + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "array-normalize": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array-normalize/-/array-normalize-1.1.4.tgz", + "integrity": "sha512-fCp0wKFLjvSPmCn4F5Tiw4M3lpMZoHlCjfcs7nNzuj3vqQQ1/a8cgB9DXcpDSn18c+coLnaW7rqfcYCvKbyJXg==", + "requires": { + "array-bounds": "^1.0.0" + } + }, + "array-range": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-range/-/array-range-1.0.1.tgz", + "integrity": "sha1-9W5GWRhDYRxqVvd+8C7afFAIm/w=" + }, + "array-rearrange": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/array-rearrange/-/array-rearrange-2.2.2.tgz", + "integrity": "sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w==" + }, + "array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.find": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", + "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.4" + } + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-validator": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.2.4.tgz", + "integrity": "sha512-mTgzMJixkrh+5t2gbYoua8MLy11GHkQqFE6tbhY5Aqc4jEDGsR4BWP+sVQiYDHtzTMB8WIwI/ypObTVPcTZInw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atob-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-1.0.0.tgz", + "integrity": "sha1-uI3KYAaSK5YglPdVaCa6sxxKKWs=" + }, + "autoprefixer": { + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.5.tgz", + "integrity": "sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==", + "dev": true, + "requires": { + "browserslist": "^3.2.8", + "caniuse-lite": "^1.0.30000864", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.23", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true, + "optional": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "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" + } + }, + "babel-plugin-module-resolver": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.0.0.tgz", + "integrity": "sha512-3pdEq3PXALilSJ6dnC4wMWr0AZixHRM4utpdpBR9g5QG7B7JwWyukQv7a9hVxkbGFl+nQbrHDqqQOIBtTXTP/Q==", + "dev": true, + "requires": { + "find-babel-config": "^1.2.0", + "glob": "^7.1.6", + "pkg-up": "^3.1.0", + "reselect": "^4.0.0", + "resolve": "^1.13.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "barycentric": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/barycentric/-/barycentric-1.0.1.tgz", + "integrity": "sha1-8VYruJGyb0/sRjqC7to2V4AOxog=", + "requires": { + "robust-linear-solve": "^1.0.0" + } + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "beautifymarker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/beautifymarker/-/beautifymarker-1.0.7.tgz", + "integrity": "sha512-iWj/8cZOJ2jW7N7VkmmmPg7gFLgU6C8ArX6m6/hkIz0LaktVWtE+kpL351AE6MK5sX57/CzzXH54jlYD9agxnQ==" + }, + "big-rat": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/big-rat/-/big-rat-1.0.4.tgz", + "integrity": "sha1-do0JO7V5MN0Y7Vdcf8on3FORreo=", + "requires": { + "bit-twiddle": "^1.0.2", + "bn.js": "^4.11.6", + "double-bits": "^1.1.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "binary-search-bounds": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.4.tgz", + "integrity": "sha512-2hg5kgdKql5ClF2ErBcSx0U5bnl5hgS4v7wMnLFodyR47yMtj2w+UAZB+0CiqyHct2q543i7Bi4/aMIegorCCg==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bit-twiddle": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", + "integrity": "sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4=" + }, + "bitmap-sdf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bitmap-sdf/-/bitmap-sdf-1.0.3.tgz", + "integrity": "sha512-ojYySSvWTx21cbgntR942zgEgqj38wHctN64vr4vYRFf3GKVmI23YlA94meWGkFslidwLwGCsMy2laJ3g/94Sg==", + "requires": { + "clamp": "^1.0.1" + } + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boundary-cells": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/boundary-cells/-/boundary-cells-2.0.1.tgz", + "integrity": "sha1-6QWo0UGc9Hyza+Pb9SXbXiTeAEI=", + "requires": { + "tape": "^4.0.0" + } + }, + "box-intersect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/box-intersect/-/box-intersect-1.0.2.tgz", + "integrity": "sha512-yJeMwlmFPG1gIa7Rs/cGXeI6iOj6Qz5MG5PE61xLKpElUGzmJ4abm+qsLpzxKJFpsSDq742BQEocr8dI2t8Nxw==", + "requires": { + "bit-twiddle": "^1.0.2", + "typedarray-pool": "^1.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buble": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.8.tgz", + "integrity": "sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA==", + "requires": { + "acorn": "^6.1.1", + "acorn-dynamic-import": "^4.0.0", + "acorn-jsx": "^5.0.1", + "chalk": "^2.4.2", + "magic-string": "^0.25.3", + "minimist": "^1.2.0", + "os-homedir": "^2.0.0", + "regexpu-core": "^4.5.4" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + } + } + }, + "bubleify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bubleify/-/bubleify-1.2.1.tgz", + "integrity": "sha512-vp3NHmaQVoKaKWvi15FTMinPNjfp+47+/kFJ9ifezdMF/CBLArCxDVUh+FQE3qRxCRj1qyjJqilTBHHqlM8MaQ==", + "requires": { + "buble": "^0.19.3" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "caniuse-lite": { + "version": "1.0.30001039", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz", + "integrity": "sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q==", + "dev": true + }, + "canvas-fit": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/canvas-fit/-/canvas-fit-1.5.0.tgz", + "integrity": "sha1-rhO+Zq3kL1vg5IfjRfzjCl5bXl8=", + "requires": { + "element-size": "^1.1.1" + } + }, + "cardinal": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz", + "integrity": "sha1-ylu2iltRG5D+k7ms6km97lwyv+I=", + "requires": { + "ansicolors": "~0.2.1", + "redeyed": "~0.4.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "cdt2d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cdt2d/-/cdt2d-1.0.0.tgz", + "integrity": "sha1-TyEkNLzWe9s9aLj+9KzcLFRBUUE=", + "requires": { + "binary-search-bounds": "^2.0.3", + "robust-in-sphere": "^1.1.3", + "robust-orientation": "^1.1.3" + } + }, + "cell-orientation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cell-orientation/-/cell-orientation-1.0.1.tgz", + "integrity": "sha1-tQStlqZq0obZ7dmFoiU9A7gNKFA=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chroma-js": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-1.4.1.tgz", + "integrity": "sha512-jTwQiT859RTFN/vIf7s+Vl/Z2LcMrvMv3WUFmd/4u76AdlFC0NTNgqEEFPcRiHmAswPsMiQEDZLM8vX8qXpZNQ==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circumcenter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/circumcenter/-/circumcenter-1.0.0.tgz", + "integrity": "sha1-INeqE7F/usUvUtpPVMasi5Bu5Sk=", + "requires": { + "dup": "^1.0.0", + "robust-linear-solve": "^1.0.0" + } + }, + "circumradius": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/circumradius/-/circumradius-1.0.0.tgz", + "integrity": "sha1-cGxEfj5VzR7T0RvRM+N8JSzDBbU=", + "requires": { + "circumcenter": "^1.0.0" + } + }, + "clamp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", + "integrity": "sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ=" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "clean-pslg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/clean-pslg/-/clean-pslg-1.1.2.tgz", + "integrity": "sha1-vTXHRgt+irWp92Gl7VF5aqPIbBE=", + "requires": { + "big-rat": "^1.0.3", + "box-intersect": "^1.0.1", + "nextafter": "^1.0.0", + "rat-vec": "^1.1.1", + "robust-segment-intersect": "^1.0.1", + "union-find": "^1.0.2", + "uniq": "^1.0.1" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-alpha": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/color-alpha/-/color-alpha-1.0.4.tgz", + "integrity": "sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A==", + "requires": { + "color-parse": "^1.3.8" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/color-id/-/color-id-1.1.0.tgz", + "integrity": "sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g==", + "requires": { + "clamp": "^1.0.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-normalize": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/color-normalize/-/color-normalize-1.5.0.tgz", + "integrity": "sha512-rUT/HDXMr6RFffrR53oX3HGWkDOP9goSAQGBkUaAYKjOE2JxozccdGyufageWDlInRAjm/jYPrf/Y38oa+7obw==", + "requires": { + "clamp": "^1.0.1", + "color-rgba": "^2.1.1", + "dtype": "^2.0.0" + } + }, + "color-parse": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.3.8.tgz", + "integrity": "sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA==", + "requires": { + "color-name": "^1.0.0", + "defined": "^1.0.0", + "is-plain-obj": "^1.1.0" + } + }, + "color-rgba": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-2.1.1.tgz", + "integrity": "sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw==", + "requires": { + "clamp": "^1.0.1", + "color-parse": "^1.3.8", + "color-space": "^1.14.6" + } + }, + "color-space": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/color-space/-/color-space-1.16.0.tgz", + "integrity": "sha512-A6WMiFzunQ8KEPFmj02OnnoUnqhmSaHaZ/0LVFcPTdlvm8+3aMJ5x1HRHy3bDHPkovkf4sS0f4wsVvwk71fKkg==", + "requires": { + "hsluv": "^0.0.3", + "mumath": "^3.3.4" + } + }, + "colormap": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/colormap/-/colormap-2.3.1.tgz", + "integrity": "sha512-TEzNlo/qYp6pBoR2SK9JiV+DG1cmUcVO/+DEJqVPSHIKNlWh5L5L4FYog7b/h0bAnhKhpOAvx/c1dFp2QE9sFw==", + "requires": { + "lerp": "^1.0.3" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "optional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-angle": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/compare-angle/-/compare-angle-1.0.1.tgz", + "integrity": "sha1-pOtjQW6jx0f8a9bItjZotN5PoSk=", + "requires": { + "robust-orientation": "^1.0.2", + "robust-product": "^1.0.0", + "robust-sum": "^1.0.0", + "signum": "^0.0.0", + "two-sum": "^1.0.0" + } + }, + "compare-cell": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/compare-cell/-/compare-cell-1.0.0.tgz", + "integrity": "sha1-qetwj24OQa73qlZrEw8ZaNyeGqo=" + }, + "compare-oriented-cell": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/compare-oriented-cell/-/compare-oriented-cell-1.0.1.tgz", + "integrity": "sha1-ahSf7vnfxPj8YjWOUd1C7/u9w54=", + "requires": { + "cell-orientation": "^1.0.1", + "compare-cell": "^1.0.0" + } + }, + "component-classes": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", + "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=", + "dev": true, + "requires": { + "component-indexof": "0.0.3" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-indexof": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", + "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=", + "dev": true + }, + "compute-dims": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/compute-dims/-/compute-dims-1.1.0.tgz", + "integrity": "sha512-YHMiIKjH/8Eom8zATk3g8/lH3HxGCZcVQyEfEoVrfWI7od/WRpTgRGShnei3jArYSx77mQqPxZNokjGHCdLfxg==", + "requires": { + "utils-copy": "^1.0.0", + "validate.io-array": "^1.0.6", + "validate.io-matrix-like": "^1.0.2", + "validate.io-ndarray-like": "^1.0.0", + "validate.io-positive-integer": "^1.0.0" + } + }, + "compute-scroll-into-view": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.13.tgz", + "integrity": "sha512-o+w9w7A98aAFi/GjK8cxSV+CdASuPa2rR5UWs3+yHkJzWqaKoBEufFNWYaXInCSmUfDCVhesG+v9MTWqOjsxFg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "const-max-uint32": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/const-max-uint32/-/const-max-uint32-1.0.2.tgz", + "integrity": "sha1-8Am7YjDmeO2HTdLWqc2ePL+rtnY=" + }, + "const-pinf-float64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz", + "integrity": "sha1-9u+w15+cCYbT558pI6v5twtj1yY=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "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" + } + }, + "convex-hull": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/convex-hull/-/convex-hull-1.0.3.tgz", + "integrity": "sha1-IKOqbOh/St6i/30XlxyfwcZ+H/8=", + "requires": { + "affine-hull": "^1.0.0", + "incremental-convex-hull": "^1.0.1", + "monotone-convex-hull-2d": "^1.0.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "dev": true, + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "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", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "country-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz", + "integrity": "sha1-UcMz3N8Sknt+XuucEKyBEqYSCJY=" + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-animation": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz", + "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "component-classes": "^1.2.5" + } + }, + "css-font": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz", + "integrity": "sha512-V4U4Wps4dPDACJ4WpgofJ2RT5Yqwe1lEH6wlOOaIxMi0gTjdIijsc5FmxQlZ7ZZyKQkkutqqvULOp07l9c7ssA==", + "requires": { + "css-font-size-keywords": "^1.0.0", + "css-font-stretch-keywords": "^1.0.1", + "css-font-style-keywords": "^1.0.1", + "css-font-weight-keywords": "^1.0.0", + "css-global-keywords": "^1.0.1", + "css-system-font-keywords": "^1.0.0", + "pick-by-alias": "^1.2.0", + "string-split-by": "^1.0.0", + "unquote": "^1.1.0" + } + }, + "css-font-size-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz", + "integrity": "sha1-hUh1rOmspqjS7g00WkSq6btttss=" + }, + "css-font-stretch-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz", + "integrity": "sha1-UM7puboDH7XJUtRyMTnx4Qe1SxA=" + }, + "css-font-style-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz", + "integrity": "sha1-XDUygT9jtKHelU0TzqhqtDM0CeQ=" + }, + "css-font-weight-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz", + "integrity": "sha1-m8BGcayFvHJLV07106yWsNYE/Zc=" + }, + "css-global-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-global-keywords/-/css-global-keywords-1.0.1.tgz", + "integrity": "sha1-cqmupyeW0Bmx0qMlLeTlqqN+Smk=" + }, + "css-loader": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.2.tgz", + "integrity": "sha512-hDL0DPopg6zQQSRlZm0hyeaqIRnL0wbWjay9BZxoiJBpbfOW4WHfbaYQhwnDmEa0kZUc1CJ3IFo15ot1yULMIQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.5", + "semver": "^6.3.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-system-font-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", + "integrity": "sha1-hcbwhquk6zLFcaMIav/ENLhII+0=" + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha1-s085HupNqPPpgjHizNjfnAQfFxs=" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", + "dev": true + }, + "cubic-hermite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", + "integrity": "sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU=" + }, + "cwise": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/cwise/-/cwise-1.0.10.tgz", + "integrity": "sha1-JO7mBy69/WuMb12tsXCQtkmxK+8=", + "requires": { + "cwise-compiler": "^1.1.1", + "cwise-parser": "^1.0.0", + "static-module": "^1.0.0", + "uglify-js": "^2.6.0" + } + }, + "cwise-compiler": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz", + "integrity": "sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU=", + "requires": { + "uniq": "^1.0.0" + } + }, + "cwise-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cwise-parser/-/cwise-parser-1.0.3.tgz", + "integrity": "sha1-jkk8F9VPl8sDCp6YVLyGyd+zVP4=", + "requires": { + "esprima": "^1.0.3", + "uniq": "^1.0.0" + }, + "dependencies": { + "esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=" + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "d3": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", + "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=" + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-cloud": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-cloud/-/d3-cloud-1.2.5.tgz", + "integrity": "sha512-4s2hXZgvs0CoUIw31oBAGrHt9Kt/7P9Ik5HIVzISFiWkD0Ga2VLAuO/emO/z1tYIpE7KG2smB4PhMPfFMJpahw==", + "requires": { + "d3-dispatch": "^1.0.3" + } + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.0.tgz", + "integrity": "sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg==" + }, + "d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "delaunay-triangulate": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/delaunay-triangulate/-/delaunay-triangulate-1.1.6.tgz", + "integrity": "sha1-W7yiGweBmNS8PHV5ajXLuYwllUw=", + "requires": { + "incremental-convex-hull": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "optional": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-kerning": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-kerning/-/detect-kerning-2.1.2.tgz", + "integrity": "sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, + "dom-align": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.11.1.tgz", + "integrity": "sha512-hN42DmUgtweBx0iBjDLO4WtKOMcK8yBmPx/fgdsgQadLuzPu/8co3oLdK5yMmeM/vnUd3yDyV6qV8/NzxBexQg==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "dompurify": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.8.tgz", + "integrity": "sha512-vIOSyOXkMx81ghEalh4MLBtDHMx1bhKlaqHDMqM2yeitJ996SLOk5mGdDpI9ifJAgokred8Rmu219fX4OltqXw==" + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "double-bits": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/double-bits/-/double-bits-1.1.1.tgz", + "integrity": "sha1-WKu6RUlNpND6Nrc60RoobJGEscY=" + }, + "draw-svg-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/draw-svg-path/-/draw-svg-path-1.0.0.tgz", + "integrity": "sha1-bxFtli3TFLmepTTW9Y3WbNvWk3k=", + "requires": { + "abs-svg-path": "~0.1.1", + "normalize-svg-path": "~0.1.0" + } + }, + "dtype": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", + "integrity": "sha1-zQUjI84GFETs0uj1dI9popvihDQ=" + }, + "dup": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz", + "integrity": "sha1-UfxaxoX4GWRp3wuQXpNLIK9bQCk=" + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "requires": { + "readable-stream": "~1.1.9" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "earcut": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.2.tgz", + "integrity": "sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "edges-to-adjacency-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/edges-to-adjacency-list/-/edges-to-adjacency-list-1.0.0.tgz", + "integrity": "sha1-wUbS4ISt37p0pRKTxuAZmkn3V/E=", + "requires": { + "uniq": "^1.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.397", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.397.tgz", + "integrity": "sha512-zcUd1p/7yzTSdWkCTrqGvbnEOASy96d0RJL/lc5BDJoO23Z3G/VHd0yIPbguDU9n8QNUTCigLO7oEdtOb7fp2A==", + "dev": true + }, + "element-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/element-size/-/element-size-1.1.1.tgz", + "integrity": "sha1-ZOXxWdlxIWMYRby67K8nnDm1404=" + }, + "elementary-circuits-directed-graph": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.2.0.tgz", + "integrity": "sha512-eOQofnrNqebPtC29PvyNMGUBdMrIw5i8nOoC/2VOlSF84tf5+ZXnRkIk7TgdT22jFXK68CC7aA881KRmNYf/Pg==", + "requires": { + "strongly-connected-components": "^1.0.1" + } + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "enzyme": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", + "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" + } + }, + "enzyme-adapter-react-16": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz", + "integrity": "sha512-SkvDrb8xU3lSxID8Qic9rB8pvevDbLybxPK6D/vW7PrT0s2Cl/zJYuXvsd1EBTz0q4o3iqG3FJhpYz3nUNpM2Q==", + "dev": true, + "requires": { + "enzyme-adapter-utils": "^1.13.0", + "enzyme-shallow-equal": "^1.0.1", + "has": "^1.0.3", + "object.assign": "^4.1.0", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^16.12.0", + "react-test-renderer": "^16.0.0-0", + "semver": "^5.7.0" + } + }, + "enzyme-adapter-utils": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.13.0.tgz", + "integrity": "sha512-YuEtfQp76Lj5TG1NvtP2eGJnFKogk/zT70fyYHXK2j3v6CtuHqc8YmgH/vaiBfL8K1SgVVbQXtTcgQZFwzTVyQ==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.15.0", + "function.prototype.name": "^1.1.2", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.2", + "prop-types": "^15.7.2", + "semver": "^5.7.1" + } + }, + "enzyme-shallow-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.1.tgz", + "integrity": "sha512-hGA3i1so8OrYOZSM9whlkNmVHOicJpsjgTzC+wn2JMJXhq1oO4kA4bJ5MsfzSIcC71aLDKzJ6gZpIxrqt3QTAQ==", + "dev": true, + "requires": { + "has": "^1.0.3", + "object-is": "^1.0.2" + } + }, + "enzyme-to-json": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.4.4.tgz", + "integrity": "sha512-50LELP/SCPJJGic5rAARvU7pgE3m1YaNj7JLM+Qkhl5t7PAs6fiyc8xzc50RnkKPFQCv0EeFVjEWdIFRGPWMsA==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "react-is": "^16.12.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "optional": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-frustum-planes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extract-frustum-planes/-/extract-frustum-planes-1.0.0.tgz", + "integrity": "sha1-l9VwP/BWTIw8aDjKxF+ee8UsnvU=" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "optional": true + }, + "falafel": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "requires": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-isnumeric": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz", + "integrity": "sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw==", + "requires": { + "is-string-blank": "^1.0.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "filtered-vector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/filtered-vector/-/filtered-vector-1.2.4.tgz", + "integrity": "sha1-VkU8A030MC0pPKjs3qw/kKvGeNM=", + "requires": { + "binary-search-bounds": "^1.0.0", + "cubic-hermite": "^1.0.0" + }, + "dependencies": { + "binary-search-bounds": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-1.0.0.tgz", + "integrity": "sha1-MjyjF+PypA9CRMclX1OEpbIHu2k=" + } + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flatten-vertex-data": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz", + "integrity": "sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==", + "requires": { + "dtype": "^2.0.0" + } + }, + "flip-pixels": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flip-pixels/-/flip-pixels-1.0.2.tgz", + "integrity": "sha512-oXbJGbjDnfJRWPC7Va38EFhd+A8JWE5/hCiKcK8qjCdbLj9DTpsq6MEudwpRTH+V4qq+Jw7d3pUgQdSr3x3mTA==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "font-atlas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/font-atlas/-/font-atlas-2.1.0.tgz", + "integrity": "sha512-kP3AmvX+HJpW4w3d+PiPR2X6E1yvsBXt2yhuCw+yReO9F1WYhvZwx3c95DGZGwg9xYzDGrgJYa885xmVA+28Cg==", + "requires": { + "css-font": "^1.0.0" + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "font-measure": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/font-measure/-/font-measure-1.2.2.tgz", + "integrity": "sha512-mRLEpdrWzKe9hbfaF3Qpr06TAjquuBVP5cHy4b3hyeNdjc9i0PO6HniGsX5vjL5OWv7+Bd++NiooNpT/s8BvIA==", + "requires": { + "css-font": "^1.2.0" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.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-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.2.tgz", + "integrity": "sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "functions-have-names": "^1.2.0" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "functions-have-names": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.1.tgz", + "integrity": "sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA==", + "dev": true + }, + "gamma": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/gamma/-/gamma-0.1.0.tgz", + "integrity": "sha1-MxVkNAO/J5BsqAqzfDbs6UQO8zA=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-canvas-context": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz", + "integrity": "sha1-1ue1C8TkyGNXzTnyJkeoS3NgHpM=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gl-axes3d": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/gl-axes3d/-/gl-axes3d-1.5.3.tgz", + "integrity": "sha512-KRYbguKQcDQ6PcB9g1pgqB8Ly4TY1DQODpPKiDTasyWJ8PxQk0t2Q7XoQQijNqvsguITCpVVCzNb5GVtIWiVlQ==", + "requires": { + "bit-twiddle": "^1.0.2", + "dup": "^1.0.0", + "extract-frustum-planes": "^1.0.0", + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", + "gl-shader": "^4.2.1", + "gl-state": "^1.0.0", + "gl-vao": "^1.3.0", + "gl-vec4": "^1.0.1", + "glslify": "^7.0.0", + "robust-orientation": "^1.1.3", + "split-polygon": "^1.0.0", + "vectorize-text": "^3.2.1" + } + }, + "gl-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/gl-buffer/-/gl-buffer-2.1.2.tgz", + "integrity": "sha1-LbjZwaVSf7oM25EonCBuiCuInNs=", + "requires": { + "ndarray": "^1.0.15", + "ndarray-ops": "^1.1.0", + "typedarray-pool": "^1.0.0" + } + }, + "gl-cone3d": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/gl-cone3d/-/gl-cone3d-1.5.2.tgz", + "integrity": "sha512-1JNeHH4sUtUmDA4ZK7Om8/kShwb8IZVAsnxaaB7IPRJsNGciLj1sTpODrJGeMl41RNkex5kXD2SQFrzyEAR2Rw==", + "requires": { + "colormap": "^2.3.1", + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", + "gl-shader": "^4.2.1", + "gl-texture2d": "^2.1.0", + "gl-vao": "^1.3.0", + "gl-vec3": "^1.1.3", + "glsl-inverse": "^1.0.0", + "glsl-out-of-range": "^1.0.4", + "glsl-specular-cook-torrance": "^2.0.1", + "glslify": "^7.0.0", + "ndarray": "^1.0.18" + } + }, + "gl-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-constants/-/gl-constants-1.0.0.tgz", + "integrity": "sha1-WXpQTjZHUP9QJTqjX43qevSl0jM=" + }, + "gl-contour2d": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/gl-contour2d/-/gl-contour2d-1.1.7.tgz", + "integrity": "sha512-GdebvJ9DtT3pJDpoE+eU2q+Wo9S3MijPpPz5arZbhK85w2bARmpFpVfPaDlZqWkB644W3BlH8TVyvAo1KE4Bhw==", + "requires": { + "binary-search-bounds": "^2.0.4", + "cdt2d": "^1.0.0", + "clean-pslg": "^1.1.2", + "gl-buffer": "^2.1.2", + "gl-shader": "^4.2.1", + "glslify": "^7.0.0", + "iota-array": "^1.0.0", + "ndarray": "^1.0.18", + "surface-nets": "^1.0.2" + } + }, + "gl-error3d": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/gl-error3d/-/gl-error3d-1.0.16.tgz", + "integrity": "sha512-TGJewnKSp7ZnqGgG3XCF9ldrDbxZrO+OWlx6oIet4OdOM//n8xJ5isArnIV/sdPJnFbhfoLxWrW9f5fxHFRQ1A==", + "requires": { + "gl-buffer": "^2.1.2", + "gl-shader": "^4.2.1", + "gl-vao": "^1.3.0", + "glsl-out-of-range": "^1.0.4", + "glslify": "^7.0.0" + } + }, + "gl-fbo": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/gl-fbo/-/gl-fbo-2.0.5.tgz", + "integrity": "sha1-D6daSXz3h2lVMGkcjwSrtvtV+iI=", + "requires": { + "gl-texture2d": "^2.0.0" + } + }, + "gl-format-compiler-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gl-format-compiler-error/-/gl-format-compiler-error-1.0.3.tgz", + "integrity": "sha1-DHmxdRiZzpcy6GJA8JCqQemEcag=", + "requires": { + "add-line-numbers": "^1.0.1", + "gl-constants": "^1.0.0", + "glsl-shader-name": "^1.0.0", + "sprintf-js": "^1.0.3" + } + }, + "gl-heatmap2d": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/gl-heatmap2d/-/gl-heatmap2d-1.0.6.tgz", + "integrity": "sha512-+agzSv4R5vsaH+AGYVz5RVzBK10amqAa+Bwj205F13JjNSGS91M1L9Yb8zssCv2FIjpP+1Mp73cFBYrQFfS1Jg==", + "requires": { + "binary-search-bounds": "^2.0.4", + "gl-buffer": "^2.1.2", + "gl-shader": "^4.2.1", + "glslify": "^7.0.0", + "iota-array": "^1.0.0", + "typedarray-pool": "^1.1.0" + } + }, + "gl-line3d": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gl-line3d/-/gl-line3d-1.2.0.tgz", + "integrity": "sha512-du9GDF87DMfllND2pBjySyHhFaza9upw4t2GMoXn11/I38atO6+saiznuhKmfxuDnyxGdmmZF6/HPauk0owKDA==", + "requires": { + "binary-search-bounds": "^2.0.4", + "gl-buffer": "^2.1.2", + "gl-shader": "^4.2.1", + "gl-texture2d": "^2.1.0", + "gl-vao": "^1.3.0", + "glsl-out-of-range": "^1.0.4", + "glslify": "^7.0.0", + "ndarray": "^1.0.18" + } + }, + "gl-mat2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gl-mat2/-/gl-mat2-1.0.1.tgz", + "integrity": "sha1-FCUFcwpcL+Hp8l2ezj0NbMJxCjA=" + }, + "gl-mat3": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-mat3/-/gl-mat3-1.0.0.tgz", + "integrity": "sha1-iWMyGcpCk3mha5GF2V1BcTRTuRI=" + }, + "gl-mat4": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gl-mat4/-/gl-mat4-1.2.0.tgz", + "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==" + }, + "gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" + }, + "gl-matrix-invert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-matrix-invert/-/gl-matrix-invert-1.0.0.tgz", + "integrity": "sha1-o2173jZUxFkKEn7nxo9uE/6oxj0=", + "requires": { + "gl-mat2": "^1.0.0", + "gl-mat3": "^1.0.0", + "gl-mat4": "^1.0.0" + } + }, + "gl-mesh3d": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.3.1.tgz", + "integrity": "sha512-pXECamyGgu4/9HeAQSE5OEUuLBGS1aq9V4BCsTcxsND4fNLaajEkYKUz/WY2QSYElqKdsMBVsldGiKRKwlybqA==", + "requires": { + "barycentric": "^1.0.1", + "colormap": "^2.3.1", + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", + "gl-shader": "^4.2.1", + "gl-texture2d": "^2.1.0", + "gl-vao": "^1.3.0", + "glsl-out-of-range": "^1.0.4", + "glsl-specular-cook-torrance": "^2.0.1", + "glslify": "^7.0.0", + "ndarray": "^1.0.18", + "normals": "^1.1.0", + "polytope-closest-point": "^1.0.0", + "simplicial-complex-contour": "^1.0.2", + "typedarray-pool": "^1.1.0" + } + }, + "gl-plot2d": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/gl-plot2d/-/gl-plot2d-1.4.4.tgz", + "integrity": "sha512-0UhKiiqeampLtydv6NMNrKEilc0Ui5oaJtvHLbLZ5u/1ttT1XjOY5Yk8LzfqozA/No4a9omxjSKnH+tvSn+rQQ==", + "requires": { + "binary-search-bounds": "^2.0.4", + "gl-buffer": "^2.1.2", + "gl-select-static": "^2.0.6", + "gl-shader": "^4.2.1", + "glsl-inverse": "^1.0.0", + "glslify": "^7.0.0", + "text-cache": "^4.2.2" + } + }, + "gl-plot3d": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/gl-plot3d/-/gl-plot3d-2.4.5.tgz", + "integrity": "sha512-cKAqMXFRHTCFxH8r1/ACdk5hyfnA9djfiAM8zVQrqu0qLEttUu0i1fq0pr+d5m0HPuNcK8wEc4F3VjL2hrDcGQ==", + "requires": { + "3d-view": "^2.0.0", + "a-big-triangle": "^1.0.3", + "gl-axes3d": "^1.5.3", + "gl-fbo": "^2.0.5", + "gl-mat4": "^1.2.0", + "gl-select-static": "^2.0.6", + "gl-shader": "^4.2.1", + "gl-spikes3d": "^1.0.10", + "glslify": "^7.0.0", + "has-passive-events": "^1.0.0", + "is-mobile": "^2.2.1", + "mouse-change": "^1.4.0", + "mouse-event-offset": "^3.0.2", + "mouse-wheel": "^1.2.0", + "ndarray": "^1.0.18", + "right-now": "^1.0.0" + } + }, + "gl-pointcloud2d": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gl-pointcloud2d/-/gl-pointcloud2d-1.0.3.tgz", + "integrity": "sha512-OS2e1irvJXVRpg/GziXj10xrFJm9kkRfFoB6BLUvkjCQV7ZRNNcs2CD+YSK1r0gvMwTg2T3lfLM3UPwNtz+4Xw==", + "requires": { + "gl-buffer": "^2.1.2", + "gl-shader": "^4.2.1", + "glslify": "^7.0.0", + "typedarray-pool": "^1.1.0" + } + }, + "gl-quat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-quat/-/gl-quat-1.0.0.tgz", + "integrity": "sha1-CUXskjOG9FMpvl3DV7HIwtR1hsU=", + "requires": { + "gl-mat3": "^1.0.0", + "gl-vec3": "^1.0.3", + "gl-vec4": "^1.0.0" + } + }, + "gl-scatter3d": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/gl-scatter3d/-/gl-scatter3d-1.2.3.tgz", + "integrity": "sha512-nXqPlT1w5Qt51dTksj+DUqrZqwWAEWg0PocsKcoDnVNv0X8sGA+LBZ0Y+zrA+KNXUL0PPCX9WR9cF2uJAZl1Sw==", + "requires": { + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", + "gl-shader": "^4.2.1", + "gl-vao": "^1.3.0", + "glsl-out-of-range": "^1.0.4", + "glslify": "^7.0.0", + "is-string-blank": "^1.0.1", + "typedarray-pool": "^1.1.0", + "vectorize-text": "^3.2.1" + } + }, + "gl-select-box": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/gl-select-box/-/gl-select-box-1.0.4.tgz", + "integrity": "sha512-mKsCnglraSKyBbQiGq0Ila0WF+m6Tr+EWT2yfaMn/Sh9aMHq5Wt0F/l6Cf/Ed3CdERq5jHWAY5yxLviZteYu2w==", + "requires": { + "gl-buffer": "^2.1.2", + "gl-shader": "^4.2.1", + "glslify": "^7.0.0" + } + }, + "gl-select-static": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/gl-select-static/-/gl-select-static-2.0.6.tgz", + "integrity": "sha512-p4DmBG1DMo/47/fV3oqPcU6uTqHy0eI1vATH1fm8OVDqlzWnLv3786tdEunZWG6Br7DUdH6NgWhuy4gAlt+TAQ==", + "requires": { + "bit-twiddle": "^1.0.2", + "cwise": "^1.0.10", + "gl-fbo": "^2.0.5", + "ndarray": "^1.0.18", + "typedarray-pool": "^1.1.0" + } + }, + "gl-shader": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/gl-shader/-/gl-shader-4.2.1.tgz", + "integrity": "sha1-vJuAjpKTxRtmjojeYVsMETcI3C8=", + "requires": { + "gl-format-compiler-error": "^1.0.2", + "weakmap-shim": "^1.1.0" + } + }, + "gl-spikes2d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/gl-spikes2d/-/gl-spikes2d-1.0.2.tgz", + "integrity": "sha512-QVeOZsi9nQuJJl7NB3132CCv5KA10BWxAY2QgJNsKqbLsG53B/TrGJpjIAohnJftdZ4fT6b3ZojWgeaXk8bOOA==" + }, + "gl-spikes3d": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/gl-spikes3d/-/gl-spikes3d-1.0.10.tgz", + "integrity": "sha512-lT3xroowOFxMvlhT5Mof76B2TE02l5zt/NIWljhczV2FFHgIVhA4jMrd5dIv1so1RXMBDJIKu0uJI3QKliDVLg==", + "requires": { + "gl-buffer": "^2.1.2", + "gl-shader": "^4.2.1", + "gl-vao": "^1.3.0", + "glslify": "^7.0.0" + } + }, + "gl-state": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-state/-/gl-state-1.0.0.tgz", + "integrity": "sha1-Ji+qdYNbC5xTLBLzitxCXR0wzRc=", + "requires": { + "uniq": "^1.0.0" + } + }, + "gl-streamtube3d": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/gl-streamtube3d/-/gl-streamtube3d-1.4.1.tgz", + "integrity": "sha512-rH02v00kgwgdpkXVo7KsSoPp38bIAYR9TE1iONjcQ4cQAlDhrGRauqT/P5sUaOIzs17A2DxWGcXM+EpNQs9pUA==", + "requires": { + "gl-cone3d": "^1.5.2", + "gl-vec3": "^1.1.3", + "gl-vec4": "^1.0.1", + "glsl-inverse": "^1.0.0", + "glsl-out-of-range": "^1.0.4", + "glsl-specular-cook-torrance": "^2.0.1", + "glslify": "^7.0.0" + } + }, + "gl-surface3d": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/gl-surface3d/-/gl-surface3d-1.5.2.tgz", + "integrity": "sha512-rWSQwEQDkB0T5CDEDFJwJc4VgwwJaAyFRSJ92NJlrTSwDlsEsWdzG9+APx6FWJMwkOpIoZGWqv+csswK2kMMLQ==", + "requires": { + "binary-search-bounds": "^2.0.4", + "bit-twiddle": "^1.0.2", + "colormap": "^2.3.1", + "dup": "^1.0.0", + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", + "gl-shader": "^4.2.1", + "gl-texture2d": "^2.1.0", + "gl-vao": "^1.3.0", + "glsl-out-of-range": "^1.0.4", + "glsl-specular-beckmann": "^1.1.2", + "glslify": "^7.0.0", + "ndarray": "^1.0.18", + "ndarray-gradient": "^1.0.0", + "ndarray-ops": "^1.2.2", + "ndarray-pack": "^1.2.1", + "ndarray-scratch": "^1.2.0", + "surface-nets": "^1.0.2", + "typedarray-pool": "^1.1.0" + } + }, + "gl-text": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.1.8.tgz", + "integrity": "sha512-whnq9DEFYbW92C4ONwk2eT0YkzmVPHoADnEtuzMOmit87XhgAhBrNs3lK9EgGjU/MoWYvlF6RkI8Kl7Yuo1hUw==", + "requires": { + "bit-twiddle": "^1.0.2", + "color-normalize": "^1.5.0", + "css-font": "^1.2.0", + "detect-kerning": "^2.1.2", + "es6-weak-map": "^2.0.3", + "flatten-vertex-data": "^1.0.2", + "font-atlas": "^2.1.0", + "font-measure": "^1.2.2", + "gl-util": "^3.1.2", + "is-plain-obj": "^1.1.0", + "object-assign": "^4.1.1", + "parse-rect": "^1.2.0", + "parse-unit": "^1.0.1", + "pick-by-alias": "^1.2.0", + "regl": "^1.3.11", + "to-px": "^1.0.1", + "typedarray-pool": "^1.1.0" + } + }, + "gl-texture2d": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gl-texture2d/-/gl-texture2d-2.1.0.tgz", + "integrity": "sha1-/2gk5+fDGoum/c2+nlxpXX4hh8c=", + "requires": { + "ndarray": "^1.0.15", + "ndarray-ops": "^1.2.2", + "typedarray-pool": "^1.1.0" + } + }, + "gl-util": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/gl-util/-/gl-util-3.1.2.tgz", + "integrity": "sha512-8czWhGTGp/H4S35X1UxGbFlJ1hjtTFhm2mc85GcymEi1CDf633WJgtkCddEiSjIa4BnNxBrqOIhj6jlF6naPqw==", + "requires": { + "is-browser": "^2.0.1", + "is-firefox": "^1.0.3", + "is-plain-obj": "^1.1.0", + "number-is-integer": "^1.0.1", + "object-assign": "^4.1.0", + "pick-by-alias": "^1.2.0", + "weak-map": "^1.0.5" + } + }, + "gl-vao": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/gl-vao/-/gl-vao-1.3.0.tgz", + "integrity": "sha1-6ekqqVWIyrnVwvBLaTRAw99pGSM=" + }, + "gl-vec3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gl-vec3/-/gl-vec3-1.1.3.tgz", + "integrity": "sha512-jduKUqT0SGH02l8Yl+mV1yVsDfYgQAJyXGxkJQGyxPLHRiW25DwVIRPt6uvhrEMHftJfqhqKthRcyZqNEl9Xdw==" + }, + "gl-vec4": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gl-vec4/-/gl-vec4-1.0.1.tgz", + "integrity": "sha1-l9loeCgbFLUyy84QF4Xf0cs0CWQ=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "glsl-inject-defines": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", + "integrity": "sha1-3RqswsF/yyvT/DJBHGYz0Ne2D9Q=", + "requires": { + "glsl-token-inject-block": "^1.0.0", + "glsl-token-string": "^1.0.1", + "glsl-tokenizer": "^2.0.2" + } + }, + "glsl-inverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glsl-inverse/-/glsl-inverse-1.0.0.tgz", + "integrity": "sha1-EsCx0GX1WERNHm/q95td34qRiuY=" + }, + "glsl-out-of-range": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/glsl-out-of-range/-/glsl-out-of-range-1.0.4.tgz", + "integrity": "sha512-fCcDu2LCQ39VBvfe1FbhuazXEf0CqMZI9OYXrYlL6uUARG48CTAbL04+tZBtVM0zo1Ljx4OLu2AxNquq++lxWQ==" + }, + "glsl-resolve": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz", + "integrity": "sha1-iUvvc5ENeSyBtRQxgANdCnivdtM=", + "requires": { + "resolve": "^0.6.1", + "xtend": "^2.1.2" + }, + "dependencies": { + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=" + }, + "xtend": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz", + "integrity": "sha1-7vax8ZjByN6vrYsXZaBNrUoBxak=" + } + } + }, + "glsl-shader-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glsl-shader-name/-/glsl-shader-name-1.0.0.tgz", + "integrity": "sha1-osMLO6c0mb77DMcYTXx3M91LSH0=", + "requires": { + "atob-lite": "^1.0.0", + "glsl-tokenizer": "^2.0.2" + } + }, + "glsl-specular-beckmann": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glsl-specular-beckmann/-/glsl-specular-beckmann-1.1.2.tgz", + "integrity": "sha1-/OkFaTPs3yRWJ4N2pU0IKJPndfE=" + }, + "glsl-specular-cook-torrance": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/glsl-specular-cook-torrance/-/glsl-specular-cook-torrance-2.0.1.tgz", + "integrity": "sha1-qJHMBsjHtPRyhwK0gk/ay7ln148=", + "requires": { + "glsl-specular-beckmann": "^1.1.1" + } + }, + "glsl-token-assignments": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz", + "integrity": "sha1-pdgqt4SZwuimuDy2lJXm5mXOAZ8=" + }, + "glsl-token-defines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz", + "integrity": "sha1-y4kqqVmTYjFyhHDU90AySJaX+p0=", + "requires": { + "glsl-tokenizer": "^2.0.0" + } + }, + "glsl-token-depth": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz", + "integrity": "sha1-I8XjDuK9JViEtKKLyFC495HpXYQ=" + }, + "glsl-token-descope": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz", + "integrity": "sha1-D8kKsyYYa4L1l7LnfcniHvzTIHY=", + "requires": { + "glsl-token-assignments": "^2.0.0", + "glsl-token-depth": "^1.1.0", + "glsl-token-properties": "^1.0.0", + "glsl-token-scope": "^1.1.0" + } + }, + "glsl-token-inject-block": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz", + "integrity": "sha1-4QFfWYDBCRgkraomJfHf3ovQADQ=" + }, + "glsl-token-properties": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz", + "integrity": "sha1-SD3D2Dnw1LXGFx0VkfJJvlPCip4=" + }, + "glsl-token-scope": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz", + "integrity": "sha1-oXKOeN8kRE+cuT/RjvD3VQOmQ7E=" + }, + "glsl-token-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz", + "integrity": "sha1-WUQdL4V958NEnJRWZgIezjWOSOw=" + }, + "glsl-token-whitespace-trim": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz", + "integrity": "sha1-RtHf6Yx1vX1QTAXX0RsbPpzJOxA=" + }, + "glsl-tokenizer": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", + "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", + "requires": { + "through2": "^0.6.3" + } + }, + "glslify": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/glslify/-/glslify-7.0.0.tgz", + "integrity": "sha512-yw8jDQIe9FlSH5NiZEqSAsCPj9HI7nhXgXLAgSv2Nm9eBPsFJmyN9+rNwbiozJapcj9xtc/71rMYlN9cxp1B8Q==", + "requires": { + "bl": "^1.0.0", + "concat-stream": "^1.5.2", + "duplexify": "^3.4.5", + "falafel": "^2.1.0", + "from2": "^2.3.0", + "glsl-resolve": "0.0.1", + "glsl-token-whitespace-trim": "^1.0.0", + "glslify-bundle": "^5.0.0", + "glslify-deps": "^1.2.5", + "minimist": "^1.2.0", + "resolve": "^1.1.5", + "stack-trace": "0.0.9", + "static-eval": "^2.0.0", + "through2": "^2.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "glslify-bundle": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz", + "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==", + "requires": { + "glsl-inject-defines": "^1.0.1", + "glsl-token-defines": "^1.0.0", + "glsl-token-depth": "^1.1.1", + "glsl-token-descope": "^1.0.2", + "glsl-token-scope": "^1.1.1", + "glsl-token-string": "^1.0.1", + "glsl-token-whitespace-trim": "^1.0.0", + "glsl-tokenizer": "^2.0.2", + "murmurhash-js": "^1.0.0", + "shallow-copy": "0.0.1" + } + }, + "glslify-deps": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.1.tgz", + "integrity": "sha512-Ogm179MCazwIRyEqs3g3EOY4Y3XIAa0yl8J5RE9rJC6QH1w8weVOp2RZu0mvnYy/2xIas1w166YR2eZdDkWQxg==", + "requires": { + "@choojs/findup": "^0.2.0", + "events": "^1.0.2", + "glsl-resolve": "0.0.1", + "glsl-tokenizer": "^2.0.0", + "graceful-fs": "^4.1.2", + "inherits": "^2.0.1", + "map-limit": "0.0.1", + "resolve": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "optional": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-hover": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-hover/-/has-hover-1.0.1.tgz", + "integrity": "sha1-PZdDeusZnGK4rAisvcU9O8UsF/c=", + "requires": { + "is-browser": "^2.0.1" + } + }, + "has-passive-events": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-passive-events/-/has-passive-events-1.0.0.tgz", + "integrity": "sha512-2vSj6IeIsgvsRMyeQ0JaCX5Q3lX4zMn5HpoVc7MEhQ6pv8Iq9rsXjsp+E5ZwaT7T0xhMT0KmU8gtt1EFVdbJiw==", + "requires": { + "is-browser": "^2.0.1" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hsluv": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/hsluv/-/hsluv-0.0.3.tgz", + "integrity": "sha1-gpEH2vtKn4tSoYCe0C4JHq3mdUw=" + }, + "html-element-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.2.0.tgz", + "integrity": "sha512-0uXq8HsuG1v2TmQ8QkIhzbrqeskE4kn52Q18QJ9iAA/SnHoEKXWiUxHQtclRsCFWEUD2So34X+0+pZZu862nnw==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "image-palette": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/image-palette/-/image-palette-2.1.0.tgz", + "integrity": "sha512-3ImSEWD26+xuQFdP0RWR4WSXadZwvgrFhjGNpMEapTG1tf2XrBFS2dlKK5hNgH4UIaSQlSUFRn1NeA+zULIWbQ==", + "requires": { + "color-id": "^1.1.0", + "pxls": "^2.0.0", + "quantize": "^1.0.2" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immutability-helper": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.9.1.tgz", + "integrity": "sha512-r/RmRG8xO06s/k+PIaif2r5rGc3j4Yhc01jSBfwPCXDLYZwp/yxralI37Df1mwmuzcCsen/E/ITKcTEvc1PQmQ==", + "requires": { + "invariant": "^2.2.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "incremental-convex-hull": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/incremental-convex-hull/-/incremental-convex-hull-1.0.1.tgz", + "integrity": "sha1-UUKMFMudmmFEv+abKFH7N3M0vh4=", + "requires": { + "robust-orientation": "^1.1.2", + "simplicial-complex": "^1.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "interval-tree-1d": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interval-tree-1d/-/interval-tree-1d-1.0.3.tgz", + "integrity": "sha1-j9veArayx9verWNry+2OCHENhcE=", + "requires": { + "binary-search-bounds": "^1.0.0" + }, + "dependencies": { + "binary-search-bounds": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-1.0.0.tgz", + "integrity": "sha1-MjyjF+PypA9CRMclX1OEpbIHu2k=" + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "invert-permutation": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-permutation/-/invert-permutation-1.0.0.tgz", + "integrity": "sha1-oKeAQurbNrwXVR54fv0UOa3VSTM=" + }, + "iota-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz", + "integrity": "sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-base64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-0.1.0.tgz", + "integrity": "sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-blob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", + "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==" + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, + "is-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz", + "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, + "is-firefox": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-firefox/-/is-firefox-1.0.3.tgz", + "integrity": "sha1-KioVZ3g6QX9uFYMjEI84YbCRhWI=" + }, + "is-float-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-float-array/-/is-float-array-1.0.0.tgz", + "integrity": "sha512-4ew1Sx6B6kEAl3T3NOM0yB94J3NZnBdNt4paw0e8nY73yHHTeTEhyQ3Lj7EQEnv5LD+GxNTaT4L46jcKjjpLiQ==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-iexplorer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-iexplorer/-/is-iexplorer-1.0.0.tgz", + "integrity": "sha1-HXK8ZtP+Iur2Fw3ajPEJQySM/HY=" + }, + "is-mobile": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.1.tgz", + "integrity": "sha512-6zELsfVFr326eq2CI53yvqq6YBanOxKBybwDT+MbMS2laBnK6Ez8m5XHSuTQQbnKRfpDzCod1CMWW5q3wZYMvA==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-string-blank": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-string-blank/-/is-string-blank-1.0.1.tgz", + "integrity": "sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==" + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-svg-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-svg-path/-/is-svg-path-1.0.2.tgz", + "integrity": "sha1-d6tZDBKz0gNI5cehPQBAyHeE3aA=" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", + "dev": true, + "requires": { + "string-convert": "^0.2.0" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kdbush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "leaflet": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.6.0.tgz", + "integrity": "sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ==" + }, + "leaflet-fullscreen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz", + "integrity": "sha1-CcYcS6xF9jsu4Sav2H5c2XZQ/Bs=" + }, + "leaflet.markercluster": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.4.1.tgz", + "integrity": "sha512-ZSEpE/EFApR0bJ1w/dUGwTSUvWlpalKqIzkaYdYB7jaftQA/Y2Jav+eT4CMtEYFj+ZK4mswP13Q2acnPBnhGOw==" + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + }, + "lerp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lerp/-/lerp-1.0.3.tgz", + "integrity": "sha1-oYyJaPkXiW3hXM/MKNVaa3Med24=" + }, + "less": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz", + "integrity": "sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + } + }, + "less-plugin-autoprefix": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/less-plugin-autoprefix/-/less-plugin-autoprefix-2.0.0.tgz", + "integrity": "sha512-UktaMtHAhCVTIQxjlceo1MiiQiUZws7gi3hfcpxkCLn1CJdVdlRGCb4n1/M64hniw2DLd7YzOl7ojshs1tWYcQ==", + "dev": true, + "requires": { + "autoprefixer": "^8.6.3", + "postcss": "^6.0.22" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "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" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-limit": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", + "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", + "requires": { + "once": "~1.3.0" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1" + } + } + } + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mapbox-gl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.3.2.tgz", + "integrity": "sha512-6Ro7GbTMWxcbc836m6rbBNkesgTncbE1yXWeuHlr89esSqaItKr0+ntOu8rZie3fv+GtitkbODysXzIGCA7G+w==", + "requires": { + "@mapbox/geojson-rewind": "^0.4.0", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^1.4.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.1.0", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.2", + "earcut": "^2.1.5", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.0.0", + "grid-index": "^1.1.0", + "minimist": "0.0.8", + "murmurhash-js": "^1.0.0", + "pbf": "^3.0.5", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^6.0.1", + "tinyqueue": "^2.0.0", + "vt-pbf": "^3.1.1" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "marching-simplex-table": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/marching-simplex-table/-/marching-simplex-table-1.0.0.tgz", + "integrity": "sha1-vBYlbg+Pm1WKqbKHL4gy2UM/Uuo=", + "requires": { + "convex-hull": "^1.0.3" + } + }, + "mat4-decompose": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mat4-decompose/-/mat4-decompose-1.0.4.tgz", + "integrity": "sha1-ZetP451wh496RE60Yk1S9+frL68=", + "requires": { + "gl-mat4": "^1.0.1", + "gl-vec3": "^1.0.2" + } + }, + "mat4-interpolate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mat4-interpolate/-/mat4-interpolate-1.0.4.tgz", + "integrity": "sha1-Vf/p6zw1KV4sDVqfdyXZBoqJ/3Q=", + "requires": { + "gl-mat4": "^1.0.1", + "gl-vec3": "^1.0.2", + "mat4-decompose": "^1.0.3", + "mat4-recompose": "^1.0.3", + "quat-slerp": "^1.0.0" + } + }, + "mat4-recompose": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mat4-recompose/-/mat4-recompose-1.0.4.tgz", + "integrity": "sha1-OVPCMP8kc9x3LuAUpSySXPgbDk0=", + "requires": { + "gl-mat4": "^1.0.1" + } + }, + "math-log2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-log2/-/math-log2-1.0.1.tgz", + "integrity": "sha1-+4lBvl9evol55xjmJzsXjlhpRWU=" + }, + "matrix-camera-controller": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/matrix-camera-controller/-/matrix-camera-controller-2.1.3.tgz", + "integrity": "sha1-NeUmDMHNVQliunmfLY1OlLGjk3A=", + "requires": { + "binary-search-bounds": "^1.0.0", + "gl-mat4": "^1.1.2", + "gl-vec3": "^1.0.3", + "mat4-interpolate": "^1.0.3" + }, + "dependencies": { + "binary-search-bounds": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-1.0.0.tgz", + "integrity": "sha1-MjyjF+PypA9CRMclX1OEpbIHu2k=" + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true, + "optional": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "optional": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-store": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.2.tgz", + "integrity": "sha512-TM7IQBu+mVssLQReprx7JGftXk0EyaiIWw7yAx6E4SIZRHwgQ8XcG4dINFAaBCBihbYPJyhf7kbz7e5qk1FkuQ==", + "dev": true, + "requires": { + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react-lifecycles-compat": "^3.0.1", + "@types/shallowequal": "^1.1.1", + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.6.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.0.2", + "typescript": "^3.8.3" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "monotone-convex-hull-2d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/monotone-convex-hull-2d/-/monotone-convex-hull-2d-1.0.1.tgz", + "integrity": "sha1-R/Xa6t88Sv03dkuqGqh4ekDu4Iw=", + "requires": { + "robust-orientation": "^1.1.3" + } + }, + "moo": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", + "dev": true + }, + "mouse-change": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/mouse-change/-/mouse-change-1.4.0.tgz", + "integrity": "sha1-wrd+W/o0pDzhRFyBV6Tk3JiVwU8=", + "requires": { + "mouse-event": "^1.0.0" + } + }, + "mouse-event": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mouse-event/-/mouse-event-1.0.5.tgz", + "integrity": "sha1-s3ie23EJmX1aky0dAdqhVDpQFzI=" + }, + "mouse-event-offset": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mouse-event-offset/-/mouse-event-offset-3.0.2.tgz", + "integrity": "sha1-39hqbiSMa6jK1TuQXVA3ogY+mYQ=" + }, + "mouse-wheel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mouse-wheel/-/mouse-wheel-1.2.0.tgz", + "integrity": "sha1-bSkDseqPtI5h8bU7kDZ3PwQs21w=", + "requires": { + "right-now": "^1.0.0", + "signum": "^1.0.0", + "to-px": "^1.0.1" + }, + "dependencies": { + "signum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signum/-/signum-1.0.0.tgz", + "integrity": "sha1-dKfSvyogtA66FqkrFSEk8dVZ+nc=" + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mumath": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/mumath/-/mumath-3.3.4.tgz", + "integrity": "sha1-SNSg8P2MrU57Mglu6JsWGmPTC78=", + "requires": { + "almost-equal": "^1.1.0" + } + }, + "murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E=" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "ndarray": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz", + "integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==", + "requires": { + "iota-array": "^1.0.0", + "is-buffer": "^1.0.2" + } + }, + "ndarray-extract-contour": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ndarray-extract-contour/-/ndarray-extract-contour-1.0.1.tgz", + "integrity": "sha1-Cu4ROjozsia5DEiIz4d79HUTBeQ=", + "requires": { + "typedarray-pool": "^1.0.0" + } + }, + "ndarray-fill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ndarray-fill/-/ndarray-fill-1.0.2.tgz", + "integrity": "sha1-owpg9xiODJWC/N1YiWrNy1IqHtY=", + "requires": { + "cwise": "^1.0.10" + } + }, + "ndarray-gradient": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ndarray-gradient/-/ndarray-gradient-1.0.0.tgz", + "integrity": "sha1-t0kaUVxqZJ8ZpiMk//byf8jCU5M=", + "requires": { + "cwise-compiler": "^1.0.0", + "dup": "^1.0.0" + } + }, + "ndarray-homography": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ndarray-homography/-/ndarray-homography-1.0.0.tgz", + "integrity": "sha1-w1UW6oa8KGK06ASiNqJwcwn+KWs=", + "requires": { + "gl-matrix-invert": "^1.0.0", + "ndarray-warp": "^1.0.0" + } + }, + "ndarray-linear-interpolate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ndarray-linear-interpolate/-/ndarray-linear-interpolate-1.0.0.tgz", + "integrity": "sha1-eLySuFuavBW25n7mWCj54hN65ys=" + }, + "ndarray-ops": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ndarray-ops/-/ndarray-ops-1.2.2.tgz", + "integrity": "sha1-WeiNLDKn7ryxvGkPrhQVeVV6YU4=", + "requires": { + "cwise-compiler": "^1.0.0" + } + }, + "ndarray-pack": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz", + "integrity": "sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo=", + "requires": { + "cwise-compiler": "^1.1.2", + "ndarray": "^1.0.13" + } + }, + "ndarray-scratch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ndarray-scratch/-/ndarray-scratch-1.2.0.tgz", + "integrity": "sha1-YwRjbWLrqT20cnrBPGkzQdulDgE=", + "requires": { + "ndarray": "^1.0.14", + "ndarray-ops": "^1.2.1", + "typedarray-pool": "^1.0.2" + } + }, + "ndarray-sort": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ndarray-sort/-/ndarray-sort-1.0.1.tgz", + "integrity": "sha1-/qBbTLg0x/TgIWo1TzynUTAN/Wo=", + "requires": { + "typedarray-pool": "^1.0.0" + } + }, + "ndarray-warp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ndarray-warp/-/ndarray-warp-1.0.1.tgz", + "integrity": "sha1-qKElqqu6C+v5O9bKg+ar1oIqNOA=", + "requires": { + "cwise": "^1.0.4", + "ndarray-linear-interpolate": "^1.0.0" + } + }, + "nearley": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.2.tgz", + "integrity": "sha512-h6lygT0BWAGErDvoE2LfI+tDeY2+UUrqG5dcBPdCmjnjud9z1wE0P7ljb85iNbE93YA+xJLpoSYGMuUqhnSSSA==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nextafter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nextafter/-/nextafter-1.0.0.tgz", + "integrity": "sha1-t9d7U1MQ4+CX5gJauwqQNHfsGjo=", + "requires": { + "double-bits": "^1.1.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-svg-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-0.1.0.tgz", + "integrity": "sha1-RWNg5g7Odfvve11+FgSA5//Rb+U=" + }, + "normals": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/normals/-/normals-1.1.0.tgz", + "integrity": "sha1-MltZXtNK/kZ6bFWhT9kIV4f/WcA=" + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-integer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-integer/-/number-is-integer-1.0.1.tgz", + "integrity": "sha1-5ZvKFy/+0nMY55x862y3LAlbIVI=", + "requires": { + "is-finite": "^1.0.1" + } + }, + "numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=" + }, + "numeric": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/numeric/-/numeric-1.2.6.tgz", + "integrity": "sha1-dlsCvvl5iPz4gNTrPza4D6MTNao=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "omit.js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz", + "integrity": "sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.23.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "orbit-camera-controller": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/orbit-camera-controller/-/orbit-camera-controller-4.0.0.tgz", + "integrity": "sha1-bis28OeHhmPDMPUNqbfOaGwncAU=", + "requires": { + "filtered-vector": "^1.2.1", + "gl-mat4": "^1.0.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-2.0.0.tgz", + "integrity": "sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q==" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pad-left": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-1.0.2.tgz", + "integrity": "sha1-GeVzXqmDlaJs7carkm6tEPMQDUw=", + "requires": { + "repeat-string": "^1.3.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parenthesis": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.7.tgz", + "integrity": "sha512-iMtu+HCbLXVrpf6Ys/4YKhcFxbux3xK4ZVB9r+a2kMSqeeQWQoDNYlXIsOjwlT2ldYXZ3k5PVeBnYn7fbAo/Bg==" + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse-rect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parse-rect/-/parse-rect-1.2.0.tgz", + "integrity": "sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA==", + "requires": { + "pick-by-alias": "^1.2.0" + } + }, + "parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha1-en7A0esG+lMlx9PgCbhZoJtdSes=" + }, + "parse-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", + "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "requires": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "permutation-parity": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/permutation-parity/-/permutation-parity-1.0.0.tgz", + "integrity": "sha1-AXTVH8pwSxG5pLFSsj1Tf9xrXvQ=", + "requires": { + "typedarray-pool": "^1.0.0" + } + }, + "permutation-rank": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/permutation-rank/-/permutation-rank-1.0.0.tgz", + "integrity": "sha1-n9mLvOzwj79ZlLXq3JSmLmeUg7U=", + "requires": { + "invert-permutation": "^1.0.0", + "typedarray-pool": "^1.0.0" + } + }, + "pick-by-alias": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pick-by-alias/-/pick-by-alias-1.2.0.tgz", + "integrity": "sha1-X3yysfIabh6ISgyHhVqko3NhEHs=" + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "planar-dual": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/planar-dual/-/planar-dual-1.0.2.tgz", + "integrity": "sha1-tqQjVSOxsMt55fkm+OozXdmC1WM=", + "requires": { + "compare-angle": "^1.0.0", + "dup": "^1.0.0" + } + }, + "planar-graph-to-polyline": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/planar-graph-to-polyline/-/planar-graph-to-polyline-1.0.5.tgz", + "integrity": "sha1-iCuGBRmbqIv9RkyVUzA1VsUrmIo=", + "requires": { + "edges-to-adjacency-list": "^1.0.0", + "planar-dual": "^1.0.0", + "point-in-big-polygon": "^2.0.0", + "robust-orientation": "^1.0.1", + "robust-sum": "^1.0.0", + "two-product": "^1.0.0", + "uniq": "^1.0.0" + } + }, + "plotly.js": { + "version": "1.52.3", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.52.3.tgz", + "integrity": "sha512-7szNqbVuhqn4ZgaTpJ9h4+9PzjoXJnSdzjnY5QwHddp/j0xu5kpHCGvkg+WmeF3brK3y8qwEHF/MIFBBa7i0ng==", + "requires": { + "@plotly/d3-sankey": "0.7.2", + "@plotly/d3-sankey-circular": "0.33.1", + "@turf/area": "^6.0.1", + "@turf/bbox": "^6.0.1", + "@turf/centroid": "^6.0.2", + "alpha-shape": "^1.0.0", + "canvas-fit": "^1.5.0", + "color-normalize": "^1.5.0", + "color-rgba": "^2.1.1", + "convex-hull": "^1.0.3", + "country-regex": "^1.1.0", + "d3": "^3.5.12", + "d3-force": "^1.0.6", + "d3-hierarchy": "^1.1.9", + "d3-interpolate": "^1.4.0", + "delaunay-triangulate": "^1.1.6", + "es6-promise": "^3.0.2", + "fast-isnumeric": "^1.1.3", + "gl-cone3d": "^1.5.1", + "gl-contour2d": "^1.1.6", + "gl-error3d": "^1.0.15", + "gl-heatmap2d": "^1.0.5", + "gl-line3d": "1.2.0", + "gl-mat4": "^1.2.0", + "gl-mesh3d": "^2.3.0", + "gl-plot2d": "^1.4.3", + "gl-plot3d": "^2.4.4", + "gl-pointcloud2d": "^1.0.2", + "gl-scatter3d": "^1.2.2", + "gl-select-box": "^1.0.3", + "gl-spikes2d": "^1.0.2", + "gl-streamtube3d": "^1.4.0", + "gl-surface3d": "^1.4.6", + "gl-text": "^1.1.8", + "glslify": "^7.0.0", + "has-hover": "^1.0.1", + "has-passive-events": "^1.0.0", + "is-mobile": "^2.2.0", + "mapbox-gl": "1.3.2", + "matrix-camera-controller": "^2.1.3", + "mouse-change": "^1.4.0", + "mouse-event-offset": "^3.0.2", + "mouse-wheel": "^1.2.0", + "ndarray": "^1.0.18", + "ndarray-fill": "^1.0.2", + "ndarray-homography": "^1.0.0", + "point-cluster": "^3.1.8", + "polybooljs": "^1.2.0", + "regl": "^1.3.11", + "regl-error2d": "^2.0.8", + "regl-line2d": "^3.0.15", + "regl-scatter2d": "^3.1.7", + "regl-splom": "^1.0.8", + "right-now": "^1.0.0", + "robust-orientation": "^1.1.3", + "sane-topojson": "^4.0.0", + "strongly-connected-components": "^1.0.1", + "superscript-text": "^1.0.0", + "svg-path-sdf": "^1.1.3", + "tinycolor2": "^1.4.1", + "topojson-client": "^2.1.0", + "webgl-context": "^2.2.0", + "world-calendars": "^1.0.3" + } + }, + "point-cluster": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/point-cluster/-/point-cluster-3.1.8.tgz", + "integrity": "sha512-7klIr45dpMeZuqjIK9+qBg3m2IhyZJNJkdqjJFw0Olq75FM8ojrTMjClVUrMjNYRVqtwztxCHH71Fyjhg+YwyQ==", + "requires": { + "array-bounds": "^1.0.1", + "array-normalize": "^1.1.4", + "binary-search-bounds": "^2.0.4", + "bubleify": "^1.1.0", + "clamp": "^1.0.1", + "defined": "^1.0.0", + "dtype": "^2.0.0", + "flatten-vertex-data": "^1.0.2", + "is-obj": "^1.0.1", + "math-log2": "^1.0.1", + "parse-rect": "^1.2.0", + "pick-by-alias": "^1.2.0" + } + }, + "point-in-big-polygon": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/point-in-big-polygon/-/point-in-big-polygon-2.0.0.tgz", + "integrity": "sha1-ObYT6mzxfWtD4Yj3fzTETGszulU=", + "requires": { + "binary-search-bounds": "^1.0.0", + "interval-tree-1d": "^1.0.1", + "robust-orientation": "^1.1.3", + "slab-decomposition": "^1.0.1" + }, + "dependencies": { + "binary-search-bounds": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-1.0.0.tgz", + "integrity": "sha1-MjyjF+PypA9CRMclX1OEpbIHu2k=" + } + } + }, + "polybooljs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/polybooljs/-/polybooljs-1.2.0.tgz", + "integrity": "sha1-tDkMLgedTCYtOyUExiiNlbp6R1g=" + }, + "polytope-closest-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/polytope-closest-point/-/polytope-closest-point-1.0.0.tgz", + "integrity": "sha1-5uV/QIGrXox3i4Ee8G4sSK4zjD8=", + "requires": { + "numeric": "^1.2.6" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "potpack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.1.tgz", + "integrity": "sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prettier": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", + "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", + "dev": true + }, + "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.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "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" + } + }, + "prop-types-exact": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", + "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", + "dev": true, + "requires": { + "has": "^1.0.3", + "object.assign": "^4.1.0", + "reflect.ownkeys": "^0.2.0" + } + }, + "protocol-buffers-schema": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", + "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true, + "optional": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "pxls": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/pxls/-/pxls-2.3.2.tgz", + "integrity": "sha512-pQkwgbLqWPcuES5iEmGa10OlCf5xG0blkIF3dg7PpRZShbTYcvAdfFfGL03SMrkaSUaa/V0UpN9HWg40O2AIIw==", + "requires": { + "arr-flatten": "^1.1.0", + "compute-dims": "^1.1.0", + "flip-pixels": "^1.0.2", + "is-browser": "^2.1.0", + "is-buffer": "^2.0.3", + "to-uint8": "^1.4.1" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "optional": true + }, + "quantize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quantize/-/quantize-1.0.2.tgz", + "integrity": "sha1-0lrCAKd7bXD0ASfKFxoQ4zyFRt4=" + }, + "quat-slerp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/quat-slerp/-/quat-slerp-1.0.1.tgz", + "integrity": "sha1-K6oVzjprvcMkHZcusXKDE57Wnyk=", + "requires": { + "gl-quat": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "quote-stream": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-0.0.0.tgz", + "integrity": "sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs=", + "requires": { + "minimist": "0.0.8", + "through2": "~0.4.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "rat-vec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/rat-vec/-/rat-vec-1.1.1.tgz", + "integrity": "sha1-Dd4rZrezS7G80qI4BerIBth/0X8=", + "requires": { + "big-rat": "^1.0.3" + } + }, + "rc-align": { + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-3.0.0-rc.1.tgz", + "integrity": "sha512-GbofumhCUb7SxP410j/fbtR2M9Zml+eoZSdaliZh6R3NhfEj5zP4jcO3HG3S9C9KIcXQQtd/cwVHkb9Y0KU7Hg==", + "dev": true, + "requires": { + "classnames": "2.x", + "dom-align": "^1.7.0", + "rc-util": "^4.12.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-animate": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.10.3.tgz", + "integrity": "sha512-A9qQ5Y8BLlM7EhuCO3fWb/dChndlbWtY/P5QvPqBU7h4r5Q2QsvsbpTGgdYZATRDZbTRnJXXfVk9UtlyS7MBLg==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.6", + "css-animation": "^1.3.2", + "prop-types": "15.x", + "raf": "^3.4.0", + "rc-util": "^4.15.3", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-cascader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.0.1.tgz", + "integrity": "sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ==", + "dev": true, + "requires": { + "array-tree-filter": "^2.1.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.0.4", + "warning": "^4.0.1" + } + }, + "rc-checkbox": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.2.0.tgz", + "integrity": "sha512-Wjh/nutLA8iIPTT1P9I9KOqlUblVe+CWa3SxMibFySnLyYbMxKNtPhwNcbADPOqzNU0AsCntTduNeJg1n0B5fg==", + "dev": true, + "requires": { + "babel-runtime": "^6.23.0", + "classnames": "2.x" + } + }, + "rc-collapse": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-1.11.8.tgz", + "integrity": "sha512-8EhfPyScTYljkbRuIoHniSwZagD5UPpZ3CToYgoNYWC85L2qCbPYF7+OaC713FOrIkp6NbfNqXsITNxmDAmxog==", + "dev": true, + "requires": { + "classnames": "2.x", + "css-animation": "1.x", + "prop-types": "^15.5.6", + "rc-animate": "2.x", + "react-is": "^16.7.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0" + } + }, + "rc-dialog": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-7.6.1.tgz", + "integrity": "sha512-KUKf+2eZ4YL+lnXMG3hR4ZtIhC9glfH27NtTVz3gcoDIPAf3uUvaXVRNoDCiSi+OGKLyIb/b6EoidFh6nQC5Wg==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "rc-animate": "2.x", + "rc-util": "^4.16.1" + } + }, + "rc-drawer": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-3.1.3.tgz", + "integrity": "sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg==", + "dev": true, + "requires": { + "classnames": "^2.2.6", + "rc-util": "^4.16.1", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-dropdown": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.0.2.tgz", + "integrity": "sha512-T3XP4qL6xmkxn8z52YF2SEPoMHPpBiLf0Kty3mjNdRSyKnlu+0F+3bhDHf6gO1msmqrjURaz8sMNAFDcoFHHnw==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "classnames": "^2.2.6", + "rc-trigger": "^4.0.0" + } + }, + "rc-field-form": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.1.3.tgz", + "integrity": "sha512-m7SUNNaum4pHrUj5MGnymEk3SRitMUZBhnMS0wqWrcL6XqvdTAG5Yz5HjukA6BryaS6nyQOgUVBXMxxNN/XsTQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "async-validator": "^3.0.3", + "rc-util": "^4.17.0", + "warning": "^4.0.3" + } + }, + "rc-hammerjs": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/rc-hammerjs/-/rc-hammerjs-0.6.9.tgz", + "integrity": "sha512-4llgWO3RgLyVbEqUdGsDfzUDqklRlQW5VEhE3x35IvhV+w//VPRG34SBavK3D2mD/UaLKaohgU41V4agiftC8g==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "hammerjs": "^2.0.8", + "prop-types": "^15.5.9" + } + }, + "rc-input-number": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-4.5.6.tgz", + "integrity": "sha512-AXbL4gtQ1mSQnu6v/JtMv3UbGRCzLvQznmf0a7U/SAtZ8+dCEAqD4JpJhkjv73Wog53eRYhw4l7ApdXflc9ymg==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.0", + "prop-types": "^15.5.7", + "rc-util": "^4.5.1", + "rmc-feedback": "^2.0.0" + } + }, + "rc-mentions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.1.0.tgz", + "integrity": "sha512-uOVMiQ5Jxfo3mbpOZsZt20Alid0268lX9eBR2I/chly0qhNbmSB71iLOHGkbL7zuHd50GF/eSr9fXJJQKUYG1Q==", + "dev": true, + "requires": { + "classnames": "^2.2.6", + "rc-menu": "^8.0.1", + "rc-trigger": "^4.0.0", + "rc-util": "^4.6.0" + } + }, + "rc-menu": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.0.3.tgz", + "integrity": "sha512-a37l9MfzjXt8/q5en6ukjD2PoVsHCzWeRPdFK9eWi6hF5/9M3mfxgUt1LruQvaJKMQUxDyN5+4M8FsYULXJALw==", + "dev": true, + "requires": { + "classnames": "2.x", + "mini-store": "^3.0.1", + "rc-animate": "^2.10.1", + "rc-trigger": "^4.0.0", + "rc-util": "^4.13.0", + "resize-observer-polyfill": "^1.5.0", + "scroll-into-view-if-needed": "^2.2.20", + "shallowequal": "^1.1.0" + } + }, + "rc-notification": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.0.0.tgz", + "integrity": "sha512-In9FimkJY+JSIq3/eopPfBpQQr2Zugq5i9Aw9vdiNCGCsAsSO9bGq2dPsn8bamOydNrhc3djljGfmxUUMbcZnA==", + "dev": true, + "requires": { + "classnames": "2.x", + "rc-animate": "2.x", + "rc-util": "^4.0.4" + } + }, + "rc-pagination": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-2.2.0.tgz", + "integrity": "sha512-fXempMD/kvHu8tsiW70uPjn1pI4mdD62xFG9drcBh17gj5CbCjazrjpWS615RSauk3b2BBgIcAJzREAMvlAkFQ==", + "dev": true, + "requires": { + "classnames": "^2.2.1" + } + }, + "rc-picker": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-1.4.8.tgz", + "integrity": "sha512-FZ4XnpYBxn4wSzsbnMHK0dqbxkRD1zXE6DNGlevrBnsD7nOrzGeDw67McW4tBR5RjVeGXS1Fzf+Y+glpYWJmkw==", + "dev": true, + "requires": { + "classnames": "^2.2.1", + "moment": "^2.24.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.17.0", + "shallowequal": "^1.1.0" + } + }, + "rc-progress": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-2.5.2.tgz", + "integrity": "sha512-ajI+MJkbBz9zYDuE9GQsY5gsyqPF7HFioZEDZ9Fmc+ebNZoiSeSJsTJImPFCg0dW/5WiRGUy2F69SX1aPtSJgA==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "prop-types": "^15.5.8" + } + }, + "rc-rate": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.5.1.tgz", + "integrity": "sha512-3iJkNJT8xlHklPCdeZtUZmJmRVUbr6AHRlfSsztfYTXVlHrv2TcPn3XkHsH+12j812WVB7gvilS2j3+ffjUHXg==", + "dev": true, + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.5.8", + "rc-util": "^4.3.0", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-resize-observer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-0.2.1.tgz", + "integrity": "sha512-GENTRkL3lq05ilrjTxPpHUPrKTC9D7XqUGesSXgi/GyO4j/jKIjLPn7zuZOcJ5QmN5QGRe24IaVWPZHQPE6vLw==", + "dev": true, + "requires": { + "classnames": "^2.2.1", + "rc-util": "^4.14.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-select": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-10.2.4.tgz", + "integrity": "sha512-PtfAHQRXof5gX1qEYQc8GIgroajtzU3mcMGbqM1aE1jqaZ4r+p0GJy3rabXoNANsKH7jUV5+zYJb5VhTxj2vmQ==", + "dev": true, + "requires": { + "classnames": "2.x", + "rc-animate": "^2.10.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.20.0", + "rc-virtual-list": "^1.1.2", + "warning": "^4.0.3" + } + }, + "rc-slider": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.2.4.tgz", + "integrity": "sha512-wSr7vz+WtzzGqsGU2rTQ4mmLz9fkuIDMPYMYm8ygYFvxQ2Rh4uRhOWHYI0R8krNK5k1bGycckYxmQqUIvLAh3w==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.5", + "rc-tooltip": "^4.0.0", + "rc-util": "^4.0.4", + "shallowequal": "^1.1.0", + "warning": "^4.0.3" + } + }, + "rc-steps": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-3.5.0.tgz", + "integrity": "sha512-2Vkkrpa7PZbg7qPsqTNzVDov4u78cmxofjjnIHiGB9+9rqKS8oTLPzbW2uiWDr3Lk+yGwh8rbpGO1E6VAgBCOg==", + "dev": true, + "requires": { + "babel-runtime": "^6.23.0", + "classnames": "^2.2.3", + "lodash": "^4.17.5", + "prop-types": "^15.5.7" + } + }, + "rc-switch": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-1.9.0.tgz", + "integrity": "sha512-Isas+egaK6qSk64jaEw4GgPStY4umYDbT7ZY93bZF1Af+b/JEsKsJdNOU2qG3WI0Z6tXo2DDq0kJCv8Yhu0zww==", + "dev": true, + "requires": { + "classnames": "^2.2.1", + "prop-types": "^15.5.6", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-table": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.4.5.tgz", + "integrity": "sha512-lQS9izhGmgyCVK05imUrl32lBS9g2f3hB8LOKOof19JWCULKuYL5D3lLpaZSpCTecRYfONYNpgR7mZs7FOnYSQ==", + "dev": true, + "requires": { + "classnames": "^2.2.5", + "component-classes": "^1.2.6", + "lodash": "^4.17.5", + "prop-types": "^15.5.8", + "raf": "^3.4.1", + "rc-resize-observer": "^0.2.0", + "rc-util": "^4.20.1", + "react-lifecycles-compat": "^3.0.2", + "shallowequal": "^1.1.0" + } + }, + "rc-tabs": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-10.1.1.tgz", + "integrity": "sha512-dOFeaYil3d6zV3ZtGZWfRf7zwyqUQ48cl67/Y/03SsBWEdYgfZzlgjfHqmUT+V7L7CvhQ5lIQyYpj4EthkgKCg==", + "dev": true, + "requires": { + "classnames": "2.x", + "lodash": "^4.17.5", + "rc-hammerjs": "~0.6.0", + "resize-observer-polyfill": "^1.5.1", + "warning": "^4.0.3" + } + }, + "rc-tooltip": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-4.0.3.tgz", + "integrity": "sha512-HNyBh9/fPdds0DXja8JQX0XTIHmZapB3lLzbdn74aNSxXG1KUkt+GK4X1aOTRY5X9mqm4uUKdeFrn7j273H8gw==", + "dev": true, + "requires": { + "rc-trigger": "^4.0.0" + } + }, + "rc-tree": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-3.1.5.tgz", + "integrity": "sha512-LOUfsJg5XxtA4FKgGkuVwnbBlnh3VVtySF7LMp4ko0n8oIUBYnn2vs6WG41kuH0V4tLTlQhvCFup/6JEKL01sg==", + "dev": true, + "requires": { + "classnames": "2.x", + "prop-types": "^15.5.8", + "rc-animate": "^2.9.2", + "rc-util": "^4.11.0", + "rc-virtual-list": "^1.1.0", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-tree-select": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-3.1.3.tgz", + "integrity": "sha512-VQDr+qLCCJ9V/4ewnp3crMT2N7iJV58V0uWVA3nGJxVuxhSj8TPHFZLnyMh6vaNrQsrY6eBp/x1y6nEJBjnVQg==", + "dev": true, + "requires": { + "classnames": "2.x", + "rc-select": "^10.1.0", + "rc-tree": "^3.1.0", + "rc-util": "^4.17.0" + } + }, + "rc-trigger": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-4.0.2.tgz", + "integrity": "sha512-to5S1NhK10rWHIgQpoQdwIhuDc2Ok4R4/dh5NLrDt6C+gqkohsdBCYiPk97Z+NwGhRU8N+dbf251bivX8DkzQg==", + "dev": true, + "requires": { + "classnames": "^2.2.6", + "prop-types": "15.x", + "raf": "^3.4.1", + "rc-align": "^3.0.0-rc.0", + "rc-animate": "^2.10.2", + "rc-util": "^4.20.0" + } + }, + "rc-upload": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-3.0.4.tgz", + "integrity": "sha512-dTCvj1iHxjHG0qo5UyN2ZmtueG9GG3xrOhOwnjsehaoOvl0TOjLbHkUIPPqLZk+wHb57Ue4KB7c3+IMgkDoBvw==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.5" + } + }, + "rc-util": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.20.3.tgz", + "integrity": "sha512-NBBc9Ad5yGAVTp4jV+pD7tXQGqHxGM2onPSZFyVoJ5fuvRF+ZgzSjZ6RXLPE0pVVISRJ07h+APgLJPBcAeZQlg==", + "dev": true, + "requires": { + "add-dom-event-listener": "^1.1.0", + "prop-types": "^15.5.10", + "react-is": "^16.12.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0" + } + }, + "rc-virtual-list": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-1.1.2.tgz", + "integrity": "sha512-+WwxrtmBta7vcPCty7MtgilBmbxSGwN28Y8o+MG3GkHZccV0tXT+PLnAB+5WOjhhH10iFq+pzviRcXgcZ1x4OA==", + "dev": true, + "requires": { + "classnames": "^2.2.6", + "raf": "^3.4.1", + "rc-util": "^4.8.0" + } + }, + "react-draggable": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.2.tgz", + "integrity": "sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA==", + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true + }, + "react-pivottable": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-pivottable/-/react-pivottable-0.9.0.tgz", + "integrity": "sha512-fs1pGV5z4BvOXL4iLu79kKCLgR5XINW2ZredJHoPqXEMbJaIv50Eoec1XowWf3i3Dvdb8EYgvNqlF2ggC4GJOw==", + "requires": { + "immutability-helper": "^2.3.1", + "prop-types": "^15.5.10", + "react-draggable": "^3.0.3", + "react-sortablejs": "^1.3.4", + "sortablejs": "^1.6.1" + } + }, + "react-sortable-hoc": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz", + "integrity": "sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg==", + "requires": { + "@babel/runtime": "^7.2.0", + "invariant": "^2.2.4", + "prop-types": "^15.5.7" + } + }, + "react-sortablejs": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/react-sortablejs/-/react-sortablejs-1.5.1.tgz", + "integrity": "sha512-bKIc1UVhjZt55Nb6WZFxZ8Jwyngg8CTt+w+iG1pA5k9LQsg1J0X6nLppHatSSDZDECtRZKp2z47tmmhPRJNj4g==", + "requires": { + "prop-types": ">=15.0.0" + } + }, + "react-test-renderer": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz", + "integrity": "sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "react-is": "^16.8.6", + "scheduler": "^0.19.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "redeyed": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", + "integrity": "sha1-N+mQpvKyGyoRwuakj9QTVpjLqX8=", + "requires": { + "esprima": "~1.0.4" + }, + "dependencies": { + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + } + } + }, + "reduce-simplicial-complex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/reduce-simplicial-complex/-/reduce-simplicial-complex-1.0.0.tgz", + "integrity": "sha1-dNaWovg196bc2SBl/YxRgfLt+Lw=", + "requires": { + "cell-orientation": "^1.0.1", + "compare-cell": "^1.0.0", + "compare-oriented-cell": "^1.0.1" + } + }, + "reflect.ownkeys": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", + "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-regex/-/regex-regex-1.0.0.tgz", + "integrity": "sha1-kEih6uuHD01IDavHb8Qs3MC8OnI=" + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "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=" + } + } + }, + "regl": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regl/-/regl-1.4.2.tgz", + "integrity": "sha512-wc/kE6kGmGfQk3G9f1Pai4TZ0K1pWxkD1Jeaj6CxJwEiB1jwHgEpqD84G2t7F0DmNXfQh7IUnoG1opxoONJ7Xg==" + }, + "regl-error2d": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/regl-error2d/-/regl-error2d-2.0.8.tgz", + "integrity": "sha512-5nszdicXbimRUnYB42i+O7KPcla7PzI62nZLCP6qVRKlQCf3rSrWbikMNd1S84LE8+deWHWcb8rZ/v7rZ9qmmw==", + "requires": { + "array-bounds": "^1.0.1", + "bubleify": "^1.2.0", + "color-normalize": "^1.5.0", + "flatten-vertex-data": "^1.0.2", + "object-assign": "^4.1.1", + "pick-by-alias": "^1.2.0", + "to-float32": "^1.0.1", + "update-diff": "^1.1.0" + } + }, + "regl-line2d": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.0.15.tgz", + "integrity": "sha512-RuQbg9iZ6MyuInG8izF6zjQ/2g4qL6sg1egiuFalWzaGSvuve/IWBsIcqKTlwpiEsRt9b4cHu9NYs2fLt1gYJw==", + "requires": { + "array-bounds": "^1.0.1", + "array-normalize": "^1.1.4", + "bubleify": "^1.2.0", + "color-normalize": "^1.5.0", + "earcut": "^2.1.5", + "es6-weak-map": "^2.0.3", + "flatten-vertex-data": "^1.0.2", + "glslify": "^7.0.0", + "object-assign": "^4.1.1", + "parse-rect": "^1.2.0", + "pick-by-alias": "^1.2.0", + "to-float32": "^1.0.1" + } + }, + "regl-scatter2d": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.1.8.tgz", + "integrity": "sha512-Z9MYAUx9t8e3MsiHBbJAEstbIqauXxzcL9DmuKXQuRWfCMF2DBytYJtE0FpbQU6639wEMAJ54SEIlISWF8sQ2g==", + "requires": { + "array-range": "^1.0.1", + "array-rearrange": "^2.2.2", + "clamp": "^1.0.1", + "color-id": "^1.1.0", + "color-normalize": "1.5.0", + "color-rgba": "^2.1.1", + "flatten-vertex-data": "^1.0.2", + "glslify": "^7.0.0", + "image-palette": "^2.1.0", + "is-iexplorer": "^1.0.0", + "object-assign": "^4.1.1", + "parse-rect": "^1.2.0", + "pick-by-alias": "^1.2.0", + "point-cluster": "^3.1.8", + "to-float32": "^1.0.1", + "update-diff": "^1.1.0" + } + }, + "regl-splom": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/regl-splom/-/regl-splom-1.0.8.tgz", + "integrity": "sha512-4GQTgcArCbGLsXhgalWVBxeW7OXllnu+Gvil/4SbQQmtiqLCl+xgF79pISKY9mLXTlobxiX7cVKdjGjp25559A==", + "requires": { + "array-bounds": "^1.0.1", + "array-range": "^1.0.1", + "bubleify": "^1.2.0", + "color-alpha": "^1.0.4", + "defined": "^1.0.0", + "flatten-vertex-data": "^1.0.2", + "left-pad": "^1.3.0", + "parse-rect": "^1.2.0", + "pick-by-alias": "^1.2.0", + "point-cluster": "^3.1.8", + "raf": "^3.4.1", + "regl-scatter2d": "^3.1.2" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "reselect": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", + "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "requires": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "requires": { + "through": "~2.3.4" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "^0.1.1" + } + }, + "right-now": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz", + "integrity": "sha1-bolgne69fc2vja7Mmuo5z1haCRg=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rmc-feedback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rmc-feedback/-/rmc-feedback-2.0.0.tgz", + "integrity": "sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==", + "dev": true, + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.5" + } + }, + "robust-compress": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-compress/-/robust-compress-1.0.0.tgz", + "integrity": "sha1-TPYsSzGNgwhRYBK7jBF1Lzkymxs=" + }, + "robust-determinant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/robust-determinant/-/robust-determinant-1.1.0.tgz", + "integrity": "sha1-jsrnm3nKqz509t6+IjflORon6cc=", + "requires": { + "robust-compress": "^1.0.0", + "robust-scale": "^1.0.0", + "robust-sum": "^1.0.0", + "two-product": "^1.0.0" + } + }, + "robust-dot-product": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-dot-product/-/robust-dot-product-1.0.0.tgz", + "integrity": "sha1-yboBeL0sMEv9cl9Y6Inx2UYARVM=", + "requires": { + "robust-sum": "^1.0.0", + "two-product": "^1.0.0" + } + }, + "robust-in-sphere": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/robust-in-sphere/-/robust-in-sphere-1.1.3.tgz", + "integrity": "sha1-HFiD0WpOkjkpR27zSBmFe/Kpz3U=", + "requires": { + "robust-scale": "^1.0.0", + "robust-subtract": "^1.0.0", + "robust-sum": "^1.0.0", + "two-product": "^1.0.0" + } + }, + "robust-linear-solve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-linear-solve/-/robust-linear-solve-1.0.0.tgz", + "integrity": "sha1-DNasUEBpGm8qo81jEdcokFyjofE=", + "requires": { + "robust-determinant": "^1.1.0" + } + }, + "robust-orientation": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/robust-orientation/-/robust-orientation-1.1.3.tgz", + "integrity": "sha1-2v9bANO+TmByLw6cAVbvln8cIEk=", + "requires": { + "robust-scale": "^1.0.2", + "robust-subtract": "^1.0.0", + "robust-sum": "^1.0.0", + "two-product": "^1.0.2" + } + }, + "robust-product": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-product/-/robust-product-1.0.0.tgz", + "integrity": "sha1-aFJQAHzbunzx3nW/9tKScBEJir4=", + "requires": { + "robust-scale": "^1.0.0", + "robust-sum": "^1.0.0" + } + }, + "robust-scale": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/robust-scale/-/robust-scale-1.0.2.tgz", + "integrity": "sha1-d1Ey7QlULQKOWLLMecBikLz3jDI=", + "requires": { + "two-product": "^1.0.2", + "two-sum": "^1.0.0" + } + }, + "robust-segment-intersect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/robust-segment-intersect/-/robust-segment-intersect-1.0.1.tgz", + "integrity": "sha1-MlK2oPwboUreaRXMvgnLzpqrHBw=", + "requires": { + "robust-orientation": "^1.1.3" + } + }, + "robust-subtract": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-subtract/-/robust-subtract-1.0.0.tgz", + "integrity": "sha1-4LFk4e2LpOOl3aRaEgODSNvtPpo=" + }, + "robust-sum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-sum/-/robust-sum-1.0.0.tgz", + "integrity": "sha1-FmRuUlKStNJdgnV6KGlV4Lv6U9k=" + }, + "rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "requires": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "sane-topojson": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/sane-topojson/-/sane-topojson-4.0.0.tgz", + "integrity": "sha512-bJILrpBboQfabG3BNnHI2hZl52pbt80BE09u4WhnrmzuF2JbMKZdl62G5glXskJ46p+gxE2IzOwGj/awR4g8AA==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "scroll-into-view-if-needed": { + "version": "2.2.24", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.24.tgz", + "integrity": "sha512-vsC6SzyIZUyJG8o4nbUDCiIwsPdH6W/FVmjT2avR2hp/yzS53JjGmg/bKD20TkoNajbu5dAQN4xR7yes4qhwtQ==", + "dev": true, + "requires": { + "compute-scroll-into-view": "^1.0.13" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, + "sharkdown": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sharkdown/-/sharkdown-0.1.1.tgz", + "integrity": "sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg==", + "requires": { + "cardinal": "~0.4.2", + "minimist": "0.0.5", + "split": "~0.2.10" + }, + "dependencies": { + "minimist": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz", + "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=" + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "signum": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/signum/-/signum-0.0.0.tgz", + "integrity": "sha1-q1UbEAM1EHCnBHg/GgnF52kfnPY=" + }, + "simplicial-complex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simplicial-complex/-/simplicial-complex-1.0.0.tgz", + "integrity": "sha1-bDOk7Wn81Nkbe8rdOzC2NoPq4kE=", + "requires": { + "bit-twiddle": "^1.0.0", + "union-find": "^1.0.0" + } + }, + "simplicial-complex-boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simplicial-complex-boundary/-/simplicial-complex-boundary-1.0.1.tgz", + "integrity": "sha1-csn/HiTeqjdMm7L6DL8MCB6++BU=", + "requires": { + "boundary-cells": "^2.0.0", + "reduce-simplicial-complex": "^1.0.0" + } + }, + "simplicial-complex-contour": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/simplicial-complex-contour/-/simplicial-complex-contour-1.0.2.tgz", + "integrity": "sha1-iQqsrChDZTQBEFRc8mKaJuBL+dE=", + "requires": { + "marching-simplex-table": "^1.0.0", + "ndarray": "^1.0.15", + "ndarray-sort": "^1.0.0", + "typedarray-pool": "^1.1.0" + } + }, + "simplify-planar-graph": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/simplify-planar-graph/-/simplify-planar-graph-2.0.1.tgz", + "integrity": "sha1-vIWJNyXzLo+oriVoE5hEbSy892Y=", + "requires": { + "robust-orientation": "^1.0.1", + "simplicial-complex": "^0.3.3" + }, + "dependencies": { + "bit-twiddle": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-0.0.2.tgz", + "integrity": "sha1-wurruVKjuUrMFASX4c3NLxoz9Y4=" + }, + "simplicial-complex": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/simplicial-complex/-/simplicial-complex-0.3.3.tgz", + "integrity": "sha1-TDDK1X+eRXKd2PMGyHU1efRr6Z4=", + "requires": { + "bit-twiddle": "~0.0.1", + "union-find": "~0.0.3" + } + }, + "union-find": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/union-find/-/union-find-0.0.4.tgz", + "integrity": "sha1-uFSzMBYZva0USwAUx4+W6sDS8PY=" + } + } + }, + "slab-decomposition": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/slab-decomposition/-/slab-decomposition-1.0.2.tgz", + "integrity": "sha1-He1WdU1AixBznxRRA9/GGAf2UTQ=", + "requires": { + "binary-search-bounds": "^1.0.0", + "functional-red-black-tree": "^1.0.0", + "robust-orientation": "^1.1.3" + }, + "dependencies": { + "binary-search-bounds": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-1.0.0.tgz", + "integrity": "sha1-MjyjF+PypA9CRMclX1OEpbIHu2k=" + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz", + "integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=", + "requires": { + "through": "2" + } + }, + "split-polygon": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split-polygon/-/split-polygon-1.0.0.tgz", + "integrity": "sha1-DqzIoTanaxKj2VJW6n2kXbDC0kc=", + "requires": { + "robust-dot-product": "^1.0.0", + "robust-sum": "^1.0.0" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stack-trace": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=" + }, + "static-eval": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz", + "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==", + "requires": { + "escodegen": "^1.11.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "static-module": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-1.5.0.tgz", + "integrity": "sha1-J9qYg8QajNCSNvhC8MHrxu32PYY=", + "requires": { + "concat-stream": "~1.6.0", + "duplexer2": "~0.0.2", + "escodegen": "~1.3.2", + "falafel": "^2.1.0", + "has": "^1.0.0", + "object-inspect": "~0.4.0", + "quote-stream": "~0.0.0", + "readable-stream": "~1.0.27-1", + "shallow-copy": "~0.0.1", + "static-eval": "~0.2.0", + "through2": "~0.4.1" + }, + "dependencies": { + "escodegen": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", + "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=", + "requires": { + "esprima": "~1.1.1", + "estraverse": "~1.5.0", + "esutils": "~1.0.0", + "source-map": "~0.1.33" + } + }, + "esprima": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", + "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=" + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=" + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "object-inspect": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", + "integrity": "sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w=" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "static-eval": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-0.2.4.tgz", + "integrity": "sha1-t9NNg4k3uWn5ZBygfUj47eJj6ns=", + "requires": { + "escodegen": "~0.0.24" + }, + "dependencies": { + "escodegen": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.28.tgz", + "integrity": "sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M=", + "requires": { + "esprima": "~1.0.2", + "estraverse": "~1.3.0", + "source-map": ">= 0.1.2" + } + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + }, + "estraverse": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz", + "integrity": "sha1-N8K4k+8T1yPydth41g2FNRUqbEI=" + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=", + "dev": true + }, + "string-split-by": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", + "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==", + "requires": { + "parenthesis": "^3.1.5" + } + }, + "string-to-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-to-arraybuffer/-/string-to-arraybuffer-1.0.2.tgz", + "integrity": "sha512-DaGZidzi93dwjQen5I2osxR9ERS/R7B1PFyufNMnzhj+fmlDQAc1DSDIJVJhgI8Oq221efIMbABUBdPHDRt43Q==", + "requires": { + "atob-lite": "^2.0.0", + "is-base64": "^0.1.0" + }, + "dependencies": { + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" + } + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.trim": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", + "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strongly-connected-components": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz", + "integrity": "sha1-CSDitN9nyOrulsa2I0/inoc9upk=" + }, + "style-loader": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.4.tgz", + "integrity": "sha512-SbBHRD8fwK3pX+4UDF4ETxUF0+rCvk29LWTTI7Rt0cgsDjAj3SWM76ByTe6u2+4IlJ/WwluB7wuslWETCoPQdg==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "supercluster": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-6.0.2.tgz", + "integrity": "sha512-aa0v2HURjBTOpbcknilcfxGDuArM8khklKSmZ/T8ZXL0BuRwb5aRw95lz+2bmWpFvCXDX/+FzqHxmg0TIaJErw==", + "requires": { + "kdbush": "^3.0.0" + } + }, + "superscript-text": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/superscript-text/-/superscript-text-1.0.0.tgz", + "integrity": "sha1-58snUlZzYN9QvrBhDOjfPXHY39g=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "surface-nets": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/surface-nets/-/surface-nets-1.0.2.tgz", + "integrity": "sha1-5DPIy7qUpydMb0yZVStGG/H8eks=", + "requires": { + "ndarray-extract-contour": "^1.0.0", + "triangulate-hypercube": "^1.0.0", + "zero-crossings": "^1.0.0" + } + }, + "svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==" + }, + "svg-path-bounds": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/svg-path-bounds/-/svg-path-bounds-1.0.1.tgz", + "integrity": "sha1-v0WLeDcmv1NDG0Yz8nkvYHSNn3Q=", + "requires": { + "abs-svg-path": "^0.1.1", + "is-svg-path": "^1.0.1", + "normalize-svg-path": "^1.0.0", + "parse-svg-path": "^0.1.2" + }, + "dependencies": { + "normalize-svg-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.0.1.tgz", + "integrity": "sha1-b3Ka1rcLtMpO/y/ksQdInv4dVv4=", + "requires": { + "svg-arc-to-cubic-bezier": "^3.0.0" + } + } + } + }, + "svg-path-sdf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/svg-path-sdf/-/svg-path-sdf-1.1.3.tgz", + "integrity": "sha512-vJJjVq/R5lSr2KLfVXVAStktfcfa1pNFjFOgyJnzZFXlO/fDZ5DmM8FpnSKKzLPfEYTVeXuVBTHF296TpxuJVg==", + "requires": { + "bitmap-sdf": "^1.0.0", + "draw-svg-path": "^1.0.0", + "is-svg-path": "^1.0.1", + "parse-svg-path": "^0.1.2", + "svg-path-bounds": "^1.0.1" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tape": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", + "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", + "requires": { + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.0", + "object-inspect": "~1.7.0", + "resolve": "~1.15.1", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" + } + }, + "terser": { + "version": "4.6.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", + "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "text-cache": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/text-cache/-/text-cache-4.2.2.tgz", + "integrity": "sha512-zky+UDYiX0a/aPw/YTBD+EzKMlCTu1chFuCMZeAkgoRiceySdROu1V2kJXhCbtEdBhiOviYnAdGiSYl58HW0ZQ==", + "requires": { + "vectorize-text": "^3.2.1" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, + "tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, + "to-array-buffer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/to-array-buffer/-/to-array-buffer-3.2.0.tgz", + "integrity": "sha512-zN33mwi0gpL+7xW1ITLfJ48CEj6ZQW0ZAP0MU+2W3kEY0PAIncyuxmD4OqkUVhPAbTP7amq9j/iwvZKYS+lzSQ==", + "requires": { + "flatten-vertex-data": "^1.0.2", + "is-blob": "^2.0.1", + "string-to-arraybuffer": "^1.0.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-float32": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-float32/-/to-float32-1.0.1.tgz", + "integrity": "sha512-nOy2WSwae3xhZbc+05xiCuU3ZPPmH0L4Rg4Q1qiOGFSuNSCTB9nVJaGgGl3ZScxAclX/L8hJuDHJGDAzbfuKCQ==" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-px": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-px/-/to-px-1.1.0.tgz", + "integrity": "sha512-bfg3GLYrGoEzrGoE05TAL/Uw+H/qrf2ptr9V3W7U0lkjjyYnIfgxmVLUfhQ1hZpIQwin81uxhDjvUkDYsC0xWw==", + "requires": { + "parse-unit": "^1.0.1" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-uint8": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/to-uint8/-/to-uint8-1.4.1.tgz", + "integrity": "sha512-o+ochsMlTZyucbww8It401FC2Rx+OP2RpDeYbA6h+y9HgedDl1UjdsJ9CmzKEG7AFP9es5PmJ4eDWeeeXihESg==", + "requires": { + "arr-flatten": "^1.1.0", + "clamp": "^1.0.1", + "is-base64": "^0.1.0", + "is-float-array": "^1.0.0", + "to-array-buffer": "^3.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", + "dev": true + }, + "topojson-client": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-2.1.0.tgz", + "integrity": "sha1-/59784mRGF4LQoTCsGroNPDqxsg=", + "requires": { + "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "optional": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "triangulate-hypercube": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/triangulate-hypercube/-/triangulate-hypercube-1.0.1.tgz", + "integrity": "sha1-2Acdsuv8/VHzCNC88qXEils20Tc=", + "requires": { + "gamma": "^0.1.0", + "permutation-parity": "^1.0.0", + "permutation-rank": "^1.0.0" + } + }, + "triangulate-polyline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/triangulate-polyline/-/triangulate-polyline-1.0.3.tgz", + "integrity": "sha1-v4uod6hQVBA/65+lphtOjXAXgU0=", + "requires": { + "cdt2d": "^1.0.0" + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "turntable-camera-controller": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/turntable-camera-controller/-/turntable-camera-controller-3.0.1.tgz", + "integrity": "sha1-jb0/4AVQGRxlFky4iJcQSVeK/Zk=", + "requires": { + "filtered-vector": "^1.2.1", + "gl-mat4": "^1.0.2", + "gl-vec3": "^1.0.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "two-product": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/two-product/-/two-product-1.0.2.tgz", + "integrity": "sha1-Z9ldSyV6kh4stL16+VEfkIhSLqo=" + }, + "two-sum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/two-sum/-/two-sum-1.0.0.tgz", + "integrity": "sha1-MdPzIjnk9zHsqd+RVeKyl/AIq2Q=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-pool": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typedarray-pool/-/typedarray-pool-1.2.0.tgz", + "integrity": "sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ==", + "requires": { + "bit-twiddle": "^1.0.0", + "dup": "^1.0.0" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "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==" + }, + "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==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "union-find": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/union-find/-/union-find-1.0.2.tgz", + "integrity": "sha1-KSusQV5q06iVNdI3AQ20pTYoTlg=" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-diff/-/update-diff-1.1.0.tgz", + "integrity": "sha1-9RAYLYHugZ+4LDprIrYrve2ngI8=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "use-debounce": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-3.4.1.tgz", + "integrity": "sha512-KHZPsL+cZvOt/ZAsHTcoAK65ImXU0iG9FDeofuj9uJTdUULF6Gjws8HpK+JlIjZpZ7LTqPHZtEknc+Im4cB3AA==" + }, + "use-media": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-media/-/use-media-1.4.0.tgz", + "integrity": "sha512-XsgyUAf3nhzZmEfhc5MqLHwyaPjs78bgytpVJ/xDl0TF4Bptf3vEpBNBBT/EIKOmsOc8UbuECq3mrP3mt1QANA==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-copy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/utils-copy/-/utils-copy-1.1.1.tgz", + "integrity": "sha1-biuXmCqozXPhGCo+b4vsPA9AWKc=", + "requires": { + "const-pinf-float64": "^1.0.0", + "object-keys": "^1.0.9", + "type-name": "^2.0.0", + "utils-copy-error": "^1.0.0", + "utils-indexof": "^1.0.0", + "utils-regex-from-string": "^1.0.0", + "validate.io-array": "^1.0.3", + "validate.io-buffer": "^1.0.1", + "validate.io-nonnegative-integer": "^1.0.0" + } + }, + "utils-copy-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-copy-error/-/utils-copy-error-1.0.1.tgz", + "integrity": "sha1-eR3jk8DwmJCv1Z88vqY18HmpT6U=", + "requires": { + "object-keys": "^1.0.9", + "utils-copy": "^1.1.0" + } + }, + "utils-indexof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-indexof/-/utils-indexof-1.0.0.tgz", + "integrity": "sha1-IP6r8J7xAYtSNkPoOA57yD7GG1w=", + "requires": { + "validate.io-array-like": "^1.0.1", + "validate.io-integer-primitive": "^1.0.0" + } + }, + "utils-regex-from-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-regex-from-string/-/utils-regex-from-string-1.0.0.tgz", + "integrity": "sha1-/hopCfjeD/DVGCyA+8ZU1qaH0Yk=", + "requires": { + "regex-regex": "^1.0.0", + "validate.io-string-primitive": "^1.0.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "optional": true + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate.io-array": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", + "integrity": "sha1-W1osr9j4uFq7L4hroVPy2Tond00=" + }, + "validate.io-array-like": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/validate.io-array-like/-/validate.io-array-like-1.0.2.tgz", + "integrity": "sha1-evn363tRcVvrIhVmjsXM5U+t21o=", + "requires": { + "const-max-uint32": "^1.0.2", + "validate.io-integer-primitive": "^1.0.0" + } + }, + "validate.io-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/validate.io-buffer/-/validate.io-buffer-1.0.2.tgz", + "integrity": "sha1-hS1nNAIZFNXROvwyUxdh43IO1E4=" + }, + "validate.io-integer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", + "integrity": "sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=", + "requires": { + "validate.io-number": "^1.0.3" + } + }, + "validate.io-integer-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-integer-primitive/-/validate.io-integer-primitive-1.0.0.tgz", + "integrity": "sha1-qaoBA1X+hoHA/qbBp0rSQZyt3cY=", + "requires": { + "validate.io-number-primitive": "^1.0.0" + } + }, + "validate.io-matrix-like": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/validate.io-matrix-like/-/validate.io-matrix-like-1.0.2.tgz", + "integrity": "sha1-XsMqddCInaxzbepovdYUWxVe38M=" + }, + "validate.io-ndarray-like": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-ndarray-like/-/validate.io-ndarray-like-1.0.0.tgz", + "integrity": "sha1-2KOw7RZbvx0vwNAHMnDPpVIpWRk=" + }, + "validate.io-nonnegative-integer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-nonnegative-integer/-/validate.io-nonnegative-integer-1.0.0.tgz", + "integrity": "sha1-gGkkOgjF+Y6VQTySnf17GPP28p8=", + "requires": { + "validate.io-integer": "^1.0.5" + } + }, + "validate.io-number": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", + "integrity": "sha1-9j/+2iSL8opnqNSODjtGGhZluvg=" + }, + "validate.io-number-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-number-primitive/-/validate.io-number-primitive-1.0.0.tgz", + "integrity": "sha1-0uAfICmJNp3PEVVElWQgOv5YTlU=" + }, + "validate.io-positive-integer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-positive-integer/-/validate.io-positive-integer-1.0.0.tgz", + "integrity": "sha1-ftLQO0wnVYzGagCqsPDpIYFKZYI=", + "requires": { + "validate.io-integer": "^1.0.5" + } + }, + "validate.io-string-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/validate.io-string-primitive/-/validate.io-string-primitive-1.0.1.tgz", + "integrity": "sha1-uBNbn7E3K94C/dU60dDM1t55j+4=" + }, + "vectorize-text": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/vectorize-text/-/vectorize-text-3.2.1.tgz", + "integrity": "sha512-rGojF+D9BB96iPZPUitfq5kaiS6eCJmfEel0NXOK/MzZSuXGiwhoop80PtaDas9/Hg/oaox1tI9g3h93qpuspg==", + "requires": { + "cdt2d": "^1.0.0", + "clean-pslg": "^1.1.0", + "ndarray": "^1.0.11", + "planar-graph-to-polyline": "^1.0.0", + "simplify-planar-graph": "^2.0.1", + "surface-nets": "^1.0.0", + "triangulate-polyline": "^1.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vt-pbf": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.1.tgz", + "integrity": "sha512-pHjWdrIoxurpmTcbfBWXaPwSmtPAHS105253P1qyEfSTV2HJddqjM+kIHquaT/L6lVJIk9ltTGc0IxR/G47hYA==", + "requires": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.0.5" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "weak-map": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz", + "integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=" + }, + "weakmap-shim": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/weakmap-shim/-/weakmap-shim-1.1.1.tgz", + "integrity": "sha1-1lr9eEEJshZuAP9XHDMVDsKkC0k=" + }, + "webgl-context": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webgl-context/-/webgl-context-2.2.0.tgz", + "integrity": "sha1-jzfXJXz23xzQpJ5qextyG5TMhqA=", + "requires": { + "get-canvas-context": "^1.0.1" + } + }, + "webpack": { + "version": "4.42.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.1.tgz", + "integrity": "sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "wgs84": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/wgs84/-/wgs84-0.0.0.tgz", + "integrity": "sha1-NP3FVZF7blfPKigu0ENxDASc3HY=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "world-calendars": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.3.tgz", + "integrity": "sha1-slxQMrokEo/8QdCfr0pewbnBQzU=", + "requires": { + "object-assign": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "zero-crossings": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/zero-crossings/-/zero-crossings-1.0.1.tgz", + "integrity": "sha1-xWK9MRNkPzRDokXRJAa4i2m5qf8=", + "requires": { + "cwise-compiler": "^1.0.0" + } + } + } +} diff --git a/redash-visualizations/package.json b/redash-visualizations/package.json new file mode 100644 index 0000000000..4f9c7357fe --- /dev/null +++ b/redash-visualizations/package.json @@ -0,0 +1,78 @@ +{ + "name": "redash-visualizations", + "version": "1.0.0", + "description": "Redash visualizations", + "main": "dist/redash-visualizations.js", + "scripts": { + "clean": "rm -rf lib dist", + "build:babel": "babel src --out-dir lib --source-maps --copy-files", + "build:webpack": "webpack", + "build": " NODE_ENV=production npm-run-all clean build:babel build:webpack", + "watch:babel": "babel src --watch --out-dir lib --source-maps --copy-files", + "watch:webpack": "webpack --watch", + "watch": "npm-run-all --parallel watch:*" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/getredash/redash.git" + }, + "author": "Redash", + "license": "BSD-2-Clause", + "peerDependencies": { + "antd": ">=3.19.0", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + }, + "devDependencies": { + "@babel/cli": "^7.8.4", + "@babel/core": "^7.9.0", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/preset-env": "^7.9.0", + "@babel/preset-react": "^7.9.4", + "antd": "^4.1.4", + "babel-loader": "^8.1.0", + "babel-plugin-module-resolver": "^4.0.0", + "css-loader": "^3.5.2", + "enzyme": "^3.8.0", + "enzyme-adapter-react-16": "^1.7.1", + "enzyme-to-json": "^3.3.5", + "file-loader": "^6.0.0", + "less": "^3.11.1", + "less-loader": "^5.0.0", + "less-plugin-autoprefix": "^2.0.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.0.4", + "prop-types": "^15.7.2", + "style-loader": "^1.1.4", + "webpack": "^4.42.1", + "webpack-cli": "^3.3.11" + }, + "files": [ + "dist", + "lib" + ], + "dependencies": { + "axios": "^0.19.2", + "beautifymarker": "^1.0.7", + "chroma-js": "^1.3.6", + "classnames": "^2.2.6", + "d3": "^3.5.17", + "d3-cloud": "^1.2.4", + "debug": "^3.1.0", + "dompurify": "^2.0.7", + "font-awesome": "^4.7.0", + "hoist-non-react-statics": "^3.3.0", + "leaflet": "^1.2.0", + "leaflet-fullscreen": "^1.0.2", + "leaflet.markercluster": "^1.1.0", + "lodash": "^4.17.10", + "moment": "^2.19.3", + "numeral": "^2.0.6", + "plotly.js": "1.52.3", + "react-pivottable": "^0.9.0", + "react-sortable-hoc": "^1.10.1", + "tinycolor2": "^1.4.1", + "use-debounce": "^3.4.1", + "use-media": "^1.4.0" + } +} diff --git a/redash-visualizations/prettier.config.js b/redash-visualizations/prettier.config.js new file mode 100644 index 0000000000..059f7f83be --- /dev/null +++ b/redash-visualizations/prettier.config.js @@ -0,0 +1,6 @@ +module.exports = { + printWidth: 120, + jsxBracketSameLine: true, + tabWidth: 2, + trailingComma: 'es5', +}; diff --git a/redash-visualizations/webpack.config.js b/redash-visualizations/webpack.config.js new file mode 100644 index 0000000000..72ba2258c1 --- /dev/null +++ b/redash-visualizations/webpack.config.js @@ -0,0 +1,65 @@ +const LessPluginAutoPrefix = require("less-plugin-autoprefix"); +const path = require("path"); + +const isProduction = process.env.NODE_ENV === "production"; + +module.exports = { + mode: isProduction ? "production" : "development", + entry: "./src/index.js", + output: { + path: path.resolve(__dirname, "dist"), + filename: "redash-visualizations.js", + libraryTarget: "umd", + }, + resolve: { + symlinks: false, + extensions: [".js", ".jsx"], + }, + module: { + rules: [ + { + test: /\.jsx?$/, + exclude: /node_modules/, + use: ["babel-loader"], + }, + { + test: /\.css$/, + use: ["style-loader", "css-loader"], + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + use: [ + { + loader: "file-loader", + options: { + outputPath: "images/", + name: "[name].[ext]", + }, + }, + ], + }, + { + test: /\.less$/, + use: [ + "style-loader", + "css-loader", + { + loader: "less-loader", + options: { + plugins: [new LessPluginAutoPrefix({ browsers: ["last 3 versions"] })], + javascriptEnabled: true, + }, + }, + ], + }, + ], + }, + externals: [ + { + lodash: "lodash", + react: "react", + "react-dom": "react-dom", + }, + /^antd/i, + ], +}; From 2f19611ed67ce8672380fc2b234790abd56ff06d Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sat, 25 Apr 2020 19:23:40 -0300 Subject: [PATCH 02/19] Move visualizations to redash-visualizations --- client/app/components/QueryLink.jsx | 2 +- .../EditVisualizationDialog.jsx | 9 +- .../visualizations/VisualizationName.jsx | 3 +- .../visualizations/VisualizationRenderer.jsx | 2 +- .../visualizations/editor/ContextHelp.jsx | 2 +- .../editor/createTabbedEditor.jsx | 2 +- .../visualizationComponents.jsx | 7 +- client/app/config/index.js | 2 +- .../app/pages/queries/VisualizationEmbed.jsx | 2 +- client/app/services/widget.js | 2 +- package-lock.json | 65 +++++++ package.json | 1 + redash-visualizations/.babelrc | 15 ++ redash-visualizations/.gitignore | 20 +++ .../src/components/ColorPicker/Input.jsx | 94 ++++++++++ .../src/components/ColorPicker/Label.jsx | 31 ++++ .../src/components/ColorPicker/Swatch.jsx | 42 +++++ .../src/components/ColorPicker/index.jsx | 161 ++++++++++++++++++ .../src/components/ColorPicker/index.less | 44 +++++ .../src/components/ColorPicker/input.less | 19 +++ .../src/components/ColorPicker/label.less | 7 + .../src/components/ColorPicker/swatch.less | 30 ++++ .../src/components/ColorPicker/utils.js | 14 ++ .../src/components/ErrorBoundary.jsx | 74 ++++++++ .../src/components/HtmlContent.jsx | 22 +++ .../components/TextAlignmentSelect/index.jsx | 42 +++++ .../components/TextAlignmentSelect/index.less | 13 ++ .../JsonViewInteractive.jsx | 110 ++++++++++++ .../json-view-interactive.less | 112 ++++++++++++ .../src/components/sortable/index.jsx | 80 +++++++++ .../src/components/sortable/style.less | 30 ++++ .../visualizations/editor/ContextHelp.jsx | 54 ++++++ .../visualizations/editor/Section.jsx | 47 +++++ .../visualizations/editor/Section.less | 8 + .../visualizations/editor/Switch.jsx | 42 +++++ .../visualizations/editor/Switch.less | 8 + .../visualizations/editor/TextArea.jsx | 12 ++ .../visualizations/editor/TextArea.less | 3 + .../visualizations/editor/context-help.less | 17 ++ .../visualizations/editor/control-label.less | 11 ++ .../editor/createTabbedEditor.jsx | 51 ++++++ .../components/visualizations/editor/index.js | 21 +++ .../editor/withControlLabel.jsx | 88 ++++++++++ redash-visualizations/src/index.js | 8 + .../src/lib/chooseTextColorForBackground.js | 11 ++ .../src/lib/hooks/useMemoWithDeepCompare.js | 11 ++ redash-visualizations/src/lib/utils.js | 43 +++++ redash-visualizations/src/lib/value-format.js | 86 ++++++++++ .../src/services/resizeObserver.js | 32 ++++ .../src/services/sanitize.js | 21 +++ .../src}/visualizations/ColorPalette.js | 0 .../src}/visualizations/Editor.jsx | 0 .../src}/visualizations/Renderer.jsx | 0 .../src}/visualizations/box-plot/Editor.jsx | 0 .../src}/visualizations/box-plot/Renderer.jsx | 0 .../src}/visualizations/box-plot/d3box.js | 0 .../src}/visualizations/box-plot/index.js | 0 .../visualizations/box-plot/renderer.less | 0 .../chart/Editor/AxisSettings.jsx | 0 .../chart/Editor/ChartTypeSelect.jsx | 0 .../chart/Editor/ColorsSettings.jsx | 0 .../chart/Editor/ColorsSettings.test.js | 0 .../chart/Editor/ColumnMappingSelect.jsx | 0 .../chart/Editor/CustomChartSettings.jsx | 0 .../chart/Editor/DataLabelsSettings.jsx | 0 .../chart/Editor/DataLabelsSettings.test.js | 0 .../chart/Editor/DefaultColorsSettings.jsx | 0 .../chart/Editor/GeneralSettings.jsx | 0 .../chart/Editor/GeneralSettings.test.js | 0 .../chart/Editor/HeatmapColorsSettings.jsx | 0 .../chart/Editor/PieColorsSettings.jsx | 0 .../chart/Editor/SeriesSettings.jsx | 0 .../chart/Editor/SeriesSettings.test.js | 0 .../chart/Editor/XAxisSettings.jsx | 0 .../chart/Editor/XAxisSettings.test.js | 0 .../chart/Editor/YAxisSettings.jsx | 0 .../chart/Editor/YAxisSettings.test.js | 0 .../__snapshots__/ColorsSettings.test.js.snap | 0 .../DataLabelsSettings.test.js.snap | 0 .../GeneralSettings.test.js.snap | 0 .../__snapshots__/SeriesSettings.test.js.snap | 0 .../__snapshots__/XAxisSettings.test.js.snap | 0 .../__snapshots__/YAxisSettings.test.js.snap | 0 .../visualizations/chart/Editor/editor.less | 0 .../visualizations/chart/Editor/index.jsx | 0 .../visualizations/chart/Editor/index.test.js | 0 .../chart/Renderer/CustomPlotlyChart.jsx | 0 .../chart/Renderer/PlotlyChart.jsx | 0 .../visualizations/chart/Renderer/index.jsx | 0 .../chart/Renderer/renderer.less | 0 .../getChartData/multiple-series-grouped.json | 0 .../multiple-series-multiple-y.json | 0 .../getChartData/multiple-series-sorted.json | 0 .../fixtures/getChartData/single-series.json | 0 .../src}/visualizations/chart/getChartData.js | 0 .../visualizations/chart/getChartData.test.js | 0 .../src}/visualizations/chart/getOptions.js | 0 .../src}/visualizations/chart/index.js | 0 .../chart/plotly/applyLayoutFixes.js | 0 .../chart/plotly/customChartUtils.js | 0 .../fixtures/prepareData/bar/default.json | 0 .../fixtures/prepareData/bar/normalized.json | 0 .../fixtures/prepareData/bar/stacked.json | 0 .../fixtures/prepareData/box/default.json | 0 .../fixtures/prepareData/box/with-points.json | 0 .../fixtures/prepareData/bubble/default.json | 0 .../fixtures/prepareData/heatmap/default.json | 0 .../prepareData/heatmap/reversed.json | 0 .../prepareData/heatmap/sorted-reversed.json | 0 .../fixtures/prepareData/heatmap/sorted.json | 0 .../prepareData/heatmap/with-labels.json | 0 .../prepareData/line-area/default.json | 0 .../line-area/keep-missing-values.json | 0 .../line-area/missing-values-0.json | 0 .../line-area/normalized-stacked.json | 0 .../prepareData/line-area/normalized.json | 0 .../prepareData/line-area/stacked.json | 0 .../prepareData/pie/custom-tooltip.json | 0 .../fixtures/prepareData/pie/default.json | 0 .../prepareData/pie/without-labels.json | 0 .../fixtures/prepareData/pie/without-x.json | 0 .../fixtures/prepareData/scatter/default.json | 0 .../prepareData/scatter/without-labels.json | 0 .../prepareLayout/box-single-axis.json | 0 .../prepareLayout/box-with-second-axis.json | 0 .../prepareLayout/default-single-axis.json | 0 .../default-with-second-axis.json | 0 .../prepareLayout/default-with-stacking.json | 0 .../prepareLayout/default-without-legend.json | 0 .../prepareLayout/pie-multiple-series.json | 0 .../pie-without-annotations.json | 0 .../plotly/fixtures/prepareLayout/pie.json | 0 .../src}/visualizations/chart/plotly/index.js | 0 .../chart/plotly/prepareData.js | 0 .../chart/plotly/prepareData.test.js | 0 .../chart/plotly/prepareDefaultData.js | 0 .../chart/plotly/prepareHeatmapData.js | 0 .../chart/plotly/prepareLayout.js | 0 .../chart/plotly/prepareLayout.test.js | 0 .../chart/plotly/preparePieData.js | 0 .../visualizations/chart/plotly/updateData.js | 0 .../src}/visualizations/chart/plotly/utils.js | 0 .../visualizations/choropleth/ColorPalette.js | 0 .../choropleth/Editor/BoundsSettings.jsx | 0 .../choropleth/Editor/ColorsSettings.jsx | 0 .../choropleth/Editor/FormatSettings.jsx | 0 .../choropleth/Editor/GeneralSettings.jsx | 0 .../visualizations/choropleth/Editor/index.js | 0 .../visualizations/choropleth/Editor/utils.js | 0 .../choropleth/Renderer/Legend.jsx | 0 .../choropleth/Renderer/index.jsx | 0 .../choropleth/Renderer/initChoropleth.js | 0 .../choropleth/Renderer/renderer.less | 0 .../choropleth/Renderer/utils.js | 0 .../visualizations/choropleth/getOptions.js | 0 .../src}/visualizations/choropleth/index.js | 0 .../choropleth/maps/countries.geo.json | 0 .../maps/japan.prefectures.geo.json | 0 .../src}/visualizations/cohort/Cornelius.jsx | 0 .../cohort/Editor/AppearanceSettings.jsx | 0 .../cohort/Editor/ColorsSettings.jsx | 0 .../cohort/Editor/ColumnsSettings.jsx | 0 .../cohort/Editor/OptionsSettings.jsx | 0 .../visualizations/cohort/Editor/index.js | 0 .../src}/visualizations/cohort/Renderer.jsx | 0 .../src}/visualizations/cohort/cornelius.less | 0 .../src}/visualizations/cohort/getOptions.js | 0 .../src}/visualizations/cohort/index.js | 0 .../src}/visualizations/cohort/prepareData.js | 0 .../src}/visualizations/cohort/renderer.less | 0 .../counter/Editor/FormatSettings.jsx | 0 .../counter/Editor/GeneralSettings.jsx | 0 .../visualizations/counter/Editor/index.js | 0 .../src}/visualizations/counter/Renderer.jsx | 0 .../src}/visualizations/counter/index.js | 0 .../src}/visualizations/counter/render.less | 0 .../src}/visualizations/counter/utils.js | 0 .../src}/visualizations/counter/utils.test.js | 0 .../details/DetailsRenderer.jsx | 0 .../src}/visualizations/details/details.less | 0 .../src}/visualizations/details/index.js | 0 .../funnel/Editor/AppearanceSettings.jsx | 0 .../funnel/Editor/GeneralSettings.jsx | 0 .../visualizations/funnel/Editor/index.js | 0 .../funnel/Renderer/FunnelBar.jsx | 0 .../funnel/Renderer/funnel-bar.less | 0 .../visualizations/funnel/Renderer/index.jsx | 0 .../visualizations/funnel/Renderer/index.less | 0 .../funnel/Renderer/prepareData.js | 0 .../src}/visualizations/funnel/getOptions.js | 0 .../src}/visualizations/funnel/index.js | 0 .../src}/visualizations/index.js | 0 .../map/Editor/FormatSettings.jsx | 0 .../map/Editor/GeneralSettings.jsx | 0 .../map/Editor/GroupsSettings.jsx | 0 .../map/Editor/StyleSettings.jsx | 0 .../src}/visualizations/map/Editor/index.js | 0 .../src}/visualizations/map/Renderer.jsx | 0 .../src}/visualizations/map/getOptions.js | 0 .../src}/visualizations/map/index.js | 0 .../src}/visualizations/map/initMap.js | 0 .../src}/visualizations/map/prepareData.js | 0 .../src}/visualizations/pivot/Editor.jsx | 0 .../src}/visualizations/pivot/Renderer.jsx | 0 .../src}/visualizations/pivot/index.js | 0 .../src}/visualizations/pivot/renderer.less | 0 .../src}/visualizations/prop-types.js | 0 .../registeredVisualizations.js | 0 .../src}/visualizations/sankey/Editor.jsx | 0 .../src}/visualizations/sankey/Renderer.jsx | 0 .../src}/visualizations/sankey/d3sankey.js | 0 .../src}/visualizations/sankey/index.js | 0 .../src}/visualizations/sankey/initSankey.js | 0 .../src}/visualizations/sankey/renderer.less | 0 .../src}/visualizations/sunburst/Editor.jsx | 0 .../src}/visualizations/sunburst/Renderer.jsx | 0 .../src}/visualizations/sunburst/index.js | 0 .../visualizations/sunburst/initSunburst.js | 0 .../visualizations/sunburst/renderer.less | 0 .../table/Editor/ColumnEditor.jsx | 0 .../table/Editor/ColumnsSettings.jsx | 0 .../table/Editor/ColumnsSettings.test.js | 0 .../table/Editor/GridSettings.jsx | 0 .../table/Editor/GridSettings.test.js | 0 .../ColumnsSettings.test.js.snap | 0 .../__snapshots__/GridSettings.test.js.snap | 0 .../visualizations/table/Editor/editor.less | 0 .../visualizations/table/Editor/index.jsx | 0 .../src}/visualizations/table/Renderer.jsx | 0 .../__snapshots__/boolean.test.js.snap | 0 .../__snapshots__/datetime.test.js.snap | 0 .../columns/__snapshots__/image.test.js.snap | 0 .../columns/__snapshots__/link.test.js.snap | 0 .../columns/__snapshots__/number.test.js.snap | 0 .../columns/__snapshots__/text.test.js.snap | 0 .../visualizations/table/columns/boolean.jsx | 0 .../table/columns/boolean.test.js | 0 .../visualizations/table/columns/datetime.jsx | 0 .../table/columns/datetime.test.js | 0 .../visualizations/table/columns/image.jsx | 0 .../table/columns/image.test.js | 0 .../visualizations/table/columns/index.js | 0 .../visualizations/table/columns/json.jsx | 0 .../visualizations/table/columns/link.jsx | 0 .../visualizations/table/columns/link.test.js | 0 .../visualizations/table/columns/number.jsx | 0 .../table/columns/number.test.js | 0 .../visualizations/table/columns/text.jsx | 0 .../visualizations/table/columns/text.test.js | 0 .../src}/visualizations/table/getOptions.js | 0 .../src}/visualizations/table/index.js | 0 .../src}/visualizations/table/renderer.less | 0 .../src}/visualizations/table/utils.js | 0 .../src}/visualizations/variables.less | 0 .../visualizations/visualizationsSettings.js | 0 .../src}/visualizations/word-cloud/Editor.jsx | 0 .../visualizations/word-cloud/Renderer.jsx | 0 .../src}/visualizations/word-cloud/index.js | 0 .../visualizations/word-cloud/renderer.less | 0 259 files changed, 1616 insertions(+), 17 deletions(-) create mode 100644 redash-visualizations/.babelrc create mode 100644 redash-visualizations/.gitignore create mode 100644 redash-visualizations/src/components/ColorPicker/Input.jsx create mode 100644 redash-visualizations/src/components/ColorPicker/Label.jsx create mode 100644 redash-visualizations/src/components/ColorPicker/Swatch.jsx create mode 100644 redash-visualizations/src/components/ColorPicker/index.jsx create mode 100644 redash-visualizations/src/components/ColorPicker/index.less create mode 100644 redash-visualizations/src/components/ColorPicker/input.less create mode 100644 redash-visualizations/src/components/ColorPicker/label.less create mode 100644 redash-visualizations/src/components/ColorPicker/swatch.less create mode 100644 redash-visualizations/src/components/ColorPicker/utils.js create mode 100644 redash-visualizations/src/components/ErrorBoundary.jsx create mode 100644 redash-visualizations/src/components/HtmlContent.jsx create mode 100644 redash-visualizations/src/components/TextAlignmentSelect/index.jsx create mode 100644 redash-visualizations/src/components/TextAlignmentSelect/index.less create mode 100644 redash-visualizations/src/components/json-view-interactive/JsonViewInteractive.jsx create mode 100644 redash-visualizations/src/components/json-view-interactive/json-view-interactive.less create mode 100644 redash-visualizations/src/components/sortable/index.jsx create mode 100644 redash-visualizations/src/components/sortable/style.less create mode 100644 redash-visualizations/src/components/visualizations/editor/ContextHelp.jsx create mode 100644 redash-visualizations/src/components/visualizations/editor/Section.jsx create mode 100644 redash-visualizations/src/components/visualizations/editor/Section.less create mode 100644 redash-visualizations/src/components/visualizations/editor/Switch.jsx create mode 100644 redash-visualizations/src/components/visualizations/editor/Switch.less create mode 100644 redash-visualizations/src/components/visualizations/editor/TextArea.jsx create mode 100644 redash-visualizations/src/components/visualizations/editor/TextArea.less create mode 100644 redash-visualizations/src/components/visualizations/editor/context-help.less create mode 100644 redash-visualizations/src/components/visualizations/editor/control-label.less create mode 100644 redash-visualizations/src/components/visualizations/editor/createTabbedEditor.jsx create mode 100644 redash-visualizations/src/components/visualizations/editor/index.js create mode 100644 redash-visualizations/src/components/visualizations/editor/withControlLabel.jsx create mode 100644 redash-visualizations/src/index.js create mode 100644 redash-visualizations/src/lib/chooseTextColorForBackground.js create mode 100644 redash-visualizations/src/lib/hooks/useMemoWithDeepCompare.js create mode 100644 redash-visualizations/src/lib/utils.js create mode 100644 redash-visualizations/src/lib/value-format.js create mode 100644 redash-visualizations/src/services/resizeObserver.js create mode 100644 redash-visualizations/src/services/sanitize.js rename {client/app => redash-visualizations/src}/visualizations/ColorPalette.js (100%) rename {client/app => redash-visualizations/src}/visualizations/Editor.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/box-plot/Editor.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/box-plot/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/box-plot/d3box.js (100%) rename {client/app => redash-visualizations/src}/visualizations/box-plot/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/box-plot/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/AxisSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/ChartTypeSelect.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/ColorsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/ColorsSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/ColumnMappingSelect.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/CustomChartSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/DataLabelsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/DataLabelsSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/DefaultColorsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/GeneralSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/GeneralSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/HeatmapColorsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/PieColorsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/SeriesSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/SeriesSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/XAxisSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/XAxisSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/YAxisSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/YAxisSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/editor.less (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/index.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Editor/index.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Renderer/CustomPlotlyChart.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Renderer/PlotlyChart.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Renderer/index.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/Renderer/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/fixtures/getChartData/single-series.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/getChartData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/getChartData.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/getOptions.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/applyLayoutFixes.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/customChartUtils.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/bar/default.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/box/default.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/pie/default.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/fixtures/prepareLayout/pie.json (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/prepareData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/prepareData.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/prepareDefaultData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/prepareHeatmapData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/prepareLayout.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/prepareLayout.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/preparePieData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/updateData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/chart/plotly/utils.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/ColorPalette.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Editor/BoundsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Editor/ColorsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Editor/FormatSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Editor/GeneralSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Editor/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Editor/utils.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Renderer/Legend.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Renderer/index.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Renderer/initChoropleth.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Renderer/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/Renderer/utils.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/getOptions.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/maps/countries.geo.json (100%) rename {client/app => redash-visualizations/src}/visualizations/choropleth/maps/japan.prefectures.geo.json (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/Cornelius.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/Editor/AppearanceSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/Editor/ColorsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/Editor/ColumnsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/Editor/OptionsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/Editor/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/cornelius.less (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/getOptions.js (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/prepareData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/cohort/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/Editor/FormatSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/Editor/GeneralSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/Editor/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/render.less (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/utils.js (100%) rename {client/app => redash-visualizations/src}/visualizations/counter/utils.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/details/DetailsRenderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/details/details.less (100%) rename {client/app => redash-visualizations/src}/visualizations/details/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Editor/AppearanceSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Editor/GeneralSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Editor/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Renderer/FunnelBar.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Renderer/funnel-bar.less (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Renderer/index.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Renderer/index.less (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/Renderer/prepareData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/getOptions.js (100%) rename {client/app => redash-visualizations/src}/visualizations/funnel/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/map/Editor/FormatSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/map/Editor/GeneralSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/map/Editor/GroupsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/map/Editor/StyleSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/map/Editor/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/map/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/map/getOptions.js (100%) rename {client/app => redash-visualizations/src}/visualizations/map/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/map/initMap.js (100%) rename {client/app => redash-visualizations/src}/visualizations/map/prepareData.js (100%) rename {client/app => redash-visualizations/src}/visualizations/pivot/Editor.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/pivot/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/pivot/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/pivot/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/prop-types.js (100%) rename {client/app => redash-visualizations/src}/visualizations/registeredVisualizations.js (100%) rename {client/app => redash-visualizations/src}/visualizations/sankey/Editor.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/sankey/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/sankey/d3sankey.js (100%) rename {client/app => redash-visualizations/src}/visualizations/sankey/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/sankey/initSankey.js (100%) rename {client/app => redash-visualizations/src}/visualizations/sankey/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/sunburst/Editor.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/sunburst/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/sunburst/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/sunburst/initSunburst.js (100%) rename {client/app => redash-visualizations/src}/visualizations/sunburst/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/ColumnEditor.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/ColumnsSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/ColumnsSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/GridSettings.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/GridSettings.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/editor.less (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Editor/index.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/__snapshots__/boolean.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/__snapshots__/datetime.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/__snapshots__/image.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/__snapshots__/link.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/__snapshots__/number.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/__snapshots__/text.test.js.snap (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/boolean.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/boolean.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/datetime.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/datetime.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/image.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/image.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/json.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/link.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/link.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/number.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/number.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/text.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/table/columns/text.test.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/getOptions.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/table/renderer.less (100%) rename {client/app => redash-visualizations/src}/visualizations/table/utils.js (100%) rename {client/app => redash-visualizations/src}/visualizations/variables.less (100%) rename {client/app => redash-visualizations/src}/visualizations/visualizationsSettings.js (100%) rename {client/app => redash-visualizations/src}/visualizations/word-cloud/Editor.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/word-cloud/Renderer.jsx (100%) rename {client/app => redash-visualizations/src}/visualizations/word-cloud/index.js (100%) rename {client/app => redash-visualizations/src}/visualizations/word-cloud/renderer.less (100%) diff --git a/client/app/components/QueryLink.jsx b/client/app/components/QueryLink.jsx index 7e2f953f0a..fb6006a63b 100644 --- a/client/app/components/QueryLink.jsx +++ b/client/app/components/QueryLink.jsx @@ -1,6 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; -import { VisualizationType } from "@/visualizations/prop-types"; +import { VisualizationType } from "redash-visualizations/lib"; import VisualizationName from "@/components/visualizations/VisualizationName"; import "./QueryLink.less"; diff --git a/client/app/components/visualizations/EditVisualizationDialog.jsx b/client/app/components/visualizations/EditVisualizationDialog.jsx index 1d712109d1..72150ff31e 100644 --- a/client/app/components/visualizations/EditVisualizationDialog.jsx +++ b/client/app/components/visualizations/EditVisualizationDialog.jsx @@ -10,12 +10,13 @@ import notification from "@/services/notification"; import Visualization from "@/services/visualization"; import recordEvent from "@/services/recordEvent"; import getQueryResultData from "@/lib/getQueryResultData"; -import { VisualizationType } from "@/visualizations/prop-types"; -import { Renderer, Editor } from "@/components/visualizations/visualizationComponents"; -import registeredVisualizations, { +import { + registeredVisualizations, getDefaultVisualization, newVisualization, -} from "@/visualizations/registeredVisualizations"; + VisualizationType, +} from "redash-visualizations/lib"; +import { Renderer, Editor } from "@/components/visualizations/visualizationComponents"; import "./EditVisualizationDialog.less"; diff --git a/client/app/components/visualizations/VisualizationName.jsx b/client/app/components/visualizations/VisualizationName.jsx index 71ba14b835..4db4c46e09 100644 --- a/client/app/components/visualizations/VisualizationName.jsx +++ b/client/app/components/visualizations/VisualizationName.jsx @@ -1,6 +1,5 @@ import React from "react"; -import { VisualizationType } from "@/visualizations/prop-types"; -import registeredVisualizations from "@/visualizations/registeredVisualizations"; +import { VisualizationType, registeredVisualizations } from "redash-visualizations/lib"; import "./VisualizationName.less"; diff --git a/client/app/components/visualizations/VisualizationRenderer.jsx b/client/app/components/visualizations/VisualizationRenderer.jsx index 0a0b812f49..9526c7f880 100644 --- a/client/app/components/visualizations/VisualizationRenderer.jsx +++ b/client/app/components/visualizations/VisualizationRenderer.jsx @@ -4,7 +4,7 @@ import PropTypes from "prop-types"; import getQueryResultData from "@/lib/getQueryResultData"; import { getColumnCleanName } from "@/services/query-result"; import Filters, { FiltersType, filterData } from "@/components/Filters"; -import { VisualizationType } from "@/visualizations/prop-types"; +import { VisualizationType } from "redash-visualizations/lib"; import { Renderer } from "@/components/visualizations/visualizationComponents"; function combineFilters(localFilters, globalFilters) { diff --git a/client/app/components/visualizations/editor/ContextHelp.jsx b/client/app/components/visualizations/editor/ContextHelp.jsx index 91397a6188..addc8ed417 100644 --- a/client/app/components/visualizations/editor/ContextHelp.jsx +++ b/client/app/components/visualizations/editor/ContextHelp.jsx @@ -2,7 +2,7 @@ import React from "react"; import PropTypes from "prop-types"; import Popover from "antd/lib/popover"; import Icon from "antd/lib/icon"; -import { visualizationsSettings } from "@/visualizations/visualizationsSettings"; +import { visualizationsSettings } from "redash-visualizations/lib"; import "./context-help.less"; diff --git a/client/app/components/visualizations/editor/createTabbedEditor.jsx b/client/app/components/visualizations/editor/createTabbedEditor.jsx index 62f767d437..585c20dbdd 100644 --- a/client/app/components/visualizations/editor/createTabbedEditor.jsx +++ b/client/app/components/visualizations/editor/createTabbedEditor.jsx @@ -2,7 +2,7 @@ import { isFunction, map, filter, extend, merge } from "lodash"; import React from "react"; import PropTypes from "prop-types"; import Tabs from "antd/lib/tabs"; -import { EditorPropTypes } from "@/visualizations/prop-types"; +import { EditorPropTypes } from "redash-visualizations/lib"; export const UpdateOptionsStrategy = { replace: (existingOptions, newOptions) => merge({}, newOptions), diff --git a/client/app/components/visualizations/visualizationComponents.jsx b/client/app/components/visualizations/visualizationComponents.jsx index f6c8330781..13c2e60dd5 100644 --- a/client/app/components/visualizations/visualizationComponents.jsx +++ b/client/app/components/visualizations/visualizationComponents.jsx @@ -1,12 +1,11 @@ import React from "react"; import { pick } from "lodash"; import HelpTrigger from "@/components/HelpTrigger"; -import { Renderer as VisRenderer, Editor as VisEditor } from "@/visualizations"; -import { updateVisualizationsSettings } from "@/visualizations/visualizationsSettings"; +import { Renderer as VisRenderer, Editor as VisEditor, updateVisualizationsSettings } from "redash-visualizations/lib"; import { clientConfig } from "@/services/auth"; -import countriesDataUrl from "@/visualizations/choropleth/maps/countries.geo.json"; -import subdivJapanDataUrl from "@/visualizations/choropleth/maps/japan.prefectures.geo.json"; +import countriesDataUrl from "redash-visualizations/lib/visualizations/choropleth/maps/countries.geo.json"; +import subdivJapanDataUrl from "redash-visualizations/lib/visualizations/choropleth/maps/japan.prefectures.geo.json"; function wrapComponentWithSettings(WrappedComponent) { return function VisualizationComponent(props) { diff --git a/client/app/config/index.js b/client/app/config/index.js index 285b43b8de..6b9d4c506c 100644 --- a/client/app/config/index.js +++ b/client/app/config/index.js @@ -7,7 +7,7 @@ import url from "@/services/url"; import "@/assets/images/avatar.svg"; // Register visualizations -import "@/visualizations"; +import "redash-visualizations/lib"; import "./antd-spinner"; diff --git a/client/app/pages/queries/VisualizationEmbed.jsx b/client/app/pages/queries/VisualizationEmbed.jsx index cb0e0911e8..da5b3f351d 100644 --- a/client/app/pages/queries/VisualizationEmbed.jsx +++ b/client/app/pages/queries/VisualizationEmbed.jsx @@ -20,7 +20,7 @@ import Timer from "@/components/Timer"; import QueryResultsLink from "@/components/EditVisualizationButton/QueryResultsLink"; import VisualizationName from "@/components/visualizations/VisualizationName"; import VisualizationRenderer from "@/components/visualizations/VisualizationRenderer"; -import { VisualizationType } from "@/visualizations/prop-types"; +import { VisualizationType } from "redash-visualizations/lib"; import logoUrl from "@/assets/images/redash_icon_small.png"; function VisualizationEmbedHeader({ queryName, queryDescription, visualization }) { diff --git a/client/app/services/widget.js b/client/app/services/widget.js index dfc9ed2efe..0e8690a984 100644 --- a/client/app/services/widget.js +++ b/client/app/services/widget.js @@ -4,7 +4,7 @@ import { each, pick, extend, isObject, truncate, keys, difference, filter, map, import location from "@/services/location"; import { cloneParameter } from "@/services/parameters"; import dashboardGridOptions from "@/config/dashboard-grid-options"; -import registeredVisualizations from "@/visualizations/registeredVisualizations"; +import { registeredVisualizations } from "redash-visualizations/lib"; import { Query } from "./query"; export const WidgetTypeEnum = { diff --git a/package-lock.json b/package-lock.json index d9721873df..3cff3f1c81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13933,6 +13933,71 @@ "util.promisify": "^1.0.0" } }, + "redash-visualizations": { + "version": "file:redash-visualizations", + "requires": { + "axios": "^0.19.2", + "beautifymarker": "^1.0.7", + "chroma-js": "^1.3.6", + "classnames": "^2.2.6", + "d3": "^3.5.17", + "d3-cloud": "^1.2.4", + "debug": "^3.1.0", + "dompurify": "^2.0.7", + "font-awesome": "^4.7.0", + "hoist-non-react-statics": "^3.3.0", + "leaflet": "^1.2.0", + "leaflet-fullscreen": "^1.0.2", + "leaflet.markercluster": "^1.1.0", + "lodash": "^4.17.10", + "moment": "^2.19.3", + "numeral": "^2.0.6", + "plotly.js": "1.52.3", + "react-pivottable": "^0.9.0", + "react-sortable-hoc": "^1.10.1", + "tinycolor2": "^1.4.1", + "use-debounce": "^3.4.1", + "use-media": "^1.4.0" + }, + "dependencies": { + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "use-debounce": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-3.4.2.tgz", + "integrity": "sha512-rW44wZaFPh3XiwUzGBA0JRuklpbfKO/szU/5CYD2Q/erLmCem63lJ650p3a+NJE6S+g0rulKtBOfa/3rw/GN+Q==" + } + } + }, "redeyed": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", diff --git a/package.json b/package.json index 82e3fbd0fb..8301e44fe4 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "react-resizable": "^1.10.1", "react-sortable-hoc": "^1.10.1", "react-virtualized": "^9.21.2", + "redash-visualizations": "file:redash-visualizations", "tinycolor2": "^1.4.1", "universal-router": "^8.3.0", "use-debounce": "^3.1.0", diff --git a/redash-visualizations/.babelrc b/redash-visualizations/.babelrc new file mode 100644 index 0000000000..49ae3baaac --- /dev/null +++ b/redash-visualizations/.babelrc @@ -0,0 +1,15 @@ +{ + "presets": ["@babel/preset-env", "@babel/preset-react"], + "plugins": [ + "@babel/plugin-proposal-class-properties", + [ + "module-resolver", + { + "root": ["./src"], + "alias": { + "@": "./src" + } + } + ] + ] +} diff --git a/redash-visualizations/.gitignore b/redash-visualizations/.gitignore new file mode 100644 index 0000000000..64fcced46b --- /dev/null +++ b/redash-visualizations/.gitignore @@ -0,0 +1,20 @@ +# dependencies +node_modules + +# builds +/build +/dist +/lib +.rpt2_cache + +# misc +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* \ No newline at end of file diff --git a/redash-visualizations/src/components/ColorPicker/Input.jsx b/redash-visualizations/src/components/ColorPicker/Input.jsx new file mode 100644 index 0000000000..47b89fd6ad --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/Input.jsx @@ -0,0 +1,94 @@ +import { isNil, isArray, chunk, map, filter, toPairs } from "lodash"; +import React, { useState, useEffect } from "react"; +import PropTypes from "prop-types"; +import tinycolor from "tinycolor2"; +import TextInput from "antd/lib/input"; +import Typography from "antd/lib/typography"; +import Swatch from "./Swatch"; + +import "./input.less"; + +function preparePresets(presetColors, presetColumns) { + presetColors = isArray(presetColors) ? map(presetColors, v => [null, v]) : toPairs(presetColors); + presetColors = map(presetColors, ([title, value]) => { + if (isNil(value)) { + return [title, null]; + } + value = tinycolor(value); + if (value.isValid()) { + return [title, "#" + value.toHex().toUpperCase()]; + } + return null; + }); + return chunk(filter(presetColors), presetColumns); +} + +function validateColor(value, callback, prefix = "#") { + if (isNil(value)) { + callback(null); + } + value = tinycolor(value); + if (value.isValid()) { + callback(prefix + value.toHex().toUpperCase()); + } +} + +export default function Input({ color, presetColors, presetColumns, onChange, onPressEnter }) { + const [inputValue, setInputValue] = useState(""); + const [isInputFocused, setIsInputFocused] = useState(false); + + const presets = preparePresets(presetColors, presetColumns); + + function handleInputChange(value) { + setInputValue(value); + validateColor(value, onChange); + } + + useEffect(() => { + if (!isInputFocused) { + validateColor(color, setInputValue, ""); + } + }, [color, isInputFocused]); + + return ( + + {map(presets, (group, index) => ( +
+ {map(group, ([title, value]) => ( + validateColor(value, onChange)} /> + ))} +
+ ))} +
+ #} + value={inputValue} + onChange={e => handleInputChange(e.target.value)} + onFocus={() => setIsInputFocused(true)} + onBlur={() => setIsInputFocused(false)} + onPressEnter={onPressEnter} + /> +
+
+ ); +} + +Input.propTypes = { + color: PropTypes.string, + presetColors: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string), // array of colors (no tooltips) + PropTypes.objectOf(PropTypes.string), // color name => color value + ]), + presetColumns: PropTypes.number, + onChange: PropTypes.func, + onPressEnter: PropTypes.func, +}; + +Input.defaultProps = { + color: "#FFFFFF", + presetColors: null, + presetColumns: 8, + onChange: () => {}, + onPressEnter: () => {}, +}; diff --git a/redash-visualizations/src/components/ColorPicker/Label.jsx b/redash-visualizations/src/components/ColorPicker/Label.jsx new file mode 100644 index 0000000000..1cd8a4decf --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/Label.jsx @@ -0,0 +1,31 @@ +import React, { useMemo } from "react"; +import PropTypes from "prop-types"; +import cx from "classnames"; + +import { validateColor, getColorName } from "./utils"; +import "./label.less"; + +export default function Label({ className, color, presetColors, ...props }) { + const name = useMemo(() => getColorName(validateColor(color), presetColors), [color, presetColors]); + + return ( + + {name} + + ); +} + +Label.propTypes = { + className: PropTypes.string, + color: PropTypes.string, + presetColors: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string), // array of colors (no tooltips) + PropTypes.objectOf(PropTypes.string), // color name => color value + ]), +}; + +Label.defaultProps = { + className: null, + color: "#FFFFFF", + presetColors: null, +}; diff --git a/redash-visualizations/src/components/ColorPicker/Swatch.jsx b/redash-visualizations/src/components/ColorPicker/Swatch.jsx new file mode 100644 index 0000000000..0be5571f6f --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/Swatch.jsx @@ -0,0 +1,42 @@ +import { isString } from "lodash"; +import React from "react"; +import PropTypes from "prop-types"; +import cx from "classnames"; +import Tooltip from "antd/lib/tooltip"; + +import "./swatch.less"; + +export default function Swatch({ className, color, title, size, style, ...props }) { + const result = ( + + ); + + if (isString(title) && title !== "") { + return ( + + {result} + + ); + } + return result; +} + +Swatch.propTypes = { + className: PropTypes.string, + style: PropTypes.object, + title: PropTypes.string, + color: PropTypes.string, + size: PropTypes.number, +}; + +Swatch.defaultProps = { + className: null, + style: null, + title: null, + color: "transparent", + size: 12, +}; diff --git a/redash-visualizations/src/components/ColorPicker/index.jsx b/redash-visualizations/src/components/ColorPicker/index.jsx new file mode 100644 index 0000000000..605423bee2 --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/index.jsx @@ -0,0 +1,161 @@ +import { toString } from "lodash"; +import React, { useState, useEffect, useMemo } from "react"; +import PropTypes from "prop-types"; +import cx from "classnames"; +import Popover from "antd/lib/popover"; +import Card from "antd/lib/card"; +import Tooltip from "antd/lib/tooltip"; +import Icon from "antd/lib/icon"; +import chooseTextColorForBackground from "@/lib/chooseTextColorForBackground"; + +import ColorInput from "./Input"; +import Swatch from "./Swatch"; +import Label from "./Label"; +import { validateColor } from "./utils"; + +import "./index.less"; + +export default function ColorPicker({ + color, + placement, + presetColors, + presetColumns, + interactive, + children, + onChange, + triggerProps, + addonBefore, + addonAfter, +}) { + const [visible, setVisible] = useState(false); + const validatedColor = useMemo(() => validateColor(color), [color]); + const [currentColor, setCurrentColor] = useState(""); + + function handleApply() { + setVisible(false); + if (!interactive) { + onChange(currentColor); + } + } + + function handleCancel() { + setVisible(false); + } + + const actions = []; + if (!interactive) { + actions.push( + + + + ); + actions.push( + + + + ); + } + + function handleInputChange(newColor) { + setCurrentColor(newColor); + if (interactive) { + onChange(newColor); + } + } + + useEffect(() => { + if (visible) { + setCurrentColor(validatedColor); + } + }, [validatedColor, visible]); + + return ( + + {addonBefore} + + + + } + trigger="click" + placement={placement} + visible={visible} + onVisibleChange={setVisible}> + {children || ( + + )} + + {addonAfter} + + ); +} + +ColorPicker.propTypes = { + color: PropTypes.string, + placement: PropTypes.oneOf([ + "top", + "left", + "right", + "bottom", + "topLeft", + "topRight", + "bottomLeft", + "bottomRight", + "leftTop", + "leftBottom", + "rightTop", + "rightBottom", + ]), + presetColors: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string), // array of colors (no tooltips) + PropTypes.objectOf(PropTypes.string), // color name => color value + ]), + presetColumns: PropTypes.number, + interactive: PropTypes.bool, + triggerProps: PropTypes.object, // eslint-disable-line react/forbid-prop-types + children: PropTypes.node, + addonBefore: PropTypes.node, + addonAfter: PropTypes.node, + onChange: PropTypes.func, +}; + +ColorPicker.defaultProps = { + color: "#FFFFFF", + placement: "top", + presetColors: null, + presetColumns: 8, + interactive: false, + triggerProps: {}, + children: null, + addonBefore: null, + addonAfter: null, + onChange: () => {}, +}; + +ColorPicker.Input = ColorInput; +ColorPicker.Swatch = Swatch; +ColorPicker.Label = Label; diff --git a/redash-visualizations/src/components/ColorPicker/index.less b/redash-visualizations/src/components/ColorPicker/index.less new file mode 100644 index 0000000000..bd6857990b --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/index.less @@ -0,0 +1,44 @@ +.color-picker { + &.color-picker-with-actions { + &.ant-popover-placement-top, + &.ant-popover-placement-topLeft, + &.ant-popover-placement-topRight, + &.ant-popover-placement-leftBottom, + &.ant-popover-placement-rightBottom { + > .ant-popover-content > .ant-popover-arrow { + border-color: #fafafa; // same as card actions + } + } + } + + &.ant-popover-placement-bottom, + &.ant-popover-placement-bottomLeft, + &.ant-popover-placement-bottomRight, + &.ant-popover-placement-leftTop, + &.ant-popover-placement-rightTop { + > .ant-popover-content > .ant-popover-arrow { + border-color: var(--color-picker-selected-color); + } + } + + .ant-popover-inner-content { + padding: 0; + } + + .ant-card-head { + text-align: center; + border-bottom-color: rgba(0, 0, 0, 0.1); + } + + .ant-card-body { + padding: 10px; + } +} + +.color-picker-trigger { + cursor: pointer; +} + +.color-picker-wrapper { + white-space: nowrap; +} diff --git a/redash-visualizations/src/components/ColorPicker/input.less b/redash-visualizations/src/components/ColorPicker/input.less new file mode 100644 index 0000000000..56f9d7ec58 --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/input.less @@ -0,0 +1,19 @@ +.color-picker-input-swatches { + margin: 0 0 10px 0; + text-align: left; + white-space: nowrap; + + .color-swatch { + cursor: pointer; + margin: 0 10px 0 0; + + &:last-child { + margin-right: 0; + } + } +} + +.color-picker-input { + text-align: left; + white-space: nowrap; +} diff --git a/redash-visualizations/src/components/ColorPicker/label.less b/redash-visualizations/src/components/ColorPicker/label.less new file mode 100644 index 0000000000..e8aa009f30 --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/label.less @@ -0,0 +1,7 @@ +.color-label { + vertical-align: middle; + + .color-swatch + & { + margin-left: 7px; + } +} diff --git a/redash-visualizations/src/components/ColorPicker/swatch.less b/redash-visualizations/src/components/ColorPicker/swatch.less new file mode 100644 index 0000000000..4dea312c44 --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/swatch.less @@ -0,0 +1,30 @@ +.color-swatch { + display: inline-block; + box-sizing: border-box; + vertical-align: middle; + border-radius: 2px; + overflow: hidden; + width: 12px; + + @cell-size: 12px; + @cell-color: rgba(0, 0, 0, 0.1); + + background-color: transparent; + background-image: + linear-gradient(45deg, @cell-color 25%, transparent 25%), + linear-gradient(-45deg, @cell-color 25%, transparent 25%), + linear-gradient(45deg, transparent 75%, @cell-color 75%), + linear-gradient(-45deg, transparent 75%, @cell-color 75%); + background-size: @cell-size @cell-size; + background-position: 0 0, 0 @cell-size/2, @cell-size/2 -@cell-size/2, -@cell-size/2 0px; + + &:before { + content: ""; + display: block; + padding-top: ~"calc(100% - 2px)"; + background-color: inherit; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 2px; + overflow: hidden; + } +} diff --git a/redash-visualizations/src/components/ColorPicker/utils.js b/redash-visualizations/src/components/ColorPicker/utils.js new file mode 100644 index 0000000000..1af3670437 --- /dev/null +++ b/redash-visualizations/src/components/ColorPicker/utils.js @@ -0,0 +1,14 @@ +import { isArray, findKey } from "lodash"; +import tinycolor from "tinycolor2"; + +export function validateColor(value, fallback = null) { + value = tinycolor(value); + return value.isValid() ? "#" + value.toHex().toUpperCase() : fallback; +} + +export function getColorName(color, presetColors) { + if (isArray(presetColors)) { + return color; + } + return findKey(presetColors, v => validateColor(v) === color) || color; +} diff --git a/redash-visualizations/src/components/ErrorBoundary.jsx b/redash-visualizations/src/components/ErrorBoundary.jsx new file mode 100644 index 0000000000..78e354efab --- /dev/null +++ b/redash-visualizations/src/components/ErrorBoundary.jsx @@ -0,0 +1,74 @@ +import { isFunction } from "lodash"; +import React from "react"; +import PropTypes from "prop-types"; +import debug from "debug"; +import Alert from "antd/lib/alert"; + +const logger = debug("redash:errors"); + +export const ErrorBoundaryContext = React.createContext({ + handleError: error => { + // Allow calling chain to roll up, and then throw the error in global context + setTimeout(() => { + throw error; + }); + }, + reset: () => {}, +}); + +export function ErrorMessage({ children }) { + return ; +} + +ErrorMessage.propTypes = { + children: PropTypes.node, +}; + +ErrorMessage.defaultProps = { + children: "Something went wrong.", +}; + +export default class ErrorBoundary extends React.Component { + static propTypes = { + children: PropTypes.node, + renderError: PropTypes.func, // error => ReactNode + }; + + static defaultProps = { + children: null, + renderError: null, + }; + + state = { error: null }; + + handleError = error => { + this.setState(this.constructor.getDerivedStateFromError(error)); + this.componentDidCatch(error, null); + }; + + reset = () => { + this.setState({ error: null }); + }; + + static getDerivedStateFromError(error) { + return { error }; + } + + componentDidCatch(error, errorInfo) { + logger(error, errorInfo); + } + + render() { + const { renderError, children } = this.props; + const { error } = this.state; + + if (error) { + if (isFunction(renderError)) { + return renderError(error); + } + return ; + } + + return {children}; + } +} diff --git a/redash-visualizations/src/components/HtmlContent.jsx b/redash-visualizations/src/components/HtmlContent.jsx new file mode 100644 index 0000000000..d92082fedb --- /dev/null +++ b/redash-visualizations/src/components/HtmlContent.jsx @@ -0,0 +1,22 @@ +import React from "react"; +import PropTypes from "prop-types"; +import sanitize from "@/services/sanitize"; + +const HtmlContent = React.memo(function HtmlContent({ children, ...props }) { + return ( +
+ ); +}); + +HtmlContent.propTypes = { + children: PropTypes.string, +}; + +HtmlContent.defaultProps = { + children: "", +}; + +export default HtmlContent; diff --git a/redash-visualizations/src/components/TextAlignmentSelect/index.jsx b/redash-visualizations/src/components/TextAlignmentSelect/index.jsx new file mode 100644 index 0000000000..90c86a77d3 --- /dev/null +++ b/redash-visualizations/src/components/TextAlignmentSelect/index.jsx @@ -0,0 +1,42 @@ +import { pickBy, startsWith } from "lodash"; +import React from "react"; +import PropTypes from "prop-types"; +import cx from "classnames"; +import Radio from "antd/lib/radio"; +import Icon from "antd/lib/icon"; +import Tooltip from "antd/lib/tooltip"; + +import "./index.less"; + +export default function TextAlignmentSelect({ className, ...props }) { + return ( + // Antd RadioGroup does not use any custom attributes +
startsWith(k, "data-"))}> + + + + + + + + + + + + + + + + + +
+ ); +} + +TextAlignmentSelect.propTypes = { + className: PropTypes.string, +}; + +TextAlignmentSelect.defaultProps = { + className: null, +}; diff --git a/redash-visualizations/src/components/TextAlignmentSelect/index.less b/redash-visualizations/src/components/TextAlignmentSelect/index.less new file mode 100644 index 0000000000..6cfcb76ac1 --- /dev/null +++ b/redash-visualizations/src/components/TextAlignmentSelect/index.less @@ -0,0 +1,13 @@ +.ant-radio-group.text-alignment-select { + display: flex; + align-items: stretch; + justify-content: stretch; + + .ant-radio-button-wrapper { + flex-grow: 1; + text-align: center; + // fit height + height: 35px; + line-height: 33px; + } +} diff --git a/redash-visualizations/src/components/json-view-interactive/JsonViewInteractive.jsx b/redash-visualizations/src/components/json-view-interactive/JsonViewInteractive.jsx new file mode 100644 index 0000000000..7c967e786d --- /dev/null +++ b/redash-visualizations/src/components/json-view-interactive/JsonViewInteractive.jsx @@ -0,0 +1,110 @@ +/* eslint-disable react/prop-types */ + +import { isFinite, isString, isArray, isObject, keys, map } from "lodash"; +import React, { useState } from "react"; +import cx from "classnames"; +import PropTypes from "prop-types"; + +import "./json-view-interactive.less"; + +function JsonBlock({ value, children, openingBrace, closingBrace, withKeys }) { + const [isExpanded, setIsExpanded] = useState(false); + + const objectKeys = keys(value); + const count = objectKeys.length; + + return ( + + {count > 0 && ( + setIsExpanded(!isExpanded)}> + + + )} + {openingBrace} + {!isExpanded && count > 0 && ( + setIsExpanded(true)}> + … + + )} + {isExpanded && ( + + {map(objectKeys, (key, index) => { + const isFirst = index === 0; + const isLast = index === count - 1; + const comma = isLast ? null : ,; + return ( + + {withKeys && ( + + + : + + + )} + {comma} + + ); + })} + + )} + {closingBrace} + {children} + {!isExpanded && {" // " + count + " " + (count === 1 ? "item" : "items")}} + + ); +} + +function JsonValue({ value, children }) { + if (value === null || value === false || value === true || isFinite(value)) { + return ( + + {"" + value} + {children} + + ); + } + if (isString(value)) { + return ( + + " + {value} + " + {children} + + ); + } + if (isArray(value)) { + return ( + + {children} + + ); + } + if (isObject(value)) { + return ( + + {children} + + ); + } + return null; +} + +export default function JsonViewInteractive({ value }) { + return ( + + + + ); +} + +JsonViewInteractive.propTypes = { + value: PropTypes.any, // eslint-disable-line react/forbid-prop-types +}; + +JsonViewInteractive.defaultProps = { + // `null` will be rendered as "null" because it is a valid JSON value, so use `undefined` for no value + value: undefined, +}; diff --git a/redash-visualizations/src/components/json-view-interactive/json-view-interactive.less b/redash-visualizations/src/components/json-view-interactive/json-view-interactive.less new file mode 100644 index 0000000000..fdffcb87a2 --- /dev/null +++ b/redash-visualizations/src/components/json-view-interactive/json-view-interactive.less @@ -0,0 +1,112 @@ +@import "../../visualizations/variables"; + +@jvi-gutter: 20px; +@jvi-spacing: 2px; + +.jvi-root { + display: block; + font-family: @font-family-monospace; +} + +.jvi-block { + display: block; + border-left: 1px dotted @table-border-color; + margin: 0 0 0 2px; +} + +.jvi-item { + display: block; + position: relative; + padding: 0 0 0 @jvi-gutter; + white-space: nowrap; + + .jvi-item { + margin: @jvi-spacing 0; + } + + &.jvi-nested-last > span > .jvi-punctuation.jvi-comma { + display: none; + } +} + +.jvi-toggle { + position: absolute; + left: 0; + top: 0; + width: @jvi-gutter; + height: @jvi-gutter; + line-height: @jvi-gutter; + text-align: center; + cursor: pointer; + z-index: 1; + color: @text-color; + opacity: 0.5; + + &:hover { + opacity: 0.8; + } + + i { + vertical-align: middle; + } + + &.hidden { + display: none; + } +} + +.jvi-punctuation { + color: @text-color; + + &.jvi-string { + color: @green; + } + + &.jvi-braces { + margin: 0 @jvi-spacing; + } + + &.jvi-ellipsis { + padding: 0 @jvi-spacing; + cursor: pointer; + + &:hover { + text-decoration: underline; + } + } + + &.hidden { + display: none; + } +} + +.jvi-value { + color: @green; + + &.jvi-primitive { + color: @orange; + } + + &.jvi-string { + white-space: normal; + } +} + +.jvi-object-key { + .jvi-value, + .jvi-punctuation { + color: @blue; + } +} + +.jvi-comment { + color: @text-muted; + font-family: @visualizations-font; + font-style: italic; + margin: 0 0 0 2 * @jvi-spacing; + opacity: 0.5; + + &.hidden { + display: none; + } +} diff --git a/redash-visualizations/src/components/sortable/index.jsx b/redash-visualizations/src/components/sortable/index.jsx new file mode 100644 index 0000000000..c53c28ab53 --- /dev/null +++ b/redash-visualizations/src/components/sortable/index.jsx @@ -0,0 +1,80 @@ +import { isFunction, wrap } from "lodash"; +import React, { useRef, useState } from "react"; +import PropTypes from "prop-types"; +import cx from "classnames"; +import { sortableContainer, sortableElement, sortableHandle } from "react-sortable-hoc"; + +import "./style.less"; + +export const DragHandle = sortableHandle(({ className, ...restProps }) => ( +
+)); + +export const SortableContainerWrapper = sortableContainer(({ children }) => children); + +export const SortableElement = sortableElement(({ children }) => children); + +export function SortableContainer({ disabled, containerComponent, containerProps, children, ...wrapperProps }) { + const containerRef = useRef(); + const [isDragging, setIsDragging] = useState(false); + + wrapperProps = { ...wrapperProps }; + containerProps = { ...containerProps }; + + if (disabled) { + // Disabled state: + // - forbid drag'n'drop (and therefore no need to hook events + // - don't override anything on container element + wrapperProps.shouldCancelStart = () => true; + } else { + // Enabled state: + + // - use container element as a default helper element + wrapperProps.helperContainer = wrap(wrapperProps.helperContainer, helperContainer => + isFunction(helperContainer) ? helperContainer(containerRef.current) : containerRef.current + ); + + // - hook drag start/end events + wrapperProps.updateBeforeSortStart = wrap(wrapperProps.updateBeforeSortStart, (updateBeforeSortStart, ...args) => { + setIsDragging(true); + if (isFunction(updateBeforeSortStart)) { + updateBeforeSortStart(...args); + } + }); + wrapperProps.onSortEnd = wrap(wrapperProps.onSortEnd, (onSortEnd, ...args) => { + setIsDragging(false); + if (isFunction(onSortEnd)) { + onSortEnd(...args); + } + }); + + // - update container element: add classes and take a ref + containerProps.className = cx( + "sortable-container", + { "sortable-container-dragging": isDragging }, + containerProps.className + ); + containerProps.ref = containerRef; + } + + const ContainerComponent = containerComponent; + return ( + + {children} + + ); +} + +SortableContainer.propTypes = { + disabled: PropTypes.bool, + containerComponent: PropTypes.elementType, + containerProps: PropTypes.object, // eslint-disable-line react/forbid-prop-types + children: PropTypes.node, +}; + +SortableContainer.defaultProps = { + disabled: false, + containerComponent: "div", + containerProps: {}, + children: null, +}; diff --git a/redash-visualizations/src/components/sortable/style.less b/redash-visualizations/src/components/sortable/style.less new file mode 100644 index 0000000000..1277df8e9b --- /dev/null +++ b/redash-visualizations/src/components/sortable/style.less @@ -0,0 +1,30 @@ +.drag-handle { + vertical-align: bottom; + cursor: move; + + display: inline-flex; + align-items: stretch; + justify-content: center; + + &:before { + content: ''; + display: block; + width: 6px; + + background: + linear-gradient(90deg, transparent 0px, white 1px, white 2px) center, + linear-gradient(transparent 0px, white 1px, white 2px) center, + #111111; + background-size: 2px 2px; + } +} + +.sortable-container { + transition: background-color 200ms ease-out; + transition-delay: 300ms; // short pause before returning to original bgcolor + + &.sortable-container-dragging { + transition-delay: 0s; + background-color: #f6f8f9; + } +} diff --git a/redash-visualizations/src/components/visualizations/editor/ContextHelp.jsx b/redash-visualizations/src/components/visualizations/editor/ContextHelp.jsx new file mode 100644 index 0000000000..91397a6188 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/ContextHelp.jsx @@ -0,0 +1,54 @@ +import React from "react"; +import PropTypes from "prop-types"; +import Popover from "antd/lib/popover"; +import Icon from "antd/lib/icon"; +import { visualizationsSettings } from "@/visualizations/visualizationsSettings"; + +import "./context-help.less"; + +export default function ContextHelp({ icon, children, ...props }) { + return ( + + {icon || ContextHelp.defaultIcon} + + ); +} + +ContextHelp.propTypes = { + icon: PropTypes.node, + children: PropTypes.node, +}; + +ContextHelp.defaultProps = { + icon: null, + children: null, +}; + +ContextHelp.defaultIcon = ; + +function NumberFormatSpecs() { + const { HelpTriggerComponent } = visualizationsSettings; + return ( + + {ContextHelp.defaultIcon} + + ); +} + +function DateTimeFormatSpecs() { + const { HelpTriggerComponent } = visualizationsSettings; + return ( + + {ContextHelp.defaultIcon} + + ); +} + +ContextHelp.NumberFormatSpecs = NumberFormatSpecs; +ContextHelp.DateTimeFormatSpecs = DateTimeFormatSpecs; diff --git a/redash-visualizations/src/components/visualizations/editor/Section.jsx b/redash-visualizations/src/components/visualizations/editor/Section.jsx new file mode 100644 index 0000000000..f8ecc19197 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/Section.jsx @@ -0,0 +1,47 @@ +import React from "react"; +import PropTypes from "prop-types"; +import cx from "classnames"; + +import "./Section.less"; + +function SectionTitle({ className, children, ...props }) { + if (!children) { + return null; + } + + return ( +

+ {children} +

+ ); +} + +SectionTitle.propTypes = { + className: PropTypes.string, + children: PropTypes.node, +}; + +SectionTitle.defaultProps = { + className: null, + children: null, +}; + +export default function Section({ className, children, ...props }) { + return ( +
+ {children} +
+ ); +} + +Section.propTypes = { + className: PropTypes.string, + children: PropTypes.node, +}; + +Section.defaultProps = { + className: null, + children: null, +}; + +Section.Title = SectionTitle; diff --git a/redash-visualizations/src/components/visualizations/editor/Section.less b/redash-visualizations/src/components/visualizations/editor/Section.less new file mode 100644 index 0000000000..7299a10ef1 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/Section.less @@ -0,0 +1,8 @@ +.visualization-editor-section-title { + margin-top: 0px; + margin-bottom: 15px; +} + +.visualization-editor-section { + margin-bottom: 15px; +} diff --git a/redash-visualizations/src/components/visualizations/editor/Switch.jsx b/redash-visualizations/src/components/visualizations/editor/Switch.jsx new file mode 100644 index 0000000000..0949d66721 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/Switch.jsx @@ -0,0 +1,42 @@ +import React, { useMemo } from "react"; +import PropTypes from "prop-types"; +import AntSwitch from "antd/lib/switch"; +import Typography from "antd/lib/typography"; + +import "./Switch.less"; + +export default function Switch({ id, children, disabled, ...props }) { + const fallbackId = useMemo( + () => + `visualization-editor-control-${Math.random() + .toString(36) + .substr(2, 10)}`, + [] + ); + id = id || fallbackId; + + if (children) { + return ( + + ); + } + + return ; +} + +Switch.propTypes = { + id: PropTypes.string, + disabled: PropTypes.bool, + children: PropTypes.node, +}; + +Switch.defaultProps = { + id: null, + disabled: false, + children: null, +}; diff --git a/redash-visualizations/src/components/visualizations/editor/Switch.less b/redash-visualizations/src/components/visualizations/editor/Switch.less new file mode 100644 index 0000000000..fa83765743 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/Switch.less @@ -0,0 +1,8 @@ +.switch-with-label { + display: flex; + align-items: center; + + .switch-text { + margin-left: 10px; + } +} diff --git a/redash-visualizations/src/components/visualizations/editor/TextArea.jsx b/redash-visualizations/src/components/visualizations/editor/TextArea.jsx new file mode 100644 index 0000000000..855096dc0a --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/TextArea.jsx @@ -0,0 +1,12 @@ +import React from "react"; +import cx from "classnames"; +import AntInput from "antd/lib/input"; +import withControlLabel from "./withControlLabel"; + +import "./TextArea.less"; + +function TextArea({ className, ...otherProps }) { + return ; +} + +export default withControlLabel(TextArea); diff --git a/redash-visualizations/src/components/visualizations/editor/TextArea.less b/redash-visualizations/src/components/visualizations/editor/TextArea.less new file mode 100644 index 0000000000..79bce33b51 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/TextArea.less @@ -0,0 +1,3 @@ +.visualization-editor-text-area { + resize: vertical; +} diff --git a/redash-visualizations/src/components/visualizations/editor/context-help.less b/redash-visualizations/src/components/visualizations/editor/context-help.less new file mode 100644 index 0000000000..fc00e8fe80 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/context-help.less @@ -0,0 +1,17 @@ +a.visualization-editor-context-help { + &, + .ant-typography & { + font: inherit; + color: inherit; + + &:hover, + &:active { + color: #0a6ebd; + } + } +} + +.context-help-default-icon { + margin-left: 5px; + margin-right: 5px; +} diff --git a/redash-visualizations/src/components/visualizations/editor/control-label.less b/redash-visualizations/src/components/visualizations/editor/control-label.less new file mode 100644 index 0000000000..6ea8c80e8c --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/control-label.less @@ -0,0 +1,11 @@ +.visualization-editor-control-label { + &.visualization-editor-control-label-horizontal { + label { + margin-bottom: 0; + } + } +} + +.visualization-editor-input { + width: 100% !important; +} diff --git a/redash-visualizations/src/components/visualizations/editor/createTabbedEditor.jsx b/redash-visualizations/src/components/visualizations/editor/createTabbedEditor.jsx new file mode 100644 index 0000000000..e4edef469f --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/createTabbedEditor.jsx @@ -0,0 +1,51 @@ +import { isFunction, map, filter, extend, merge } from "lodash"; +import React from "react"; +import PropTypes from "prop-types"; +import Tabs from "antd/lib/tabs"; +import { EditorPropTypes } from "@/visualizations/prop-types"; + +export const UpdateOptionsStrategy = { + replace: (existingOptions, newOptions) => merge({}, newOptions), + shallowMerge: (existingOptions, newOptions) => extend({}, existingOptions, newOptions), + deepMerge: (existingOptions, newOptions) => merge({}, existingOptions, newOptions), +}; + +export function TabbedEditor({ tabs, options, data, onOptionsChange, ...restProps }) { + const optionsChanged = (newOptions, updateStrategy = UpdateOptionsStrategy.deepMerge) => { + onOptionsChange(updateStrategy(options, newOptions)); + }; + + tabs = filter(tabs, (tab) => (isFunction(tab.isAvailable) ? tab.isAvailable(options, data) : true)); + + return ( + + {map(tabs, ({ key, title, component: Component }) => ( + {title}}> + + + ))} + + ); +} + +TabbedEditor.propTypes = { + ...EditorPropTypes, + tabs: PropTypes.arrayOf( + PropTypes.shape({ + key: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + isAvailable: PropTypes.func, // (options) => boolean + component: PropTypes.func.isRequired, + }) + ), +}; + +TabbedEditor.defaultProps = { + tabs: [], +}; + +export default function createTabbedEditor(tabs) { + return function TabbedEditorWrapper(props) { + return ; + }; +} diff --git a/redash-visualizations/src/components/visualizations/editor/index.js b/redash-visualizations/src/components/visualizations/editor/index.js new file mode 100644 index 0000000000..27c505759d --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/index.js @@ -0,0 +1,21 @@ +import AntSelect from "antd/lib/select"; +import AntInput from "antd/lib/input"; +import AntInputNumber from "antd/lib/input-number"; +import Checkbox from "antd/lib/checkbox"; + +import RedashColorPicker from "@/components/ColorPicker"; +import RedashTextAlignmentSelect from "@/components/TextAlignmentSelect"; + +import withControlLabel, { ControlLabel } from "./withControlLabel"; +import createTabbedEditor from "./createTabbedEditor"; +import Section from "./Section"; +import Switch from "./Switch"; +import TextArea from "./TextArea"; +import ContextHelp from "./ContextHelp"; + +export { Section, ControlLabel, Checkbox, Switch, TextArea, ContextHelp, withControlLabel, createTabbedEditor }; +export const Select = withControlLabel(AntSelect); +export const Input = withControlLabel(AntInput); +export const InputNumber = withControlLabel(AntInputNumber); +export const ColorPicker = withControlLabel(RedashColorPicker); +export const TextAlignmentSelect = withControlLabel(RedashTextAlignmentSelect); diff --git a/redash-visualizations/src/components/visualizations/editor/withControlLabel.jsx b/redash-visualizations/src/components/visualizations/editor/withControlLabel.jsx new file mode 100644 index 0000000000..a28f2bc255 --- /dev/null +++ b/redash-visualizations/src/components/visualizations/editor/withControlLabel.jsx @@ -0,0 +1,88 @@ +import React, { useMemo } from "react"; +import cx from "classnames"; +import PropTypes from "prop-types"; +import hoistNonReactStatics from "hoist-non-react-statics"; +import * as Grid from "antd/lib/grid"; +import Typography from "antd/lib/typography"; + +import "./control-label.less"; + +export function ControlLabel({ layout, label, labelProps, disabled, children }) { + if (layout === "vertical" && label) { + return ( +
+ + {children} +
+ ); + } + + if (layout === "horizontal" && label) { + return ( + + + + + {children} + + ); + } + + return children; +} + +ControlLabel.propTypes = { + layout: PropTypes.oneOf(["vertical", "horizontal"]), + label: PropTypes.node, + labelProps: PropTypes.object, // eslint-disable-line react/forbid-prop-types + disabled: PropTypes.bool, + children: PropTypes.node, +}; + +ControlLabel.defaultProps = { + layout: "vertical", + label: null, + disabled: false, + children: null, +}; + +export default function withControlLabel(WrappedControl) { + // eslint-disable-next-line react/prop-types + function ControlWrapper({ className, id, layout, label, labelProps, disabled, ...props }) { + const fallbackId = useMemo( + () => + `visualization-editor-control-${Math.random() + .toString(36) + .substr(2, 10)}`, + [] + ); + labelProps = { + ...labelProps, + htmlFor: id || fallbackId, + }; + + return ( + + + + ); + } + + // Copy static methods from `WrappedComponent` + hoistNonReactStatics(ControlWrapper, WrappedControl); + + return ControlWrapper; +} diff --git a/redash-visualizations/src/index.js b/redash-visualizations/src/index.js new file mode 100644 index 0000000000..f75ca6d8b2 --- /dev/null +++ b/redash-visualizations/src/index.js @@ -0,0 +1,8 @@ +export * from "./visualizations"; +export * from "./visualizations/visualizationsSettings"; +export { VisualizationType } from "./visualizations/prop-types"; +export { + default as registeredVisualizations, + getDefaultVisualization, + newVisualization, +} from "./visualizations/registeredVisualizations"; diff --git a/redash-visualizations/src/lib/chooseTextColorForBackground.js b/redash-visualizations/src/lib/chooseTextColorForBackground.js new file mode 100644 index 0000000000..dd84870f28 --- /dev/null +++ b/redash-visualizations/src/lib/chooseTextColorForBackground.js @@ -0,0 +1,11 @@ +import { maxBy } from "lodash"; +import chroma from "chroma-js"; + +export default function chooseTextColorForBackground(backgroundColor, textColors = ["#ffffff", "#333333"]) { + try { + backgroundColor = chroma(backgroundColor); + return maxBy(textColors, color => chroma.contrast(backgroundColor, color)); + } catch (e) { + return null; + } +} diff --git a/redash-visualizations/src/lib/hooks/useMemoWithDeepCompare.js b/redash-visualizations/src/lib/hooks/useMemoWithDeepCompare.js new file mode 100644 index 0000000000..381253cae8 --- /dev/null +++ b/redash-visualizations/src/lib/hooks/useMemoWithDeepCompare.js @@ -0,0 +1,11 @@ +import { isEqual } from "lodash"; +import { useMemo, useRef } from "react"; + +export default function useMemoWithDeepCompare(create, inputs) { + const valueRef = useRef(); + const value = useMemo(create, inputs); + if (!isEqual(value, valueRef.current)) { + valueRef.current = value; + } + return valueRef.current; +} diff --git a/redash-visualizations/src/lib/utils.js b/redash-visualizations/src/lib/utils.js new file mode 100644 index 0000000000..4bec7433e3 --- /dev/null +++ b/redash-visualizations/src/lib/utils.js @@ -0,0 +1,43 @@ +import moment from "moment"; +import { visualizationsSettings } from "@/visualizations/visualizationsSettings"; + +function formatDateTime(value) { + if (!value) { + return ""; + } + + const parsed = moment(value); + if (!parsed.isValid()) { + return "-"; + } + + return parsed.format(visualizationsSettings.dateTimeFormat); +} + +function formatDate(value) { + if (!value) { + return ""; + } + + const parsed = moment(value); + if (!parsed.isValid()) { + return "-"; + } + + return parsed.format(visualizationsSettings.dateFormat); +} + +export function formatColumnValue(value, columnType = null) { + if (moment.isMoment(value)) { + if (columnType === "date") { + return formatDate(value); + } + return formatDateTime(value); + } + + if (typeof value === "boolean") { + return value.toString(); + } + + return value; +} diff --git a/redash-visualizations/src/lib/value-format.js b/redash-visualizations/src/lib/value-format.js new file mode 100644 index 0000000000..fb0b5b35c8 --- /dev/null +++ b/redash-visualizations/src/lib/value-format.js @@ -0,0 +1,86 @@ +import moment from "moment/moment"; +import numeral from "numeral"; +import { isString, isArray, isUndefined, isFinite, isNil, toString } from "lodash"; + +numeral.options.scalePercentBy100 = false; + +// eslint-disable-next-line +const urlPattern = /(^|[\s\n]|)((?:https?|ftp):\/\/[\-A-Z0-9+\u0026\u2019@#\/%?=()~_|!:,.;]*[\-A-Z0-9+\u0026@#\/%=~()_|])/gi; + +const hasOwnProperty = Object.prototype.hasOwnProperty; + +export function createTextFormatter(highlightLinks) { + if (highlightLinks) { + return value => { + if (isString(value)) { + value = value.replace(urlPattern, '$1$2'); + } + return toString(value); + }; + } + return value => toString(value); +} + +function toMoment(value) { + if (moment.isMoment(value)) { + return value; + } + if (isFinite(value)) { + return moment(value); + } + // same as default `moment(value)`, but avoid fallback to `new Date()` + return moment(toString(value), [moment.ISO_8601, moment.RFC_2822]); +} + +export function createDateTimeFormatter(format) { + if (isString(format) && format !== "") { + return value => { + const wrapped = toMoment(value); + return wrapped.isValid() ? wrapped.format(format) : toString(value); + }; + } + return value => toString(value); +} + +export function createBooleanFormatter(values) { + if (isArray(values)) { + if (values.length >= 2) { + // Both `true` and `false` specified + return value => { + if (isNil(value)) { + return ""; + } + return "" + values[value ? 1 : 0]; + }; + } else if (values.length === 1) { + // Only `true` + return value => (value ? values[0] : ""); + } + } + return value => { + if (isNil(value)) { + return ""; + } + return value ? "true" : "false"; + }; +} + +export function createNumberFormatter(format) { + if (isString(format) && format !== "") { + const n = numeral(0); // cache `numeral` instance + return value => (value === null || value === "" ? "" : n.set(value).format(format)); + } + return value => toString(value); +} + +export function formatSimpleTemplate(str, data) { + if (!isString(str)) { + return ""; + } + return str.replace(/{{\s*([^\s]+?)\s*}}/g, (match, prop) => { + if (hasOwnProperty.call(data, prop) && !isUndefined(data[prop])) { + return data[prop]; + } + return match; + }); +} diff --git a/redash-visualizations/src/services/resizeObserver.js b/redash-visualizations/src/services/resizeObserver.js new file mode 100644 index 0000000000..c27b3bbae2 --- /dev/null +++ b/redash-visualizations/src/services/resizeObserver.js @@ -0,0 +1,32 @@ +const items = new Map(); + +function checkItems() { + if (items.size > 0) { + items.forEach((item, node) => { + const bounds = node.getBoundingClientRect(); + // convert to int (because these numbers needed for comparisons), but preserve 1 decimal point + const width = Math.round(bounds.width * 10); + const height = Math.round(bounds.height * 10); + + if (item.width !== width || item.height !== height) { + item.width = width; + item.height = height; + item.callback(node); + } + }); + + setTimeout(checkItems, 100); + } +} + +export default function observe(node, callback) { + if (node && !items.has(node)) { + const shouldTrigger = items.size === 0; + items.set(node, { callback }); + if (shouldTrigger) { + checkItems(); + } + return () => items.delete(node); + } + return () => {}; +} diff --git a/redash-visualizations/src/services/sanitize.js b/redash-visualizations/src/services/sanitize.js new file mode 100644 index 0000000000..4e162db3da --- /dev/null +++ b/redash-visualizations/src/services/sanitize.js @@ -0,0 +1,21 @@ +import { isString } from "lodash"; +import DOMPurify from "dompurify"; + +DOMPurify.setConfig({ + ADD_ATTR: ["target"], +}); + +DOMPurify.addHook("afterSanitizeAttributes", function(node) { + // Fix elements with `target` attribute: + // - allow only `target="_blank" + // - add `rel="noopener noreferrer"` to prevent https://www.owasp.org/index.php/Reverse_Tabnabbing + + const target = node.getAttribute("target"); + if (isString(target) && target.toLowerCase() === "_blank") { + node.setAttribute("rel", "noopener noreferrer"); + } else { + node.removeAttribute("target"); + } +}); + +export default DOMPurify.sanitize; diff --git a/client/app/visualizations/ColorPalette.js b/redash-visualizations/src/visualizations/ColorPalette.js similarity index 100% rename from client/app/visualizations/ColorPalette.js rename to redash-visualizations/src/visualizations/ColorPalette.js diff --git a/client/app/visualizations/Editor.jsx b/redash-visualizations/src/visualizations/Editor.jsx similarity index 100% rename from client/app/visualizations/Editor.jsx rename to redash-visualizations/src/visualizations/Editor.jsx diff --git a/client/app/visualizations/Renderer.jsx b/redash-visualizations/src/visualizations/Renderer.jsx similarity index 100% rename from client/app/visualizations/Renderer.jsx rename to redash-visualizations/src/visualizations/Renderer.jsx diff --git a/client/app/visualizations/box-plot/Editor.jsx b/redash-visualizations/src/visualizations/box-plot/Editor.jsx similarity index 100% rename from client/app/visualizations/box-plot/Editor.jsx rename to redash-visualizations/src/visualizations/box-plot/Editor.jsx diff --git a/client/app/visualizations/box-plot/Renderer.jsx b/redash-visualizations/src/visualizations/box-plot/Renderer.jsx similarity index 100% rename from client/app/visualizations/box-plot/Renderer.jsx rename to redash-visualizations/src/visualizations/box-plot/Renderer.jsx diff --git a/client/app/visualizations/box-plot/d3box.js b/redash-visualizations/src/visualizations/box-plot/d3box.js similarity index 100% rename from client/app/visualizations/box-plot/d3box.js rename to redash-visualizations/src/visualizations/box-plot/d3box.js diff --git a/client/app/visualizations/box-plot/index.js b/redash-visualizations/src/visualizations/box-plot/index.js similarity index 100% rename from client/app/visualizations/box-plot/index.js rename to redash-visualizations/src/visualizations/box-plot/index.js diff --git a/client/app/visualizations/box-plot/renderer.less b/redash-visualizations/src/visualizations/box-plot/renderer.less similarity index 100% rename from client/app/visualizations/box-plot/renderer.less rename to redash-visualizations/src/visualizations/box-plot/renderer.less diff --git a/client/app/visualizations/chart/Editor/AxisSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/AxisSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/AxisSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/AxisSettings.jsx diff --git a/client/app/visualizations/chart/Editor/ChartTypeSelect.jsx b/redash-visualizations/src/visualizations/chart/Editor/ChartTypeSelect.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/ChartTypeSelect.jsx rename to redash-visualizations/src/visualizations/chart/Editor/ChartTypeSelect.jsx diff --git a/client/app/visualizations/chart/Editor/ColorsSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/ColorsSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.jsx diff --git a/client/app/visualizations/chart/Editor/ColorsSettings.test.js b/redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.test.js similarity index 100% rename from client/app/visualizations/chart/Editor/ColorsSettings.test.js rename to redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.test.js diff --git a/client/app/visualizations/chart/Editor/ColumnMappingSelect.jsx b/redash-visualizations/src/visualizations/chart/Editor/ColumnMappingSelect.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/ColumnMappingSelect.jsx rename to redash-visualizations/src/visualizations/chart/Editor/ColumnMappingSelect.jsx diff --git a/client/app/visualizations/chart/Editor/CustomChartSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/CustomChartSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/CustomChartSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/CustomChartSettings.jsx diff --git a/client/app/visualizations/chart/Editor/DataLabelsSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/DataLabelsSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.jsx diff --git a/client/app/visualizations/chart/Editor/DataLabelsSettings.test.js b/redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.test.js similarity index 100% rename from client/app/visualizations/chart/Editor/DataLabelsSettings.test.js rename to redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.test.js diff --git a/client/app/visualizations/chart/Editor/DefaultColorsSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/DefaultColorsSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/DefaultColorsSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/DefaultColorsSettings.jsx diff --git a/client/app/visualizations/chart/Editor/GeneralSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/GeneralSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.jsx diff --git a/client/app/visualizations/chart/Editor/GeneralSettings.test.js b/redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.test.js similarity index 100% rename from client/app/visualizations/chart/Editor/GeneralSettings.test.js rename to redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.test.js diff --git a/client/app/visualizations/chart/Editor/HeatmapColorsSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/HeatmapColorsSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/HeatmapColorsSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/HeatmapColorsSettings.jsx diff --git a/client/app/visualizations/chart/Editor/PieColorsSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/PieColorsSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/PieColorsSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/PieColorsSettings.jsx diff --git a/client/app/visualizations/chart/Editor/SeriesSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/SeriesSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.jsx diff --git a/client/app/visualizations/chart/Editor/SeriesSettings.test.js b/redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.test.js similarity index 100% rename from client/app/visualizations/chart/Editor/SeriesSettings.test.js rename to redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.test.js diff --git a/client/app/visualizations/chart/Editor/XAxisSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/XAxisSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.jsx diff --git a/client/app/visualizations/chart/Editor/XAxisSettings.test.js b/redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.test.js similarity index 100% rename from client/app/visualizations/chart/Editor/XAxisSettings.test.js rename to redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.test.js diff --git a/client/app/visualizations/chart/Editor/YAxisSettings.jsx b/redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/YAxisSettings.jsx rename to redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.jsx diff --git a/client/app/visualizations/chart/Editor/YAxisSettings.test.js b/redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.test.js similarity index 100% rename from client/app/visualizations/chart/Editor/YAxisSettings.test.js rename to redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.test.js diff --git a/client/app/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap b/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap similarity index 100% rename from client/app/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap rename to redash-visualizations/src/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap diff --git a/client/app/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap b/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap similarity index 100% rename from client/app/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap rename to redash-visualizations/src/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap diff --git a/client/app/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap b/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap similarity index 100% rename from client/app/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap rename to redash-visualizations/src/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap diff --git a/client/app/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap b/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap similarity index 100% rename from client/app/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap rename to redash-visualizations/src/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap diff --git a/client/app/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap b/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap similarity index 100% rename from client/app/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap rename to redash-visualizations/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap diff --git a/client/app/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap b/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap similarity index 100% rename from client/app/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap rename to redash-visualizations/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap diff --git a/client/app/visualizations/chart/Editor/editor.less b/redash-visualizations/src/visualizations/chart/Editor/editor.less similarity index 100% rename from client/app/visualizations/chart/Editor/editor.less rename to redash-visualizations/src/visualizations/chart/Editor/editor.less diff --git a/client/app/visualizations/chart/Editor/index.jsx b/redash-visualizations/src/visualizations/chart/Editor/index.jsx similarity index 100% rename from client/app/visualizations/chart/Editor/index.jsx rename to redash-visualizations/src/visualizations/chart/Editor/index.jsx diff --git a/client/app/visualizations/chart/Editor/index.test.js b/redash-visualizations/src/visualizations/chart/Editor/index.test.js similarity index 100% rename from client/app/visualizations/chart/Editor/index.test.js rename to redash-visualizations/src/visualizations/chart/Editor/index.test.js diff --git a/client/app/visualizations/chart/Renderer/CustomPlotlyChart.jsx b/redash-visualizations/src/visualizations/chart/Renderer/CustomPlotlyChart.jsx similarity index 100% rename from client/app/visualizations/chart/Renderer/CustomPlotlyChart.jsx rename to redash-visualizations/src/visualizations/chart/Renderer/CustomPlotlyChart.jsx diff --git a/client/app/visualizations/chart/Renderer/PlotlyChart.jsx b/redash-visualizations/src/visualizations/chart/Renderer/PlotlyChart.jsx similarity index 100% rename from client/app/visualizations/chart/Renderer/PlotlyChart.jsx rename to redash-visualizations/src/visualizations/chart/Renderer/PlotlyChart.jsx diff --git a/client/app/visualizations/chart/Renderer/index.jsx b/redash-visualizations/src/visualizations/chart/Renderer/index.jsx similarity index 100% rename from client/app/visualizations/chart/Renderer/index.jsx rename to redash-visualizations/src/visualizations/chart/Renderer/index.jsx diff --git a/client/app/visualizations/chart/Renderer/renderer.less b/redash-visualizations/src/visualizations/chart/Renderer/renderer.less similarity index 100% rename from client/app/visualizations/chart/Renderer/renderer.less rename to redash-visualizations/src/visualizations/chart/Renderer/renderer.less diff --git a/client/app/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json b/redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json similarity index 100% rename from client/app/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json rename to redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json diff --git a/client/app/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json b/redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json similarity index 100% rename from client/app/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json rename to redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json diff --git a/client/app/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json b/redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json similarity index 100% rename from client/app/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json rename to redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json diff --git a/client/app/visualizations/chart/fixtures/getChartData/single-series.json b/redash-visualizations/src/visualizations/chart/fixtures/getChartData/single-series.json similarity index 100% rename from client/app/visualizations/chart/fixtures/getChartData/single-series.json rename to redash-visualizations/src/visualizations/chart/fixtures/getChartData/single-series.json diff --git a/client/app/visualizations/chart/getChartData.js b/redash-visualizations/src/visualizations/chart/getChartData.js similarity index 100% rename from client/app/visualizations/chart/getChartData.js rename to redash-visualizations/src/visualizations/chart/getChartData.js diff --git a/client/app/visualizations/chart/getChartData.test.js b/redash-visualizations/src/visualizations/chart/getChartData.test.js similarity index 100% rename from client/app/visualizations/chart/getChartData.test.js rename to redash-visualizations/src/visualizations/chart/getChartData.test.js diff --git a/client/app/visualizations/chart/getOptions.js b/redash-visualizations/src/visualizations/chart/getOptions.js similarity index 100% rename from client/app/visualizations/chart/getOptions.js rename to redash-visualizations/src/visualizations/chart/getOptions.js diff --git a/client/app/visualizations/chart/index.js b/redash-visualizations/src/visualizations/chart/index.js similarity index 100% rename from client/app/visualizations/chart/index.js rename to redash-visualizations/src/visualizations/chart/index.js diff --git a/client/app/visualizations/chart/plotly/applyLayoutFixes.js b/redash-visualizations/src/visualizations/chart/plotly/applyLayoutFixes.js similarity index 100% rename from client/app/visualizations/chart/plotly/applyLayoutFixes.js rename to redash-visualizations/src/visualizations/chart/plotly/applyLayoutFixes.js diff --git a/client/app/visualizations/chart/plotly/customChartUtils.js b/redash-visualizations/src/visualizations/chart/plotly/customChartUtils.js similarity index 100% rename from client/app/visualizations/chart/plotly/customChartUtils.js rename to redash-visualizations/src/visualizations/chart/plotly/customChartUtils.js diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/bar/default.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/default.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/bar/default.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/default.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/box/default.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/default.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/box/default.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/default.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/pie/default.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/default.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/pie/default.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/default.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json diff --git a/client/app/visualizations/chart/plotly/fixtures/prepareLayout/pie.json b/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json similarity index 100% rename from client/app/visualizations/chart/plotly/fixtures/prepareLayout/pie.json rename to redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json diff --git a/client/app/visualizations/chart/plotly/index.js b/redash-visualizations/src/visualizations/chart/plotly/index.js similarity index 100% rename from client/app/visualizations/chart/plotly/index.js rename to redash-visualizations/src/visualizations/chart/plotly/index.js diff --git a/client/app/visualizations/chart/plotly/prepareData.js b/redash-visualizations/src/visualizations/chart/plotly/prepareData.js similarity index 100% rename from client/app/visualizations/chart/plotly/prepareData.js rename to redash-visualizations/src/visualizations/chart/plotly/prepareData.js diff --git a/client/app/visualizations/chart/plotly/prepareData.test.js b/redash-visualizations/src/visualizations/chart/plotly/prepareData.test.js similarity index 100% rename from client/app/visualizations/chart/plotly/prepareData.test.js rename to redash-visualizations/src/visualizations/chart/plotly/prepareData.test.js diff --git a/client/app/visualizations/chart/plotly/prepareDefaultData.js b/redash-visualizations/src/visualizations/chart/plotly/prepareDefaultData.js similarity index 100% rename from client/app/visualizations/chart/plotly/prepareDefaultData.js rename to redash-visualizations/src/visualizations/chart/plotly/prepareDefaultData.js diff --git a/client/app/visualizations/chart/plotly/prepareHeatmapData.js b/redash-visualizations/src/visualizations/chart/plotly/prepareHeatmapData.js similarity index 100% rename from client/app/visualizations/chart/plotly/prepareHeatmapData.js rename to redash-visualizations/src/visualizations/chart/plotly/prepareHeatmapData.js diff --git a/client/app/visualizations/chart/plotly/prepareLayout.js b/redash-visualizations/src/visualizations/chart/plotly/prepareLayout.js similarity index 100% rename from client/app/visualizations/chart/plotly/prepareLayout.js rename to redash-visualizations/src/visualizations/chart/plotly/prepareLayout.js diff --git a/client/app/visualizations/chart/plotly/prepareLayout.test.js b/redash-visualizations/src/visualizations/chart/plotly/prepareLayout.test.js similarity index 100% rename from client/app/visualizations/chart/plotly/prepareLayout.test.js rename to redash-visualizations/src/visualizations/chart/plotly/prepareLayout.test.js diff --git a/client/app/visualizations/chart/plotly/preparePieData.js b/redash-visualizations/src/visualizations/chart/plotly/preparePieData.js similarity index 100% rename from client/app/visualizations/chart/plotly/preparePieData.js rename to redash-visualizations/src/visualizations/chart/plotly/preparePieData.js diff --git a/client/app/visualizations/chart/plotly/updateData.js b/redash-visualizations/src/visualizations/chart/plotly/updateData.js similarity index 100% rename from client/app/visualizations/chart/plotly/updateData.js rename to redash-visualizations/src/visualizations/chart/plotly/updateData.js diff --git a/client/app/visualizations/chart/plotly/utils.js b/redash-visualizations/src/visualizations/chart/plotly/utils.js similarity index 100% rename from client/app/visualizations/chart/plotly/utils.js rename to redash-visualizations/src/visualizations/chart/plotly/utils.js diff --git a/client/app/visualizations/choropleth/ColorPalette.js b/redash-visualizations/src/visualizations/choropleth/ColorPalette.js similarity index 100% rename from client/app/visualizations/choropleth/ColorPalette.js rename to redash-visualizations/src/visualizations/choropleth/ColorPalette.js diff --git a/client/app/visualizations/choropleth/Editor/BoundsSettings.jsx b/redash-visualizations/src/visualizations/choropleth/Editor/BoundsSettings.jsx similarity index 100% rename from client/app/visualizations/choropleth/Editor/BoundsSettings.jsx rename to redash-visualizations/src/visualizations/choropleth/Editor/BoundsSettings.jsx diff --git a/client/app/visualizations/choropleth/Editor/ColorsSettings.jsx b/redash-visualizations/src/visualizations/choropleth/Editor/ColorsSettings.jsx similarity index 100% rename from client/app/visualizations/choropleth/Editor/ColorsSettings.jsx rename to redash-visualizations/src/visualizations/choropleth/Editor/ColorsSettings.jsx diff --git a/client/app/visualizations/choropleth/Editor/FormatSettings.jsx b/redash-visualizations/src/visualizations/choropleth/Editor/FormatSettings.jsx similarity index 100% rename from client/app/visualizations/choropleth/Editor/FormatSettings.jsx rename to redash-visualizations/src/visualizations/choropleth/Editor/FormatSettings.jsx diff --git a/client/app/visualizations/choropleth/Editor/GeneralSettings.jsx b/redash-visualizations/src/visualizations/choropleth/Editor/GeneralSettings.jsx similarity index 100% rename from client/app/visualizations/choropleth/Editor/GeneralSettings.jsx rename to redash-visualizations/src/visualizations/choropleth/Editor/GeneralSettings.jsx diff --git a/client/app/visualizations/choropleth/Editor/index.js b/redash-visualizations/src/visualizations/choropleth/Editor/index.js similarity index 100% rename from client/app/visualizations/choropleth/Editor/index.js rename to redash-visualizations/src/visualizations/choropleth/Editor/index.js diff --git a/client/app/visualizations/choropleth/Editor/utils.js b/redash-visualizations/src/visualizations/choropleth/Editor/utils.js similarity index 100% rename from client/app/visualizations/choropleth/Editor/utils.js rename to redash-visualizations/src/visualizations/choropleth/Editor/utils.js diff --git a/client/app/visualizations/choropleth/Renderer/Legend.jsx b/redash-visualizations/src/visualizations/choropleth/Renderer/Legend.jsx similarity index 100% rename from client/app/visualizations/choropleth/Renderer/Legend.jsx rename to redash-visualizations/src/visualizations/choropleth/Renderer/Legend.jsx diff --git a/client/app/visualizations/choropleth/Renderer/index.jsx b/redash-visualizations/src/visualizations/choropleth/Renderer/index.jsx similarity index 100% rename from client/app/visualizations/choropleth/Renderer/index.jsx rename to redash-visualizations/src/visualizations/choropleth/Renderer/index.jsx diff --git a/client/app/visualizations/choropleth/Renderer/initChoropleth.js b/redash-visualizations/src/visualizations/choropleth/Renderer/initChoropleth.js similarity index 100% rename from client/app/visualizations/choropleth/Renderer/initChoropleth.js rename to redash-visualizations/src/visualizations/choropleth/Renderer/initChoropleth.js diff --git a/client/app/visualizations/choropleth/Renderer/renderer.less b/redash-visualizations/src/visualizations/choropleth/Renderer/renderer.less similarity index 100% rename from client/app/visualizations/choropleth/Renderer/renderer.less rename to redash-visualizations/src/visualizations/choropleth/Renderer/renderer.less diff --git a/client/app/visualizations/choropleth/Renderer/utils.js b/redash-visualizations/src/visualizations/choropleth/Renderer/utils.js similarity index 100% rename from client/app/visualizations/choropleth/Renderer/utils.js rename to redash-visualizations/src/visualizations/choropleth/Renderer/utils.js diff --git a/client/app/visualizations/choropleth/getOptions.js b/redash-visualizations/src/visualizations/choropleth/getOptions.js similarity index 100% rename from client/app/visualizations/choropleth/getOptions.js rename to redash-visualizations/src/visualizations/choropleth/getOptions.js diff --git a/client/app/visualizations/choropleth/index.js b/redash-visualizations/src/visualizations/choropleth/index.js similarity index 100% rename from client/app/visualizations/choropleth/index.js rename to redash-visualizations/src/visualizations/choropleth/index.js diff --git a/client/app/visualizations/choropleth/maps/countries.geo.json b/redash-visualizations/src/visualizations/choropleth/maps/countries.geo.json similarity index 100% rename from client/app/visualizations/choropleth/maps/countries.geo.json rename to redash-visualizations/src/visualizations/choropleth/maps/countries.geo.json diff --git a/client/app/visualizations/choropleth/maps/japan.prefectures.geo.json b/redash-visualizations/src/visualizations/choropleth/maps/japan.prefectures.geo.json similarity index 100% rename from client/app/visualizations/choropleth/maps/japan.prefectures.geo.json rename to redash-visualizations/src/visualizations/choropleth/maps/japan.prefectures.geo.json diff --git a/client/app/visualizations/cohort/Cornelius.jsx b/redash-visualizations/src/visualizations/cohort/Cornelius.jsx similarity index 100% rename from client/app/visualizations/cohort/Cornelius.jsx rename to redash-visualizations/src/visualizations/cohort/Cornelius.jsx diff --git a/client/app/visualizations/cohort/Editor/AppearanceSettings.jsx b/redash-visualizations/src/visualizations/cohort/Editor/AppearanceSettings.jsx similarity index 100% rename from client/app/visualizations/cohort/Editor/AppearanceSettings.jsx rename to redash-visualizations/src/visualizations/cohort/Editor/AppearanceSettings.jsx diff --git a/client/app/visualizations/cohort/Editor/ColorsSettings.jsx b/redash-visualizations/src/visualizations/cohort/Editor/ColorsSettings.jsx similarity index 100% rename from client/app/visualizations/cohort/Editor/ColorsSettings.jsx rename to redash-visualizations/src/visualizations/cohort/Editor/ColorsSettings.jsx diff --git a/client/app/visualizations/cohort/Editor/ColumnsSettings.jsx b/redash-visualizations/src/visualizations/cohort/Editor/ColumnsSettings.jsx similarity index 100% rename from client/app/visualizations/cohort/Editor/ColumnsSettings.jsx rename to redash-visualizations/src/visualizations/cohort/Editor/ColumnsSettings.jsx diff --git a/client/app/visualizations/cohort/Editor/OptionsSettings.jsx b/redash-visualizations/src/visualizations/cohort/Editor/OptionsSettings.jsx similarity index 100% rename from client/app/visualizations/cohort/Editor/OptionsSettings.jsx rename to redash-visualizations/src/visualizations/cohort/Editor/OptionsSettings.jsx diff --git a/client/app/visualizations/cohort/Editor/index.js b/redash-visualizations/src/visualizations/cohort/Editor/index.js similarity index 100% rename from client/app/visualizations/cohort/Editor/index.js rename to redash-visualizations/src/visualizations/cohort/Editor/index.js diff --git a/client/app/visualizations/cohort/Renderer.jsx b/redash-visualizations/src/visualizations/cohort/Renderer.jsx similarity index 100% rename from client/app/visualizations/cohort/Renderer.jsx rename to redash-visualizations/src/visualizations/cohort/Renderer.jsx diff --git a/client/app/visualizations/cohort/cornelius.less b/redash-visualizations/src/visualizations/cohort/cornelius.less similarity index 100% rename from client/app/visualizations/cohort/cornelius.less rename to redash-visualizations/src/visualizations/cohort/cornelius.less diff --git a/client/app/visualizations/cohort/getOptions.js b/redash-visualizations/src/visualizations/cohort/getOptions.js similarity index 100% rename from client/app/visualizations/cohort/getOptions.js rename to redash-visualizations/src/visualizations/cohort/getOptions.js diff --git a/client/app/visualizations/cohort/index.js b/redash-visualizations/src/visualizations/cohort/index.js similarity index 100% rename from client/app/visualizations/cohort/index.js rename to redash-visualizations/src/visualizations/cohort/index.js diff --git a/client/app/visualizations/cohort/prepareData.js b/redash-visualizations/src/visualizations/cohort/prepareData.js similarity index 100% rename from client/app/visualizations/cohort/prepareData.js rename to redash-visualizations/src/visualizations/cohort/prepareData.js diff --git a/client/app/visualizations/cohort/renderer.less b/redash-visualizations/src/visualizations/cohort/renderer.less similarity index 100% rename from client/app/visualizations/cohort/renderer.less rename to redash-visualizations/src/visualizations/cohort/renderer.less diff --git a/client/app/visualizations/counter/Editor/FormatSettings.jsx b/redash-visualizations/src/visualizations/counter/Editor/FormatSettings.jsx similarity index 100% rename from client/app/visualizations/counter/Editor/FormatSettings.jsx rename to redash-visualizations/src/visualizations/counter/Editor/FormatSettings.jsx diff --git a/client/app/visualizations/counter/Editor/GeneralSettings.jsx b/redash-visualizations/src/visualizations/counter/Editor/GeneralSettings.jsx similarity index 100% rename from client/app/visualizations/counter/Editor/GeneralSettings.jsx rename to redash-visualizations/src/visualizations/counter/Editor/GeneralSettings.jsx diff --git a/client/app/visualizations/counter/Editor/index.js b/redash-visualizations/src/visualizations/counter/Editor/index.js similarity index 100% rename from client/app/visualizations/counter/Editor/index.js rename to redash-visualizations/src/visualizations/counter/Editor/index.js diff --git a/client/app/visualizations/counter/Renderer.jsx b/redash-visualizations/src/visualizations/counter/Renderer.jsx similarity index 100% rename from client/app/visualizations/counter/Renderer.jsx rename to redash-visualizations/src/visualizations/counter/Renderer.jsx diff --git a/client/app/visualizations/counter/index.js b/redash-visualizations/src/visualizations/counter/index.js similarity index 100% rename from client/app/visualizations/counter/index.js rename to redash-visualizations/src/visualizations/counter/index.js diff --git a/client/app/visualizations/counter/render.less b/redash-visualizations/src/visualizations/counter/render.less similarity index 100% rename from client/app/visualizations/counter/render.less rename to redash-visualizations/src/visualizations/counter/render.less diff --git a/client/app/visualizations/counter/utils.js b/redash-visualizations/src/visualizations/counter/utils.js similarity index 100% rename from client/app/visualizations/counter/utils.js rename to redash-visualizations/src/visualizations/counter/utils.js diff --git a/client/app/visualizations/counter/utils.test.js b/redash-visualizations/src/visualizations/counter/utils.test.js similarity index 100% rename from client/app/visualizations/counter/utils.test.js rename to redash-visualizations/src/visualizations/counter/utils.test.js diff --git a/client/app/visualizations/details/DetailsRenderer.jsx b/redash-visualizations/src/visualizations/details/DetailsRenderer.jsx similarity index 100% rename from client/app/visualizations/details/DetailsRenderer.jsx rename to redash-visualizations/src/visualizations/details/DetailsRenderer.jsx diff --git a/client/app/visualizations/details/details.less b/redash-visualizations/src/visualizations/details/details.less similarity index 100% rename from client/app/visualizations/details/details.less rename to redash-visualizations/src/visualizations/details/details.less diff --git a/client/app/visualizations/details/index.js b/redash-visualizations/src/visualizations/details/index.js similarity index 100% rename from client/app/visualizations/details/index.js rename to redash-visualizations/src/visualizations/details/index.js diff --git a/client/app/visualizations/funnel/Editor/AppearanceSettings.jsx b/redash-visualizations/src/visualizations/funnel/Editor/AppearanceSettings.jsx similarity index 100% rename from client/app/visualizations/funnel/Editor/AppearanceSettings.jsx rename to redash-visualizations/src/visualizations/funnel/Editor/AppearanceSettings.jsx diff --git a/client/app/visualizations/funnel/Editor/GeneralSettings.jsx b/redash-visualizations/src/visualizations/funnel/Editor/GeneralSettings.jsx similarity index 100% rename from client/app/visualizations/funnel/Editor/GeneralSettings.jsx rename to redash-visualizations/src/visualizations/funnel/Editor/GeneralSettings.jsx diff --git a/client/app/visualizations/funnel/Editor/index.js b/redash-visualizations/src/visualizations/funnel/Editor/index.js similarity index 100% rename from client/app/visualizations/funnel/Editor/index.js rename to redash-visualizations/src/visualizations/funnel/Editor/index.js diff --git a/client/app/visualizations/funnel/Renderer/FunnelBar.jsx b/redash-visualizations/src/visualizations/funnel/Renderer/FunnelBar.jsx similarity index 100% rename from client/app/visualizations/funnel/Renderer/FunnelBar.jsx rename to redash-visualizations/src/visualizations/funnel/Renderer/FunnelBar.jsx diff --git a/client/app/visualizations/funnel/Renderer/funnel-bar.less b/redash-visualizations/src/visualizations/funnel/Renderer/funnel-bar.less similarity index 100% rename from client/app/visualizations/funnel/Renderer/funnel-bar.less rename to redash-visualizations/src/visualizations/funnel/Renderer/funnel-bar.less diff --git a/client/app/visualizations/funnel/Renderer/index.jsx b/redash-visualizations/src/visualizations/funnel/Renderer/index.jsx similarity index 100% rename from client/app/visualizations/funnel/Renderer/index.jsx rename to redash-visualizations/src/visualizations/funnel/Renderer/index.jsx diff --git a/client/app/visualizations/funnel/Renderer/index.less b/redash-visualizations/src/visualizations/funnel/Renderer/index.less similarity index 100% rename from client/app/visualizations/funnel/Renderer/index.less rename to redash-visualizations/src/visualizations/funnel/Renderer/index.less diff --git a/client/app/visualizations/funnel/Renderer/prepareData.js b/redash-visualizations/src/visualizations/funnel/Renderer/prepareData.js similarity index 100% rename from client/app/visualizations/funnel/Renderer/prepareData.js rename to redash-visualizations/src/visualizations/funnel/Renderer/prepareData.js diff --git a/client/app/visualizations/funnel/getOptions.js b/redash-visualizations/src/visualizations/funnel/getOptions.js similarity index 100% rename from client/app/visualizations/funnel/getOptions.js rename to redash-visualizations/src/visualizations/funnel/getOptions.js diff --git a/client/app/visualizations/funnel/index.js b/redash-visualizations/src/visualizations/funnel/index.js similarity index 100% rename from client/app/visualizations/funnel/index.js rename to redash-visualizations/src/visualizations/funnel/index.js diff --git a/client/app/visualizations/index.js b/redash-visualizations/src/visualizations/index.js similarity index 100% rename from client/app/visualizations/index.js rename to redash-visualizations/src/visualizations/index.js diff --git a/client/app/visualizations/map/Editor/FormatSettings.jsx b/redash-visualizations/src/visualizations/map/Editor/FormatSettings.jsx similarity index 100% rename from client/app/visualizations/map/Editor/FormatSettings.jsx rename to redash-visualizations/src/visualizations/map/Editor/FormatSettings.jsx diff --git a/client/app/visualizations/map/Editor/GeneralSettings.jsx b/redash-visualizations/src/visualizations/map/Editor/GeneralSettings.jsx similarity index 100% rename from client/app/visualizations/map/Editor/GeneralSettings.jsx rename to redash-visualizations/src/visualizations/map/Editor/GeneralSettings.jsx diff --git a/client/app/visualizations/map/Editor/GroupsSettings.jsx b/redash-visualizations/src/visualizations/map/Editor/GroupsSettings.jsx similarity index 100% rename from client/app/visualizations/map/Editor/GroupsSettings.jsx rename to redash-visualizations/src/visualizations/map/Editor/GroupsSettings.jsx diff --git a/client/app/visualizations/map/Editor/StyleSettings.jsx b/redash-visualizations/src/visualizations/map/Editor/StyleSettings.jsx similarity index 100% rename from client/app/visualizations/map/Editor/StyleSettings.jsx rename to redash-visualizations/src/visualizations/map/Editor/StyleSettings.jsx diff --git a/client/app/visualizations/map/Editor/index.js b/redash-visualizations/src/visualizations/map/Editor/index.js similarity index 100% rename from client/app/visualizations/map/Editor/index.js rename to redash-visualizations/src/visualizations/map/Editor/index.js diff --git a/client/app/visualizations/map/Renderer.jsx b/redash-visualizations/src/visualizations/map/Renderer.jsx similarity index 100% rename from client/app/visualizations/map/Renderer.jsx rename to redash-visualizations/src/visualizations/map/Renderer.jsx diff --git a/client/app/visualizations/map/getOptions.js b/redash-visualizations/src/visualizations/map/getOptions.js similarity index 100% rename from client/app/visualizations/map/getOptions.js rename to redash-visualizations/src/visualizations/map/getOptions.js diff --git a/client/app/visualizations/map/index.js b/redash-visualizations/src/visualizations/map/index.js similarity index 100% rename from client/app/visualizations/map/index.js rename to redash-visualizations/src/visualizations/map/index.js diff --git a/client/app/visualizations/map/initMap.js b/redash-visualizations/src/visualizations/map/initMap.js similarity index 100% rename from client/app/visualizations/map/initMap.js rename to redash-visualizations/src/visualizations/map/initMap.js diff --git a/client/app/visualizations/map/prepareData.js b/redash-visualizations/src/visualizations/map/prepareData.js similarity index 100% rename from client/app/visualizations/map/prepareData.js rename to redash-visualizations/src/visualizations/map/prepareData.js diff --git a/client/app/visualizations/pivot/Editor.jsx b/redash-visualizations/src/visualizations/pivot/Editor.jsx similarity index 100% rename from client/app/visualizations/pivot/Editor.jsx rename to redash-visualizations/src/visualizations/pivot/Editor.jsx diff --git a/client/app/visualizations/pivot/Renderer.jsx b/redash-visualizations/src/visualizations/pivot/Renderer.jsx similarity index 100% rename from client/app/visualizations/pivot/Renderer.jsx rename to redash-visualizations/src/visualizations/pivot/Renderer.jsx diff --git a/client/app/visualizations/pivot/index.js b/redash-visualizations/src/visualizations/pivot/index.js similarity index 100% rename from client/app/visualizations/pivot/index.js rename to redash-visualizations/src/visualizations/pivot/index.js diff --git a/client/app/visualizations/pivot/renderer.less b/redash-visualizations/src/visualizations/pivot/renderer.less similarity index 100% rename from client/app/visualizations/pivot/renderer.less rename to redash-visualizations/src/visualizations/pivot/renderer.less diff --git a/client/app/visualizations/prop-types.js b/redash-visualizations/src/visualizations/prop-types.js similarity index 100% rename from client/app/visualizations/prop-types.js rename to redash-visualizations/src/visualizations/prop-types.js diff --git a/client/app/visualizations/registeredVisualizations.js b/redash-visualizations/src/visualizations/registeredVisualizations.js similarity index 100% rename from client/app/visualizations/registeredVisualizations.js rename to redash-visualizations/src/visualizations/registeredVisualizations.js diff --git a/client/app/visualizations/sankey/Editor.jsx b/redash-visualizations/src/visualizations/sankey/Editor.jsx similarity index 100% rename from client/app/visualizations/sankey/Editor.jsx rename to redash-visualizations/src/visualizations/sankey/Editor.jsx diff --git a/client/app/visualizations/sankey/Renderer.jsx b/redash-visualizations/src/visualizations/sankey/Renderer.jsx similarity index 100% rename from client/app/visualizations/sankey/Renderer.jsx rename to redash-visualizations/src/visualizations/sankey/Renderer.jsx diff --git a/client/app/visualizations/sankey/d3sankey.js b/redash-visualizations/src/visualizations/sankey/d3sankey.js similarity index 100% rename from client/app/visualizations/sankey/d3sankey.js rename to redash-visualizations/src/visualizations/sankey/d3sankey.js diff --git a/client/app/visualizations/sankey/index.js b/redash-visualizations/src/visualizations/sankey/index.js similarity index 100% rename from client/app/visualizations/sankey/index.js rename to redash-visualizations/src/visualizations/sankey/index.js diff --git a/client/app/visualizations/sankey/initSankey.js b/redash-visualizations/src/visualizations/sankey/initSankey.js similarity index 100% rename from client/app/visualizations/sankey/initSankey.js rename to redash-visualizations/src/visualizations/sankey/initSankey.js diff --git a/client/app/visualizations/sankey/renderer.less b/redash-visualizations/src/visualizations/sankey/renderer.less similarity index 100% rename from client/app/visualizations/sankey/renderer.less rename to redash-visualizations/src/visualizations/sankey/renderer.less diff --git a/client/app/visualizations/sunburst/Editor.jsx b/redash-visualizations/src/visualizations/sunburst/Editor.jsx similarity index 100% rename from client/app/visualizations/sunburst/Editor.jsx rename to redash-visualizations/src/visualizations/sunburst/Editor.jsx diff --git a/client/app/visualizations/sunburst/Renderer.jsx b/redash-visualizations/src/visualizations/sunburst/Renderer.jsx similarity index 100% rename from client/app/visualizations/sunburst/Renderer.jsx rename to redash-visualizations/src/visualizations/sunburst/Renderer.jsx diff --git a/client/app/visualizations/sunburst/index.js b/redash-visualizations/src/visualizations/sunburst/index.js similarity index 100% rename from client/app/visualizations/sunburst/index.js rename to redash-visualizations/src/visualizations/sunburst/index.js diff --git a/client/app/visualizations/sunburst/initSunburst.js b/redash-visualizations/src/visualizations/sunburst/initSunburst.js similarity index 100% rename from client/app/visualizations/sunburst/initSunburst.js rename to redash-visualizations/src/visualizations/sunburst/initSunburst.js diff --git a/client/app/visualizations/sunburst/renderer.less b/redash-visualizations/src/visualizations/sunburst/renderer.less similarity index 100% rename from client/app/visualizations/sunburst/renderer.less rename to redash-visualizations/src/visualizations/sunburst/renderer.less diff --git a/client/app/visualizations/table/Editor/ColumnEditor.jsx b/redash-visualizations/src/visualizations/table/Editor/ColumnEditor.jsx similarity index 100% rename from client/app/visualizations/table/Editor/ColumnEditor.jsx rename to redash-visualizations/src/visualizations/table/Editor/ColumnEditor.jsx diff --git a/client/app/visualizations/table/Editor/ColumnsSettings.jsx b/redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.jsx similarity index 100% rename from client/app/visualizations/table/Editor/ColumnsSettings.jsx rename to redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.jsx diff --git a/client/app/visualizations/table/Editor/ColumnsSettings.test.js b/redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.test.js similarity index 100% rename from client/app/visualizations/table/Editor/ColumnsSettings.test.js rename to redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.test.js diff --git a/client/app/visualizations/table/Editor/GridSettings.jsx b/redash-visualizations/src/visualizations/table/Editor/GridSettings.jsx similarity index 100% rename from client/app/visualizations/table/Editor/GridSettings.jsx rename to redash-visualizations/src/visualizations/table/Editor/GridSettings.jsx diff --git a/client/app/visualizations/table/Editor/GridSettings.test.js b/redash-visualizations/src/visualizations/table/Editor/GridSettings.test.js similarity index 100% rename from client/app/visualizations/table/Editor/GridSettings.test.js rename to redash-visualizations/src/visualizations/table/Editor/GridSettings.test.js diff --git a/client/app/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap b/redash-visualizations/src/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap similarity index 100% rename from client/app/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap rename to redash-visualizations/src/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap diff --git a/client/app/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap b/redash-visualizations/src/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap similarity index 100% rename from client/app/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap rename to redash-visualizations/src/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap diff --git a/client/app/visualizations/table/Editor/editor.less b/redash-visualizations/src/visualizations/table/Editor/editor.less similarity index 100% rename from client/app/visualizations/table/Editor/editor.less rename to redash-visualizations/src/visualizations/table/Editor/editor.less diff --git a/client/app/visualizations/table/Editor/index.jsx b/redash-visualizations/src/visualizations/table/Editor/index.jsx similarity index 100% rename from client/app/visualizations/table/Editor/index.jsx rename to redash-visualizations/src/visualizations/table/Editor/index.jsx diff --git a/client/app/visualizations/table/Renderer.jsx b/redash-visualizations/src/visualizations/table/Renderer.jsx similarity index 100% rename from client/app/visualizations/table/Renderer.jsx rename to redash-visualizations/src/visualizations/table/Renderer.jsx diff --git a/client/app/visualizations/table/columns/__snapshots__/boolean.test.js.snap b/redash-visualizations/src/visualizations/table/columns/__snapshots__/boolean.test.js.snap similarity index 100% rename from client/app/visualizations/table/columns/__snapshots__/boolean.test.js.snap rename to redash-visualizations/src/visualizations/table/columns/__snapshots__/boolean.test.js.snap diff --git a/client/app/visualizations/table/columns/__snapshots__/datetime.test.js.snap b/redash-visualizations/src/visualizations/table/columns/__snapshots__/datetime.test.js.snap similarity index 100% rename from client/app/visualizations/table/columns/__snapshots__/datetime.test.js.snap rename to redash-visualizations/src/visualizations/table/columns/__snapshots__/datetime.test.js.snap diff --git a/client/app/visualizations/table/columns/__snapshots__/image.test.js.snap b/redash-visualizations/src/visualizations/table/columns/__snapshots__/image.test.js.snap similarity index 100% rename from client/app/visualizations/table/columns/__snapshots__/image.test.js.snap rename to redash-visualizations/src/visualizations/table/columns/__snapshots__/image.test.js.snap diff --git a/client/app/visualizations/table/columns/__snapshots__/link.test.js.snap b/redash-visualizations/src/visualizations/table/columns/__snapshots__/link.test.js.snap similarity index 100% rename from client/app/visualizations/table/columns/__snapshots__/link.test.js.snap rename to redash-visualizations/src/visualizations/table/columns/__snapshots__/link.test.js.snap diff --git a/client/app/visualizations/table/columns/__snapshots__/number.test.js.snap b/redash-visualizations/src/visualizations/table/columns/__snapshots__/number.test.js.snap similarity index 100% rename from client/app/visualizations/table/columns/__snapshots__/number.test.js.snap rename to redash-visualizations/src/visualizations/table/columns/__snapshots__/number.test.js.snap diff --git a/client/app/visualizations/table/columns/__snapshots__/text.test.js.snap b/redash-visualizations/src/visualizations/table/columns/__snapshots__/text.test.js.snap similarity index 100% rename from client/app/visualizations/table/columns/__snapshots__/text.test.js.snap rename to redash-visualizations/src/visualizations/table/columns/__snapshots__/text.test.js.snap diff --git a/client/app/visualizations/table/columns/boolean.jsx b/redash-visualizations/src/visualizations/table/columns/boolean.jsx similarity index 100% rename from client/app/visualizations/table/columns/boolean.jsx rename to redash-visualizations/src/visualizations/table/columns/boolean.jsx diff --git a/client/app/visualizations/table/columns/boolean.test.js b/redash-visualizations/src/visualizations/table/columns/boolean.test.js similarity index 100% rename from client/app/visualizations/table/columns/boolean.test.js rename to redash-visualizations/src/visualizations/table/columns/boolean.test.js diff --git a/client/app/visualizations/table/columns/datetime.jsx b/redash-visualizations/src/visualizations/table/columns/datetime.jsx similarity index 100% rename from client/app/visualizations/table/columns/datetime.jsx rename to redash-visualizations/src/visualizations/table/columns/datetime.jsx diff --git a/client/app/visualizations/table/columns/datetime.test.js b/redash-visualizations/src/visualizations/table/columns/datetime.test.js similarity index 100% rename from client/app/visualizations/table/columns/datetime.test.js rename to redash-visualizations/src/visualizations/table/columns/datetime.test.js diff --git a/client/app/visualizations/table/columns/image.jsx b/redash-visualizations/src/visualizations/table/columns/image.jsx similarity index 100% rename from client/app/visualizations/table/columns/image.jsx rename to redash-visualizations/src/visualizations/table/columns/image.jsx diff --git a/client/app/visualizations/table/columns/image.test.js b/redash-visualizations/src/visualizations/table/columns/image.test.js similarity index 100% rename from client/app/visualizations/table/columns/image.test.js rename to redash-visualizations/src/visualizations/table/columns/image.test.js diff --git a/client/app/visualizations/table/columns/index.js b/redash-visualizations/src/visualizations/table/columns/index.js similarity index 100% rename from client/app/visualizations/table/columns/index.js rename to redash-visualizations/src/visualizations/table/columns/index.js diff --git a/client/app/visualizations/table/columns/json.jsx b/redash-visualizations/src/visualizations/table/columns/json.jsx similarity index 100% rename from client/app/visualizations/table/columns/json.jsx rename to redash-visualizations/src/visualizations/table/columns/json.jsx diff --git a/client/app/visualizations/table/columns/link.jsx b/redash-visualizations/src/visualizations/table/columns/link.jsx similarity index 100% rename from client/app/visualizations/table/columns/link.jsx rename to redash-visualizations/src/visualizations/table/columns/link.jsx diff --git a/client/app/visualizations/table/columns/link.test.js b/redash-visualizations/src/visualizations/table/columns/link.test.js similarity index 100% rename from client/app/visualizations/table/columns/link.test.js rename to redash-visualizations/src/visualizations/table/columns/link.test.js diff --git a/client/app/visualizations/table/columns/number.jsx b/redash-visualizations/src/visualizations/table/columns/number.jsx similarity index 100% rename from client/app/visualizations/table/columns/number.jsx rename to redash-visualizations/src/visualizations/table/columns/number.jsx diff --git a/client/app/visualizations/table/columns/number.test.js b/redash-visualizations/src/visualizations/table/columns/number.test.js similarity index 100% rename from client/app/visualizations/table/columns/number.test.js rename to redash-visualizations/src/visualizations/table/columns/number.test.js diff --git a/client/app/visualizations/table/columns/text.jsx b/redash-visualizations/src/visualizations/table/columns/text.jsx similarity index 100% rename from client/app/visualizations/table/columns/text.jsx rename to redash-visualizations/src/visualizations/table/columns/text.jsx diff --git a/client/app/visualizations/table/columns/text.test.js b/redash-visualizations/src/visualizations/table/columns/text.test.js similarity index 100% rename from client/app/visualizations/table/columns/text.test.js rename to redash-visualizations/src/visualizations/table/columns/text.test.js diff --git a/client/app/visualizations/table/getOptions.js b/redash-visualizations/src/visualizations/table/getOptions.js similarity index 100% rename from client/app/visualizations/table/getOptions.js rename to redash-visualizations/src/visualizations/table/getOptions.js diff --git a/client/app/visualizations/table/index.js b/redash-visualizations/src/visualizations/table/index.js similarity index 100% rename from client/app/visualizations/table/index.js rename to redash-visualizations/src/visualizations/table/index.js diff --git a/client/app/visualizations/table/renderer.less b/redash-visualizations/src/visualizations/table/renderer.less similarity index 100% rename from client/app/visualizations/table/renderer.less rename to redash-visualizations/src/visualizations/table/renderer.less diff --git a/client/app/visualizations/table/utils.js b/redash-visualizations/src/visualizations/table/utils.js similarity index 100% rename from client/app/visualizations/table/utils.js rename to redash-visualizations/src/visualizations/table/utils.js diff --git a/client/app/visualizations/variables.less b/redash-visualizations/src/visualizations/variables.less similarity index 100% rename from client/app/visualizations/variables.less rename to redash-visualizations/src/visualizations/variables.less diff --git a/client/app/visualizations/visualizationsSettings.js b/redash-visualizations/src/visualizations/visualizationsSettings.js similarity index 100% rename from client/app/visualizations/visualizationsSettings.js rename to redash-visualizations/src/visualizations/visualizationsSettings.js diff --git a/client/app/visualizations/word-cloud/Editor.jsx b/redash-visualizations/src/visualizations/word-cloud/Editor.jsx similarity index 100% rename from client/app/visualizations/word-cloud/Editor.jsx rename to redash-visualizations/src/visualizations/word-cloud/Editor.jsx diff --git a/client/app/visualizations/word-cloud/Renderer.jsx b/redash-visualizations/src/visualizations/word-cloud/Renderer.jsx similarity index 100% rename from client/app/visualizations/word-cloud/Renderer.jsx rename to redash-visualizations/src/visualizations/word-cloud/Renderer.jsx diff --git a/client/app/visualizations/word-cloud/index.js b/redash-visualizations/src/visualizations/word-cloud/index.js similarity index 100% rename from client/app/visualizations/word-cloud/index.js rename to redash-visualizations/src/visualizations/word-cloud/index.js diff --git a/client/app/visualizations/word-cloud/renderer.less b/redash-visualizations/src/visualizations/word-cloud/renderer.less similarity index 100% rename from client/app/visualizations/word-cloud/renderer.less rename to redash-visualizations/src/visualizations/word-cloud/renderer.less From 8af48f6db43e20af4c00c3d82bf3cd4194a37298 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sat, 25 Apr 2020 20:10:10 -0300 Subject: [PATCH 03/19] Delete shared components --- .../app/components/ApplicationArea/Router.jsx | 2 +- .../routeWithApiKeySession.jsx | 2 +- .../ApplicationArea/routeWithUserSession.jsx | 2 +- client/app/components/ColorPicker/Input.jsx | 94 ---------- client/app/components/ColorPicker/Label.jsx | 31 ---- client/app/components/ColorPicker/Swatch.jsx | 42 ----- client/app/components/ColorPicker/index.jsx | 161 ------------------ client/app/components/ColorPicker/index.less | 44 ----- client/app/components/ColorPicker/input.less | 19 --- client/app/components/ColorPicker/label.less | 7 - client/app/components/ColorPicker/swatch.less | 30 ---- client/app/components/ColorPicker/utils.js | 14 -- client/app/components/ErrorBoundary.jsx | 74 -------- client/app/components/HtmlContent.jsx | 22 --- client/app/components/Parameters.jsx | 2 +- .../components/TextAlignmentSelect/index.jsx | 42 ----- .../components/TextAlignmentSelect/index.less | 13 -- .../components/dashboards/TextboxDialog.jsx | 2 +- .../dashboard-widget/TextboxWidget.jsx | 2 +- .../dashboard-widget/VisualizationWidget.jsx | 2 +- .../JsonViewInteractive.jsx | 110 ------------ .../json-view-interactive.less | 112 ------------ client/app/components/sortable/index.jsx | 80 --------- client/app/components/sortable/style.less | 30 ---- .../visualizations/editor/ContextHelp.jsx | 54 ------ .../visualizations/editor/Section.jsx | 47 ----- .../visualizations/editor/Section.less | 8 - .../visualizations/editor/Switch.jsx | 42 ----- .../visualizations/editor/Switch.less | 8 - .../visualizations/editor/TextArea.jsx | 12 -- .../visualizations/editor/TextArea.less | 3 - .../visualizations/editor/context-help.less | 17 -- .../visualizations/editor/control-label.less | 11 -- .../editor/createTabbedEditor.jsx | 51 ------ .../components/visualizations/editor/index.js | 21 --- .../editor/withControlLabel.jsx | 88 ---------- .../app/pages/queries/VisualizationEmbed.jsx | 2 +- 37 files changed, 8 insertions(+), 1295 deletions(-) delete mode 100644 client/app/components/ColorPicker/Input.jsx delete mode 100644 client/app/components/ColorPicker/Label.jsx delete mode 100644 client/app/components/ColorPicker/Swatch.jsx delete mode 100644 client/app/components/ColorPicker/index.jsx delete mode 100644 client/app/components/ColorPicker/index.less delete mode 100644 client/app/components/ColorPicker/input.less delete mode 100644 client/app/components/ColorPicker/label.less delete mode 100644 client/app/components/ColorPicker/swatch.less delete mode 100644 client/app/components/ColorPicker/utils.js delete mode 100644 client/app/components/ErrorBoundary.jsx delete mode 100644 client/app/components/HtmlContent.jsx delete mode 100644 client/app/components/TextAlignmentSelect/index.jsx delete mode 100644 client/app/components/TextAlignmentSelect/index.less delete mode 100644 client/app/components/json-view-interactive/JsonViewInteractive.jsx delete mode 100644 client/app/components/json-view-interactive/json-view-interactive.less delete mode 100644 client/app/components/sortable/index.jsx delete mode 100644 client/app/components/sortable/style.less delete mode 100644 client/app/components/visualizations/editor/ContextHelp.jsx delete mode 100644 client/app/components/visualizations/editor/Section.jsx delete mode 100644 client/app/components/visualizations/editor/Section.less delete mode 100644 client/app/components/visualizations/editor/Switch.jsx delete mode 100644 client/app/components/visualizations/editor/Switch.less delete mode 100644 client/app/components/visualizations/editor/TextArea.jsx delete mode 100644 client/app/components/visualizations/editor/TextArea.less delete mode 100644 client/app/components/visualizations/editor/context-help.less delete mode 100644 client/app/components/visualizations/editor/control-label.less delete mode 100644 client/app/components/visualizations/editor/createTabbedEditor.jsx delete mode 100644 client/app/components/visualizations/editor/index.js delete mode 100644 client/app/components/visualizations/editor/withControlLabel.jsx diff --git a/client/app/components/ApplicationArea/Router.jsx b/client/app/components/ApplicationArea/Router.jsx index e90c7b02a2..b1a163b807 100644 --- a/client/app/components/ApplicationArea/Router.jsx +++ b/client/app/components/ApplicationArea/Router.jsx @@ -2,7 +2,7 @@ import { isFunction, startsWith, trimStart, trimEnd } from "lodash"; import React, { useState, useEffect, useRef } from "react"; import PropTypes from "prop-types"; import UniversalRouter from "universal-router"; -import ErrorBoundary from "@/components/ErrorBoundary"; +import ErrorBoundary from "redash-visualizations/lib/components/ErrorBoundary"; import location from "@/services/location"; import url from "@/services/url"; diff --git a/client/app/components/ApplicationArea/routeWithApiKeySession.jsx b/client/app/components/ApplicationArea/routeWithApiKeySession.jsx index 895f4fb115..7bd36ff0b7 100644 --- a/client/app/components/ApplicationArea/routeWithApiKeySession.jsx +++ b/client/app/components/ApplicationArea/routeWithApiKeySession.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState, useContext } from "react"; import PropTypes from "prop-types"; -import { ErrorBoundaryContext } from "@/components/ErrorBoundary"; +import { ErrorBoundaryContext } from "redash-visualizations/lib/components/ErrorBoundary"; import { Auth } from "@/services/auth"; // This wrapper modifies `route.render` function and instead of passing `currentRoute` passes an object diff --git a/client/app/components/ApplicationArea/routeWithUserSession.jsx b/client/app/components/ApplicationArea/routeWithUserSession.jsx index a062f6981e..17bcf5500b 100644 --- a/client/app/components/ApplicationArea/routeWithUserSession.jsx +++ b/client/app/components/ApplicationArea/routeWithUserSession.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from "react"; import PropTypes from "prop-types"; -import ErrorBoundary, { ErrorBoundaryContext } from "@/components/ErrorBoundary"; +import ErrorBoundary, { ErrorBoundaryContext } from "redash-visualizations/lib/components/ErrorBoundary"; import { Auth } from "@/services/auth"; import organizationStatus from "@/services/organizationStatus"; import ApplicationHeader from "./ApplicationHeader"; diff --git a/client/app/components/ColorPicker/Input.jsx b/client/app/components/ColorPicker/Input.jsx deleted file mode 100644 index 47b89fd6ad..0000000000 --- a/client/app/components/ColorPicker/Input.jsx +++ /dev/null @@ -1,94 +0,0 @@ -import { isNil, isArray, chunk, map, filter, toPairs } from "lodash"; -import React, { useState, useEffect } from "react"; -import PropTypes from "prop-types"; -import tinycolor from "tinycolor2"; -import TextInput from "antd/lib/input"; -import Typography from "antd/lib/typography"; -import Swatch from "./Swatch"; - -import "./input.less"; - -function preparePresets(presetColors, presetColumns) { - presetColors = isArray(presetColors) ? map(presetColors, v => [null, v]) : toPairs(presetColors); - presetColors = map(presetColors, ([title, value]) => { - if (isNil(value)) { - return [title, null]; - } - value = tinycolor(value); - if (value.isValid()) { - return [title, "#" + value.toHex().toUpperCase()]; - } - return null; - }); - return chunk(filter(presetColors), presetColumns); -} - -function validateColor(value, callback, prefix = "#") { - if (isNil(value)) { - callback(null); - } - value = tinycolor(value); - if (value.isValid()) { - callback(prefix + value.toHex().toUpperCase()); - } -} - -export default function Input({ color, presetColors, presetColumns, onChange, onPressEnter }) { - const [inputValue, setInputValue] = useState(""); - const [isInputFocused, setIsInputFocused] = useState(false); - - const presets = preparePresets(presetColors, presetColumns); - - function handleInputChange(value) { - setInputValue(value); - validateColor(value, onChange); - } - - useEffect(() => { - if (!isInputFocused) { - validateColor(color, setInputValue, ""); - } - }, [color, isInputFocused]); - - return ( - - {map(presets, (group, index) => ( -
- {map(group, ([title, value]) => ( - validateColor(value, onChange)} /> - ))} -
- ))} -
- #} - value={inputValue} - onChange={e => handleInputChange(e.target.value)} - onFocus={() => setIsInputFocused(true)} - onBlur={() => setIsInputFocused(false)} - onPressEnter={onPressEnter} - /> -
-
- ); -} - -Input.propTypes = { - color: PropTypes.string, - presetColors: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.string), // array of colors (no tooltips) - PropTypes.objectOf(PropTypes.string), // color name => color value - ]), - presetColumns: PropTypes.number, - onChange: PropTypes.func, - onPressEnter: PropTypes.func, -}; - -Input.defaultProps = { - color: "#FFFFFF", - presetColors: null, - presetColumns: 8, - onChange: () => {}, - onPressEnter: () => {}, -}; diff --git a/client/app/components/ColorPicker/Label.jsx b/client/app/components/ColorPicker/Label.jsx deleted file mode 100644 index 1cd8a4decf..0000000000 --- a/client/app/components/ColorPicker/Label.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import React, { useMemo } from "react"; -import PropTypes from "prop-types"; -import cx from "classnames"; - -import { validateColor, getColorName } from "./utils"; -import "./label.less"; - -export default function Label({ className, color, presetColors, ...props }) { - const name = useMemo(() => getColorName(validateColor(color), presetColors), [color, presetColors]); - - return ( - - {name} - - ); -} - -Label.propTypes = { - className: PropTypes.string, - color: PropTypes.string, - presetColors: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.string), // array of colors (no tooltips) - PropTypes.objectOf(PropTypes.string), // color name => color value - ]), -}; - -Label.defaultProps = { - className: null, - color: "#FFFFFF", - presetColors: null, -}; diff --git a/client/app/components/ColorPicker/Swatch.jsx b/client/app/components/ColorPicker/Swatch.jsx deleted file mode 100644 index 0be5571f6f..0000000000 --- a/client/app/components/ColorPicker/Swatch.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import { isString } from "lodash"; -import React from "react"; -import PropTypes from "prop-types"; -import cx from "classnames"; -import Tooltip from "antd/lib/tooltip"; - -import "./swatch.less"; - -export default function Swatch({ className, color, title, size, style, ...props }) { - const result = ( - - ); - - if (isString(title) && title !== "") { - return ( - - {result} - - ); - } - return result; -} - -Swatch.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - title: PropTypes.string, - color: PropTypes.string, - size: PropTypes.number, -}; - -Swatch.defaultProps = { - className: null, - style: null, - title: null, - color: "transparent", - size: 12, -}; diff --git a/client/app/components/ColorPicker/index.jsx b/client/app/components/ColorPicker/index.jsx deleted file mode 100644 index 605423bee2..0000000000 --- a/client/app/components/ColorPicker/index.jsx +++ /dev/null @@ -1,161 +0,0 @@ -import { toString } from "lodash"; -import React, { useState, useEffect, useMemo } from "react"; -import PropTypes from "prop-types"; -import cx from "classnames"; -import Popover from "antd/lib/popover"; -import Card from "antd/lib/card"; -import Tooltip from "antd/lib/tooltip"; -import Icon from "antd/lib/icon"; -import chooseTextColorForBackground from "@/lib/chooseTextColorForBackground"; - -import ColorInput from "./Input"; -import Swatch from "./Swatch"; -import Label from "./Label"; -import { validateColor } from "./utils"; - -import "./index.less"; - -export default function ColorPicker({ - color, - placement, - presetColors, - presetColumns, - interactive, - children, - onChange, - triggerProps, - addonBefore, - addonAfter, -}) { - const [visible, setVisible] = useState(false); - const validatedColor = useMemo(() => validateColor(color), [color]); - const [currentColor, setCurrentColor] = useState(""); - - function handleApply() { - setVisible(false); - if (!interactive) { - onChange(currentColor); - } - } - - function handleCancel() { - setVisible(false); - } - - const actions = []; - if (!interactive) { - actions.push( - - - - ); - actions.push( - - - - ); - } - - function handleInputChange(newColor) { - setCurrentColor(newColor); - if (interactive) { - onChange(newColor); - } - } - - useEffect(() => { - if (visible) { - setCurrentColor(validatedColor); - } - }, [validatedColor, visible]); - - return ( - - {addonBefore} - - - - } - trigger="click" - placement={placement} - visible={visible} - onVisibleChange={setVisible}> - {children || ( - - )} - - {addonAfter} - - ); -} - -ColorPicker.propTypes = { - color: PropTypes.string, - placement: PropTypes.oneOf([ - "top", - "left", - "right", - "bottom", - "topLeft", - "topRight", - "bottomLeft", - "bottomRight", - "leftTop", - "leftBottom", - "rightTop", - "rightBottom", - ]), - presetColors: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.string), // array of colors (no tooltips) - PropTypes.objectOf(PropTypes.string), // color name => color value - ]), - presetColumns: PropTypes.number, - interactive: PropTypes.bool, - triggerProps: PropTypes.object, // eslint-disable-line react/forbid-prop-types - children: PropTypes.node, - addonBefore: PropTypes.node, - addonAfter: PropTypes.node, - onChange: PropTypes.func, -}; - -ColorPicker.defaultProps = { - color: "#FFFFFF", - placement: "top", - presetColors: null, - presetColumns: 8, - interactive: false, - triggerProps: {}, - children: null, - addonBefore: null, - addonAfter: null, - onChange: () => {}, -}; - -ColorPicker.Input = ColorInput; -ColorPicker.Swatch = Swatch; -ColorPicker.Label = Label; diff --git a/client/app/components/ColorPicker/index.less b/client/app/components/ColorPicker/index.less deleted file mode 100644 index bd6857990b..0000000000 --- a/client/app/components/ColorPicker/index.less +++ /dev/null @@ -1,44 +0,0 @@ -.color-picker { - &.color-picker-with-actions { - &.ant-popover-placement-top, - &.ant-popover-placement-topLeft, - &.ant-popover-placement-topRight, - &.ant-popover-placement-leftBottom, - &.ant-popover-placement-rightBottom { - > .ant-popover-content > .ant-popover-arrow { - border-color: #fafafa; // same as card actions - } - } - } - - &.ant-popover-placement-bottom, - &.ant-popover-placement-bottomLeft, - &.ant-popover-placement-bottomRight, - &.ant-popover-placement-leftTop, - &.ant-popover-placement-rightTop { - > .ant-popover-content > .ant-popover-arrow { - border-color: var(--color-picker-selected-color); - } - } - - .ant-popover-inner-content { - padding: 0; - } - - .ant-card-head { - text-align: center; - border-bottom-color: rgba(0, 0, 0, 0.1); - } - - .ant-card-body { - padding: 10px; - } -} - -.color-picker-trigger { - cursor: pointer; -} - -.color-picker-wrapper { - white-space: nowrap; -} diff --git a/client/app/components/ColorPicker/input.less b/client/app/components/ColorPicker/input.less deleted file mode 100644 index 56f9d7ec58..0000000000 --- a/client/app/components/ColorPicker/input.less +++ /dev/null @@ -1,19 +0,0 @@ -.color-picker-input-swatches { - margin: 0 0 10px 0; - text-align: left; - white-space: nowrap; - - .color-swatch { - cursor: pointer; - margin: 0 10px 0 0; - - &:last-child { - margin-right: 0; - } - } -} - -.color-picker-input { - text-align: left; - white-space: nowrap; -} diff --git a/client/app/components/ColorPicker/label.less b/client/app/components/ColorPicker/label.less deleted file mode 100644 index e8aa009f30..0000000000 --- a/client/app/components/ColorPicker/label.less +++ /dev/null @@ -1,7 +0,0 @@ -.color-label { - vertical-align: middle; - - .color-swatch + & { - margin-left: 7px; - } -} diff --git a/client/app/components/ColorPicker/swatch.less b/client/app/components/ColorPicker/swatch.less deleted file mode 100644 index 4dea312c44..0000000000 --- a/client/app/components/ColorPicker/swatch.less +++ /dev/null @@ -1,30 +0,0 @@ -.color-swatch { - display: inline-block; - box-sizing: border-box; - vertical-align: middle; - border-radius: 2px; - overflow: hidden; - width: 12px; - - @cell-size: 12px; - @cell-color: rgba(0, 0, 0, 0.1); - - background-color: transparent; - background-image: - linear-gradient(45deg, @cell-color 25%, transparent 25%), - linear-gradient(-45deg, @cell-color 25%, transparent 25%), - linear-gradient(45deg, transparent 75%, @cell-color 75%), - linear-gradient(-45deg, transparent 75%, @cell-color 75%); - background-size: @cell-size @cell-size; - background-position: 0 0, 0 @cell-size/2, @cell-size/2 -@cell-size/2, -@cell-size/2 0px; - - &:before { - content: ""; - display: block; - padding-top: ~"calc(100% - 2px)"; - background-color: inherit; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 2px; - overflow: hidden; - } -} diff --git a/client/app/components/ColorPicker/utils.js b/client/app/components/ColorPicker/utils.js deleted file mode 100644 index 1af3670437..0000000000 --- a/client/app/components/ColorPicker/utils.js +++ /dev/null @@ -1,14 +0,0 @@ -import { isArray, findKey } from "lodash"; -import tinycolor from "tinycolor2"; - -export function validateColor(value, fallback = null) { - value = tinycolor(value); - return value.isValid() ? "#" + value.toHex().toUpperCase() : fallback; -} - -export function getColorName(color, presetColors) { - if (isArray(presetColors)) { - return color; - } - return findKey(presetColors, v => validateColor(v) === color) || color; -} diff --git a/client/app/components/ErrorBoundary.jsx b/client/app/components/ErrorBoundary.jsx deleted file mode 100644 index 78e354efab..0000000000 --- a/client/app/components/ErrorBoundary.jsx +++ /dev/null @@ -1,74 +0,0 @@ -import { isFunction } from "lodash"; -import React from "react"; -import PropTypes from "prop-types"; -import debug from "debug"; -import Alert from "antd/lib/alert"; - -const logger = debug("redash:errors"); - -export const ErrorBoundaryContext = React.createContext({ - handleError: error => { - // Allow calling chain to roll up, and then throw the error in global context - setTimeout(() => { - throw error; - }); - }, - reset: () => {}, -}); - -export function ErrorMessage({ children }) { - return ; -} - -ErrorMessage.propTypes = { - children: PropTypes.node, -}; - -ErrorMessage.defaultProps = { - children: "Something went wrong.", -}; - -export default class ErrorBoundary extends React.Component { - static propTypes = { - children: PropTypes.node, - renderError: PropTypes.func, // error => ReactNode - }; - - static defaultProps = { - children: null, - renderError: null, - }; - - state = { error: null }; - - handleError = error => { - this.setState(this.constructor.getDerivedStateFromError(error)); - this.componentDidCatch(error, null); - }; - - reset = () => { - this.setState({ error: null }); - }; - - static getDerivedStateFromError(error) { - return { error }; - } - - componentDidCatch(error, errorInfo) { - logger(error, errorInfo); - } - - render() { - const { renderError, children } = this.props; - const { error } = this.state; - - if (error) { - if (isFunction(renderError)) { - return renderError(error); - } - return ; - } - - return {children}; - } -} diff --git a/client/app/components/HtmlContent.jsx b/client/app/components/HtmlContent.jsx deleted file mode 100644 index d92082fedb..0000000000 --- a/client/app/components/HtmlContent.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import sanitize from "@/services/sanitize"; - -const HtmlContent = React.memo(function HtmlContent({ children, ...props }) { - return ( -
- ); -}); - -HtmlContent.propTypes = { - children: PropTypes.string, -}; - -HtmlContent.defaultProps = { - children: "", -}; - -export default HtmlContent; diff --git a/client/app/components/Parameters.jsx b/client/app/components/Parameters.jsx index 0d32250de6..b93684e270 100644 --- a/client/app/components/Parameters.jsx +++ b/client/app/components/Parameters.jsx @@ -1,7 +1,7 @@ import { size, filter, forEach, extend } from "lodash"; import React from "react"; import PropTypes from "prop-types"; -import { SortableContainer, SortableElement, DragHandle } from "@/components/sortable"; +import { SortableContainer, SortableElement, DragHandle } from "redash-visualizations/lib/components/sortable"; import location from "@/services/location"; import { Parameter, createParameter } from "@/services/parameters"; import ParameterApplyButton from "@/components/ParameterApplyButton"; diff --git a/client/app/components/TextAlignmentSelect/index.jsx b/client/app/components/TextAlignmentSelect/index.jsx deleted file mode 100644 index 90c86a77d3..0000000000 --- a/client/app/components/TextAlignmentSelect/index.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import { pickBy, startsWith } from "lodash"; -import React from "react"; -import PropTypes from "prop-types"; -import cx from "classnames"; -import Radio from "antd/lib/radio"; -import Icon from "antd/lib/icon"; -import Tooltip from "antd/lib/tooltip"; - -import "./index.less"; - -export default function TextAlignmentSelect({ className, ...props }) { - return ( - // Antd RadioGroup does not use any custom attributes -
startsWith(k, "data-"))}> - - - - - - - - - - - - - - - - - -
- ); -} - -TextAlignmentSelect.propTypes = { - className: PropTypes.string, -}; - -TextAlignmentSelect.defaultProps = { - className: null, -}; diff --git a/client/app/components/TextAlignmentSelect/index.less b/client/app/components/TextAlignmentSelect/index.less deleted file mode 100644 index 6cfcb76ac1..0000000000 --- a/client/app/components/TextAlignmentSelect/index.less +++ /dev/null @@ -1,13 +0,0 @@ -.ant-radio-group.text-alignment-select { - display: flex; - align-items: stretch; - justify-content: stretch; - - .ant-radio-button-wrapper { - flex-grow: 1; - text-align: center; - // fit height - height: 35px; - line-height: 33px; - } -} diff --git a/client/app/components/dashboards/TextboxDialog.jsx b/client/app/components/dashboards/TextboxDialog.jsx index 08e4281dee..7f4cf05b63 100644 --- a/client/app/components/dashboards/TextboxDialog.jsx +++ b/client/app/components/dashboards/TextboxDialog.jsx @@ -7,7 +7,7 @@ import Modal from "antd/lib/modal"; import Input from "antd/lib/input"; import Tooltip from "antd/lib/tooltip"; import Divider from "antd/lib/divider"; -import HtmlContent from "@/components/HtmlContent"; +import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; import { wrap as wrapDialog, DialogPropType } from "@/components/DialogWrapper"; import notification from "@/services/notification"; diff --git a/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx b/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx index 7c084654d9..151a7a7f03 100644 --- a/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx +++ b/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import PropTypes from "prop-types"; import { markdown } from "markdown"; import Menu from "antd/lib/menu"; -import HtmlContent from "@/components/HtmlContent"; +import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; import TextboxDialog from "@/components/dashboards/TextboxDialog"; import Widget from "./Widget"; diff --git a/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx b/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx index 2822875462..c7858d7d70 100644 --- a/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx +++ b/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx @@ -4,10 +4,10 @@ import { compact, isEmpty, invoke } from "lodash"; import { markdown } from "markdown"; import cx from "classnames"; import Menu from "antd/lib/menu"; +import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; import { currentUser } from "@/services/auth"; import recordEvent from "@/services/recordEvent"; import { formatDateTime } from "@/lib/utils"; -import HtmlContent from "@/components/HtmlContent"; import Parameters from "@/components/Parameters"; import TimeAgo from "@/components/TimeAgo"; import Timer from "@/components/Timer"; diff --git a/client/app/components/json-view-interactive/JsonViewInteractive.jsx b/client/app/components/json-view-interactive/JsonViewInteractive.jsx deleted file mode 100644 index 7c967e786d..0000000000 --- a/client/app/components/json-view-interactive/JsonViewInteractive.jsx +++ /dev/null @@ -1,110 +0,0 @@ -/* eslint-disable react/prop-types */ - -import { isFinite, isString, isArray, isObject, keys, map } from "lodash"; -import React, { useState } from "react"; -import cx from "classnames"; -import PropTypes from "prop-types"; - -import "./json-view-interactive.less"; - -function JsonBlock({ value, children, openingBrace, closingBrace, withKeys }) { - const [isExpanded, setIsExpanded] = useState(false); - - const objectKeys = keys(value); - const count = objectKeys.length; - - return ( - - {count > 0 && ( - setIsExpanded(!isExpanded)}> - - - )} - {openingBrace} - {!isExpanded && count > 0 && ( - setIsExpanded(true)}> - … - - )} - {isExpanded && ( - - {map(objectKeys, (key, index) => { - const isFirst = index === 0; - const isLast = index === count - 1; - const comma = isLast ? null : ,; - return ( - - {withKeys && ( - - - : - - - )} - {comma} - - ); - })} - - )} - {closingBrace} - {children} - {!isExpanded && {" // " + count + " " + (count === 1 ? "item" : "items")}} - - ); -} - -function JsonValue({ value, children }) { - if (value === null || value === false || value === true || isFinite(value)) { - return ( - - {"" + value} - {children} - - ); - } - if (isString(value)) { - return ( - - " - {value} - " - {children} - - ); - } - if (isArray(value)) { - return ( - - {children} - - ); - } - if (isObject(value)) { - return ( - - {children} - - ); - } - return null; -} - -export default function JsonViewInteractive({ value }) { - return ( - - - - ); -} - -JsonViewInteractive.propTypes = { - value: PropTypes.any, // eslint-disable-line react/forbid-prop-types -}; - -JsonViewInteractive.defaultProps = { - // `null` will be rendered as "null" because it is a valid JSON value, so use `undefined` for no value - value: undefined, -}; diff --git a/client/app/components/json-view-interactive/json-view-interactive.less b/client/app/components/json-view-interactive/json-view-interactive.less deleted file mode 100644 index fdffcb87a2..0000000000 --- a/client/app/components/json-view-interactive/json-view-interactive.less +++ /dev/null @@ -1,112 +0,0 @@ -@import "../../visualizations/variables"; - -@jvi-gutter: 20px; -@jvi-spacing: 2px; - -.jvi-root { - display: block; - font-family: @font-family-monospace; -} - -.jvi-block { - display: block; - border-left: 1px dotted @table-border-color; - margin: 0 0 0 2px; -} - -.jvi-item { - display: block; - position: relative; - padding: 0 0 0 @jvi-gutter; - white-space: nowrap; - - .jvi-item { - margin: @jvi-spacing 0; - } - - &.jvi-nested-last > span > .jvi-punctuation.jvi-comma { - display: none; - } -} - -.jvi-toggle { - position: absolute; - left: 0; - top: 0; - width: @jvi-gutter; - height: @jvi-gutter; - line-height: @jvi-gutter; - text-align: center; - cursor: pointer; - z-index: 1; - color: @text-color; - opacity: 0.5; - - &:hover { - opacity: 0.8; - } - - i { - vertical-align: middle; - } - - &.hidden { - display: none; - } -} - -.jvi-punctuation { - color: @text-color; - - &.jvi-string { - color: @green; - } - - &.jvi-braces { - margin: 0 @jvi-spacing; - } - - &.jvi-ellipsis { - padding: 0 @jvi-spacing; - cursor: pointer; - - &:hover { - text-decoration: underline; - } - } - - &.hidden { - display: none; - } -} - -.jvi-value { - color: @green; - - &.jvi-primitive { - color: @orange; - } - - &.jvi-string { - white-space: normal; - } -} - -.jvi-object-key { - .jvi-value, - .jvi-punctuation { - color: @blue; - } -} - -.jvi-comment { - color: @text-muted; - font-family: @visualizations-font; - font-style: italic; - margin: 0 0 0 2 * @jvi-spacing; - opacity: 0.5; - - &.hidden { - display: none; - } -} diff --git a/client/app/components/sortable/index.jsx b/client/app/components/sortable/index.jsx deleted file mode 100644 index c53c28ab53..0000000000 --- a/client/app/components/sortable/index.jsx +++ /dev/null @@ -1,80 +0,0 @@ -import { isFunction, wrap } from "lodash"; -import React, { useRef, useState } from "react"; -import PropTypes from "prop-types"; -import cx from "classnames"; -import { sortableContainer, sortableElement, sortableHandle } from "react-sortable-hoc"; - -import "./style.less"; - -export const DragHandle = sortableHandle(({ className, ...restProps }) => ( -
-)); - -export const SortableContainerWrapper = sortableContainer(({ children }) => children); - -export const SortableElement = sortableElement(({ children }) => children); - -export function SortableContainer({ disabled, containerComponent, containerProps, children, ...wrapperProps }) { - const containerRef = useRef(); - const [isDragging, setIsDragging] = useState(false); - - wrapperProps = { ...wrapperProps }; - containerProps = { ...containerProps }; - - if (disabled) { - // Disabled state: - // - forbid drag'n'drop (and therefore no need to hook events - // - don't override anything on container element - wrapperProps.shouldCancelStart = () => true; - } else { - // Enabled state: - - // - use container element as a default helper element - wrapperProps.helperContainer = wrap(wrapperProps.helperContainer, helperContainer => - isFunction(helperContainer) ? helperContainer(containerRef.current) : containerRef.current - ); - - // - hook drag start/end events - wrapperProps.updateBeforeSortStart = wrap(wrapperProps.updateBeforeSortStart, (updateBeforeSortStart, ...args) => { - setIsDragging(true); - if (isFunction(updateBeforeSortStart)) { - updateBeforeSortStart(...args); - } - }); - wrapperProps.onSortEnd = wrap(wrapperProps.onSortEnd, (onSortEnd, ...args) => { - setIsDragging(false); - if (isFunction(onSortEnd)) { - onSortEnd(...args); - } - }); - - // - update container element: add classes and take a ref - containerProps.className = cx( - "sortable-container", - { "sortable-container-dragging": isDragging }, - containerProps.className - ); - containerProps.ref = containerRef; - } - - const ContainerComponent = containerComponent; - return ( - - {children} - - ); -} - -SortableContainer.propTypes = { - disabled: PropTypes.bool, - containerComponent: PropTypes.elementType, - containerProps: PropTypes.object, // eslint-disable-line react/forbid-prop-types - children: PropTypes.node, -}; - -SortableContainer.defaultProps = { - disabled: false, - containerComponent: "div", - containerProps: {}, - children: null, -}; diff --git a/client/app/components/sortable/style.less b/client/app/components/sortable/style.less deleted file mode 100644 index 1277df8e9b..0000000000 --- a/client/app/components/sortable/style.less +++ /dev/null @@ -1,30 +0,0 @@ -.drag-handle { - vertical-align: bottom; - cursor: move; - - display: inline-flex; - align-items: stretch; - justify-content: center; - - &:before { - content: ''; - display: block; - width: 6px; - - background: - linear-gradient(90deg, transparent 0px, white 1px, white 2px) center, - linear-gradient(transparent 0px, white 1px, white 2px) center, - #111111; - background-size: 2px 2px; - } -} - -.sortable-container { - transition: background-color 200ms ease-out; - transition-delay: 300ms; // short pause before returning to original bgcolor - - &.sortable-container-dragging { - transition-delay: 0s; - background-color: #f6f8f9; - } -} diff --git a/client/app/components/visualizations/editor/ContextHelp.jsx b/client/app/components/visualizations/editor/ContextHelp.jsx deleted file mode 100644 index addc8ed417..0000000000 --- a/client/app/components/visualizations/editor/ContextHelp.jsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import Popover from "antd/lib/popover"; -import Icon from "antd/lib/icon"; -import { visualizationsSettings } from "redash-visualizations/lib"; - -import "./context-help.less"; - -export default function ContextHelp({ icon, children, ...props }) { - return ( - - {icon || ContextHelp.defaultIcon} - - ); -} - -ContextHelp.propTypes = { - icon: PropTypes.node, - children: PropTypes.node, -}; - -ContextHelp.defaultProps = { - icon: null, - children: null, -}; - -ContextHelp.defaultIcon = ; - -function NumberFormatSpecs() { - const { HelpTriggerComponent } = visualizationsSettings; - return ( - - {ContextHelp.defaultIcon} - - ); -} - -function DateTimeFormatSpecs() { - const { HelpTriggerComponent } = visualizationsSettings; - return ( - - {ContextHelp.defaultIcon} - - ); -} - -ContextHelp.NumberFormatSpecs = NumberFormatSpecs; -ContextHelp.DateTimeFormatSpecs = DateTimeFormatSpecs; diff --git a/client/app/components/visualizations/editor/Section.jsx b/client/app/components/visualizations/editor/Section.jsx deleted file mode 100644 index f8ecc19197..0000000000 --- a/client/app/components/visualizations/editor/Section.jsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import cx from "classnames"; - -import "./Section.less"; - -function SectionTitle({ className, children, ...props }) { - if (!children) { - return null; - } - - return ( -

- {children} -

- ); -} - -SectionTitle.propTypes = { - className: PropTypes.string, - children: PropTypes.node, -}; - -SectionTitle.defaultProps = { - className: null, - children: null, -}; - -export default function Section({ className, children, ...props }) { - return ( -
- {children} -
- ); -} - -Section.propTypes = { - className: PropTypes.string, - children: PropTypes.node, -}; - -Section.defaultProps = { - className: null, - children: null, -}; - -Section.Title = SectionTitle; diff --git a/client/app/components/visualizations/editor/Section.less b/client/app/components/visualizations/editor/Section.less deleted file mode 100644 index 7299a10ef1..0000000000 --- a/client/app/components/visualizations/editor/Section.less +++ /dev/null @@ -1,8 +0,0 @@ -.visualization-editor-section-title { - margin-top: 0px; - margin-bottom: 15px; -} - -.visualization-editor-section { - margin-bottom: 15px; -} diff --git a/client/app/components/visualizations/editor/Switch.jsx b/client/app/components/visualizations/editor/Switch.jsx deleted file mode 100644 index 0949d66721..0000000000 --- a/client/app/components/visualizations/editor/Switch.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React, { useMemo } from "react"; -import PropTypes from "prop-types"; -import AntSwitch from "antd/lib/switch"; -import Typography from "antd/lib/typography"; - -import "./Switch.less"; - -export default function Switch({ id, children, disabled, ...props }) { - const fallbackId = useMemo( - () => - `visualization-editor-control-${Math.random() - .toString(36) - .substr(2, 10)}`, - [] - ); - id = id || fallbackId; - - if (children) { - return ( - - ); - } - - return ; -} - -Switch.propTypes = { - id: PropTypes.string, - disabled: PropTypes.bool, - children: PropTypes.node, -}; - -Switch.defaultProps = { - id: null, - disabled: false, - children: null, -}; diff --git a/client/app/components/visualizations/editor/Switch.less b/client/app/components/visualizations/editor/Switch.less deleted file mode 100644 index fa83765743..0000000000 --- a/client/app/components/visualizations/editor/Switch.less +++ /dev/null @@ -1,8 +0,0 @@ -.switch-with-label { - display: flex; - align-items: center; - - .switch-text { - margin-left: 10px; - } -} diff --git a/client/app/components/visualizations/editor/TextArea.jsx b/client/app/components/visualizations/editor/TextArea.jsx deleted file mode 100644 index 855096dc0a..0000000000 --- a/client/app/components/visualizations/editor/TextArea.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import cx from "classnames"; -import AntInput from "antd/lib/input"; -import withControlLabel from "./withControlLabel"; - -import "./TextArea.less"; - -function TextArea({ className, ...otherProps }) { - return ; -} - -export default withControlLabel(TextArea); diff --git a/client/app/components/visualizations/editor/TextArea.less b/client/app/components/visualizations/editor/TextArea.less deleted file mode 100644 index 79bce33b51..0000000000 --- a/client/app/components/visualizations/editor/TextArea.less +++ /dev/null @@ -1,3 +0,0 @@ -.visualization-editor-text-area { - resize: vertical; -} diff --git a/client/app/components/visualizations/editor/context-help.less b/client/app/components/visualizations/editor/context-help.less deleted file mode 100644 index fc00e8fe80..0000000000 --- a/client/app/components/visualizations/editor/context-help.less +++ /dev/null @@ -1,17 +0,0 @@ -a.visualization-editor-context-help { - &, - .ant-typography & { - font: inherit; - color: inherit; - - &:hover, - &:active { - color: #0a6ebd; - } - } -} - -.context-help-default-icon { - margin-left: 5px; - margin-right: 5px; -} diff --git a/client/app/components/visualizations/editor/control-label.less b/client/app/components/visualizations/editor/control-label.less deleted file mode 100644 index 6ea8c80e8c..0000000000 --- a/client/app/components/visualizations/editor/control-label.less +++ /dev/null @@ -1,11 +0,0 @@ -.visualization-editor-control-label { - &.visualization-editor-control-label-horizontal { - label { - margin-bottom: 0; - } - } -} - -.visualization-editor-input { - width: 100% !important; -} diff --git a/client/app/components/visualizations/editor/createTabbedEditor.jsx b/client/app/components/visualizations/editor/createTabbedEditor.jsx deleted file mode 100644 index 585c20dbdd..0000000000 --- a/client/app/components/visualizations/editor/createTabbedEditor.jsx +++ /dev/null @@ -1,51 +0,0 @@ -import { isFunction, map, filter, extend, merge } from "lodash"; -import React from "react"; -import PropTypes from "prop-types"; -import Tabs from "antd/lib/tabs"; -import { EditorPropTypes } from "redash-visualizations/lib"; - -export const UpdateOptionsStrategy = { - replace: (existingOptions, newOptions) => merge({}, newOptions), - shallowMerge: (existingOptions, newOptions) => extend({}, existingOptions, newOptions), - deepMerge: (existingOptions, newOptions) => merge({}, existingOptions, newOptions), -}; - -export function TabbedEditor({ tabs, options, data, onOptionsChange, ...restProps }) { - const optionsChanged = (newOptions, updateStrategy = UpdateOptionsStrategy.deepMerge) => { - onOptionsChange(updateStrategy(options, newOptions)); - }; - - tabs = filter(tabs, tab => (isFunction(tab.isAvailable) ? tab.isAvailable(options, data) : true)); - - return ( - - {map(tabs, ({ key, title, component: Component }) => ( - {title}}> - - - ))} - - ); -} - -TabbedEditor.propTypes = { - ...EditorPropTypes, - tabs: PropTypes.arrayOf( - PropTypes.shape({ - key: PropTypes.string.isRequired, - title: PropTypes.string.isRequired, - isAvailable: PropTypes.func, // (options) => boolean - component: PropTypes.func.isRequired, - }) - ), -}; - -TabbedEditor.defaultProps = { - tabs: [], -}; - -export default function createTabbedEditor(tabs) { - return function TabbedEditorWrapper(props) { - return ; - }; -} diff --git a/client/app/components/visualizations/editor/index.js b/client/app/components/visualizations/editor/index.js deleted file mode 100644 index 27c505759d..0000000000 --- a/client/app/components/visualizations/editor/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import AntSelect from "antd/lib/select"; -import AntInput from "antd/lib/input"; -import AntInputNumber from "antd/lib/input-number"; -import Checkbox from "antd/lib/checkbox"; - -import RedashColorPicker from "@/components/ColorPicker"; -import RedashTextAlignmentSelect from "@/components/TextAlignmentSelect"; - -import withControlLabel, { ControlLabel } from "./withControlLabel"; -import createTabbedEditor from "./createTabbedEditor"; -import Section from "./Section"; -import Switch from "./Switch"; -import TextArea from "./TextArea"; -import ContextHelp from "./ContextHelp"; - -export { Section, ControlLabel, Checkbox, Switch, TextArea, ContextHelp, withControlLabel, createTabbedEditor }; -export const Select = withControlLabel(AntSelect); -export const Input = withControlLabel(AntInput); -export const InputNumber = withControlLabel(AntInputNumber); -export const ColorPicker = withControlLabel(RedashColorPicker); -export const TextAlignmentSelect = withControlLabel(RedashTextAlignmentSelect); diff --git a/client/app/components/visualizations/editor/withControlLabel.jsx b/client/app/components/visualizations/editor/withControlLabel.jsx deleted file mode 100644 index a28f2bc255..0000000000 --- a/client/app/components/visualizations/editor/withControlLabel.jsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { useMemo } from "react"; -import cx from "classnames"; -import PropTypes from "prop-types"; -import hoistNonReactStatics from "hoist-non-react-statics"; -import * as Grid from "antd/lib/grid"; -import Typography from "antd/lib/typography"; - -import "./control-label.less"; - -export function ControlLabel({ layout, label, labelProps, disabled, children }) { - if (layout === "vertical" && label) { - return ( -
- - {children} -
- ); - } - - if (layout === "horizontal" && label) { - return ( - - - - - {children} - - ); - } - - return children; -} - -ControlLabel.propTypes = { - layout: PropTypes.oneOf(["vertical", "horizontal"]), - label: PropTypes.node, - labelProps: PropTypes.object, // eslint-disable-line react/forbid-prop-types - disabled: PropTypes.bool, - children: PropTypes.node, -}; - -ControlLabel.defaultProps = { - layout: "vertical", - label: null, - disabled: false, - children: null, -}; - -export default function withControlLabel(WrappedControl) { - // eslint-disable-next-line react/prop-types - function ControlWrapper({ className, id, layout, label, labelProps, disabled, ...props }) { - const fallbackId = useMemo( - () => - `visualization-editor-control-${Math.random() - .toString(36) - .substr(2, 10)}`, - [] - ); - labelProps = { - ...labelProps, - htmlFor: id || fallbackId, - }; - - return ( - - - - ); - } - - // Copy static methods from `WrappedComponent` - hoistNonReactStatics(ControlWrapper, WrappedControl); - - return ControlWrapper; -} diff --git a/client/app/pages/queries/VisualizationEmbed.jsx b/client/app/pages/queries/VisualizationEmbed.jsx index da5b3f351d..df1c665189 100644 --- a/client/app/pages/queries/VisualizationEmbed.jsx +++ b/client/app/pages/queries/VisualizationEmbed.jsx @@ -8,11 +8,11 @@ import Dropdown from "antd/lib/dropdown"; import Icon from "antd/lib/icon"; import Menu from "antd/lib/menu"; import Tooltip from "antd/lib/tooltip"; +import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; import routeWithApiKeySession from "@/components/ApplicationArea/routeWithApiKeySession"; import { Query } from "@/services/query"; import location from "@/services/location"; import { formatDateTime } from "@/lib/utils"; -import HtmlContent from "@/components/HtmlContent"; import Parameters from "@/components/Parameters"; import { Moment } from "@/components/proptypes"; import TimeAgo from "@/components/TimeAgo"; From efba9aefa019c40a93e07df521ec224684561201 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sat, 25 Apr 2020 21:09:23 -0300 Subject: [PATCH 04/19] Remove antd from deps --- redash-visualizations/package-lock.json | 731 ------------------------ redash-visualizations/package.json | 1 - 2 files changed, 732 deletions(-) diff --git a/redash-visualizations/package-lock.json b/redash-visualizations/package-lock.json index 10781f7c0f..23c1d79f00 100644 --- a/redash-visualizations/package-lock.json +++ b/redash-visualizations/package-lock.json @@ -14,46 +14,6 @@ "turntable-camera-controller": "^3.0.0" } }, - "@ant-design/colors": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.2.2.tgz", - "integrity": "sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==", - "dev": true, - "requires": { - "tinycolor2": "^1.4.1" - } - }, - "@ant-design/icons": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.0.6.tgz", - "integrity": "sha512-Hvly7PhImdZo5+UnpRPSpqcYFttTEE9ELCgir6R9cPe99IHciLv97EZTshYTFp4T6i2q0x9nuSLpG11UFeu4Dg==", - "dev": true, - "requires": { - "@ant-design/colors": "^3.1.0", - "@ant-design/icons-svg": "^4.0.0", - "classnames": "^2.2.6", - "insert-css": "^2.0.0", - "rc-util": "^4.9.0" - } - }, - "@ant-design/icons-svg": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.0.0.tgz", - "integrity": "sha512-Nai+cd3XUrv/z50gSk1FI08j6rENZ1e93rhKeLTBGwa5WrmHvhn2vowa5+voZW2qkXJn1btS6tdvTEDB90M0Pw==", - "dev": true - }, - "@ant-design/react-slick": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.25.5.tgz", - "integrity": "sha512-fusHR9LkarCARvYTN6cG3yz2/Ogf+HTaJ2XEihIjsjgm6uE1aSXycRFEVDpOFP1Aib51Z2Iz3tgg/gL+WbK8rQ==", - "dev": true, - "requires": { - "classnames": "^2.2.5", - "json2mq": "^0.2.0", - "lodash": "^4.17.15", - "resize-observer-polyfill": "^1.5.0" - } - }, "@babel/cli": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.8.4.tgz", @@ -1265,53 +1225,12 @@ "@turf/helpers": "6.x" } }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dev": true, - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, "@types/node": { "version": "13.11.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", "dev": true }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", - "dev": true - }, - "@types/react": { - "version": "16.9.34", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.34.tgz", - "integrity": "sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "csstype": "^2.2.0" - } - }, - "@types/react-lifecycles-compat": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/react-lifecycles-compat/-/react-lifecycles-compat-3.0.1.tgz", - "integrity": "sha512-4KiU5s1Go4xRbf7t6VxUUpBeN5PGjpjpBv9VvET4uiPHC500VNYBclU13f8ehHkHoZL39b2cfwHu6RzbV3b44A==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/shallowequal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/shallowequal/-/shallowequal-1.1.1.tgz", - "integrity": "sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==", - "dev": true - }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -1529,15 +1448,6 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" }, - "add-dom-event-listener": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz", - "integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==", - "dev": true, - "requires": { - "object-assign": "4.x" - } - }, "add-line-numbers": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/add-line-numbers/-/add-line-numbers-1.0.1.tgz", @@ -1658,58 +1568,6 @@ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" }, - "antd": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/antd/-/antd-4.1.4.tgz", - "integrity": "sha512-YRF/nrAq4R+olKRJxEDqeO4xkTvx+U6ovIQjGew1JDiEHMMhSftpvpYg2Iu5hRdFL66uxQk6VYngMttBpuYm9Q==", - "dev": true, - "requires": { - "@ant-design/icons": "^4.0.0", - "@ant-design/react-slick": "~0.25.5", - "array-tree-filter": "^2.1.0", - "classnames": "~2.2.6", - "copy-to-clipboard": "^3.2.0", - "css-animation": "^1.5.0", - "lodash": "^4.17.13", - "moment": "^2.24.0", - "omit.js": "^1.0.2", - "prop-types": "^15.7.2", - "raf": "^3.4.1", - "rc-animate": "~2.10.2", - "rc-cascader": "~1.0.0", - "rc-checkbox": "~2.2.0", - "rc-collapse": "~1.11.3", - "rc-dialog": "~7.6.0", - "rc-drawer": "~3.1.1", - "rc-dropdown": "~3.0.0", - "rc-field-form": "~1.1.0", - "rc-input-number": "~4.5.4", - "rc-mentions": "~1.1.0", - "rc-menu": "~8.0.1", - "rc-notification": "~4.0.0", - "rc-pagination": "~2.2.0", - "rc-picker": "~1.4.0", - "rc-progress": "~2.5.0", - "rc-rate": "~2.5.1", - "rc-resize-observer": "^0.2.0", - "rc-select": "~10.2.0", - "rc-slider": "~9.2.3", - "rc-steps": "~3.5.0", - "rc-switch": "~1.9.0", - "rc-table": "~7.4.2", - "rc-tabs": "~10.1.1", - "rc-tooltip": "~4.0.2", - "rc-tree": "~3.1.0", - "rc-tree-select": "~3.1.0", - "rc-trigger": "~4.0.0", - "rc-upload": "~3.0.0", - "rc-util": "^4.20.0", - "rc-virtual-list": "^1.1.0", - "resize-observer-polyfill": "^1.5.1", - "scroll-into-view-if-needed": "^2.2.20", - "warning": "~4.0.3" - } - }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -1783,12 +1641,6 @@ "resolved": "https://registry.npmjs.org/array-rearrange/-/array-rearrange-2.2.2.tgz", "integrity": "sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w==" }, - "array-tree-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", - "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==", - "dev": true - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -1889,12 +1741,6 @@ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, - "async-validator": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.2.4.tgz", - "integrity": "sha512-mTgzMJixkrh+5t2gbYoua8MLy11GHkQqFE6tbhY5Aqc4jEDGsR4BWP+sVQiYDHtzTMB8WIwI/ypObTVPcTZInw==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2085,24 +1931,6 @@ } } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -2857,27 +2685,12 @@ "compare-cell": "^1.0.0" } }, - "component-classes": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", - "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=", - "dev": true, - "requires": { - "component-indexof": "0.0.3" - } - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, - "component-indexof": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", - "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=", - "dev": true - }, "compute-dims": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/compute-dims/-/compute-dims-1.1.0.tgz", @@ -2890,12 +2703,6 @@ "validate.io-positive-integer": "^1.0.0" } }, - "compute-scroll-into-view": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.13.tgz", - "integrity": "sha512-o+w9w7A98aAFi/GjK8cxSV+CdASuPa2rR5UWs3+yHkJzWqaKoBEufFNWYaXInCSmUfDCVhesG+v9MTWqOjsxFg==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2973,21 +2780,6 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "copy-to-clipboard": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", - "dev": true, - "requires": { - "toggle-selection": "^1.0.6" - } - }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - }, "core-js-compat": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", @@ -3085,16 +2877,6 @@ "randomfill": "^1.0.3" } }, - "css-animation": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz", - "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "component-classes": "^1.2.5" - } - }, "css-font": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz", @@ -3215,12 +2997,6 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, - "csstype": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", - "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", - "dev": true - }, "cubic-hermite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", @@ -3518,12 +3294,6 @@ "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", "dev": true }, - "dom-align": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.11.1.tgz", - "integrity": "sha512-hN42DmUgtweBx0iBjDLO4WtKOMcK8yBmPx/fgdsgQadLuzPu/8co3oLdK5yMmeM/vnUd3yDyV6qV8/NzxBexQg==", - "dev": true - }, "dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", @@ -5822,12 +5592,6 @@ "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", - "dev": true - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -6127,12 +5891,6 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, - "insert-css": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", - "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=", - "dev": true - }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -6521,15 +6279,6 @@ "dev": true, "optional": true }, - "json2mq": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", - "dev": true, - "requires": { - "string-convert": "^0.2.0" - } - }, "json5": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", @@ -7052,22 +6801,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "mini-store": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.2.tgz", - "integrity": "sha512-TM7IQBu+mVssLQReprx7JGftXk0EyaiIWw7yAx6E4SIZRHwgQ8XcG4dINFAaBCBihbYPJyhf7kbz7e5qk1FkuQ==", - "dev": true, - "requires": { - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react-lifecycles-compat": "^3.0.1", - "@types/shallowequal": "^1.1.1", - "hoist-non-react-statics": "^3.3.2", - "prop-types": "^15.6.0", - "react-lifecycles-compat": "^3.0.4", - "shallowequal": "^1.0.2", - "typescript": "^3.8.3" - } - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -7674,15 +7407,6 @@ "has": "^1.0.3" } }, - "omit.js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz", - "integrity": "sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==", - "dev": true, - "requires": { - "babel-runtime": "^6.23.0" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8588,397 +8312,6 @@ "big-rat": "^1.0.3" } }, - "rc-align": { - "version": "3.0.0-rc.1", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-3.0.0-rc.1.tgz", - "integrity": "sha512-GbofumhCUb7SxP410j/fbtR2M9Zml+eoZSdaliZh6R3NhfEj5zP4jcO3HG3S9C9KIcXQQtd/cwVHkb9Y0KU7Hg==", - "dev": true, - "requires": { - "classnames": "2.x", - "dom-align": "^1.7.0", - "rc-util": "^4.12.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-animate": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.10.3.tgz", - "integrity": "sha512-A9qQ5Y8BLlM7EhuCO3fWb/dChndlbWtY/P5QvPqBU7h4r5Q2QsvsbpTGgdYZATRDZbTRnJXXfVk9UtlyS7MBLg==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "classnames": "^2.2.6", - "css-animation": "^1.3.2", - "prop-types": "15.x", - "raf": "^3.4.0", - "rc-util": "^4.15.3", - "react-lifecycles-compat": "^3.0.4" - } - }, - "rc-cascader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.0.1.tgz", - "integrity": "sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ==", - "dev": true, - "requires": { - "array-tree-filter": "^2.1.0", - "rc-trigger": "^4.0.0", - "rc-util": "^4.0.4", - "warning": "^4.0.1" - } - }, - "rc-checkbox": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.2.0.tgz", - "integrity": "sha512-Wjh/nutLA8iIPTT1P9I9KOqlUblVe+CWa3SxMibFySnLyYbMxKNtPhwNcbADPOqzNU0AsCntTduNeJg1n0B5fg==", - "dev": true, - "requires": { - "babel-runtime": "^6.23.0", - "classnames": "2.x" - } - }, - "rc-collapse": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-1.11.8.tgz", - "integrity": "sha512-8EhfPyScTYljkbRuIoHniSwZagD5UPpZ3CToYgoNYWC85L2qCbPYF7+OaC713FOrIkp6NbfNqXsITNxmDAmxog==", - "dev": true, - "requires": { - "classnames": "2.x", - "css-animation": "1.x", - "prop-types": "^15.5.6", - "rc-animate": "2.x", - "react-is": "^16.7.0", - "react-lifecycles-compat": "^3.0.4", - "shallowequal": "^1.1.0" - } - }, - "rc-dialog": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-7.6.1.tgz", - "integrity": "sha512-KUKf+2eZ4YL+lnXMG3hR4ZtIhC9glfH27NtTVz3gcoDIPAf3uUvaXVRNoDCiSi+OGKLyIb/b6EoidFh6nQC5Wg==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "rc-animate": "2.x", - "rc-util": "^4.16.1" - } - }, - "rc-drawer": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-3.1.3.tgz", - "integrity": "sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg==", - "dev": true, - "requires": { - "classnames": "^2.2.6", - "rc-util": "^4.16.1", - "react-lifecycles-compat": "^3.0.4" - } - }, - "rc-dropdown": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.0.2.tgz", - "integrity": "sha512-T3XP4qL6xmkxn8z52YF2SEPoMHPpBiLf0Kty3mjNdRSyKnlu+0F+3bhDHf6gO1msmqrjURaz8sMNAFDcoFHHnw==", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "classnames": "^2.2.6", - "rc-trigger": "^4.0.0" - } - }, - "rc-field-form": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.1.3.tgz", - "integrity": "sha512-m7SUNNaum4pHrUj5MGnymEk3SRitMUZBhnMS0wqWrcL6XqvdTAG5Yz5HjukA6BryaS6nyQOgUVBXMxxNN/XsTQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4", - "async-validator": "^3.0.3", - "rc-util": "^4.17.0", - "warning": "^4.0.3" - } - }, - "rc-hammerjs": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/rc-hammerjs/-/rc-hammerjs-0.6.9.tgz", - "integrity": "sha512-4llgWO3RgLyVbEqUdGsDfzUDqklRlQW5VEhE3x35IvhV+w//VPRG34SBavK3D2mD/UaLKaohgU41V4agiftC8g==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "hammerjs": "^2.0.8", - "prop-types": "^15.5.9" - } - }, - "rc-input-number": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-4.5.6.tgz", - "integrity": "sha512-AXbL4gtQ1mSQnu6v/JtMv3UbGRCzLvQznmf0a7U/SAtZ8+dCEAqD4JpJhkjv73Wog53eRYhw4l7ApdXflc9ymg==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "classnames": "^2.2.0", - "prop-types": "^15.5.7", - "rc-util": "^4.5.1", - "rmc-feedback": "^2.0.0" - } - }, - "rc-mentions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.1.0.tgz", - "integrity": "sha512-uOVMiQ5Jxfo3mbpOZsZt20Alid0268lX9eBR2I/chly0qhNbmSB71iLOHGkbL7zuHd50GF/eSr9fXJJQKUYG1Q==", - "dev": true, - "requires": { - "classnames": "^2.2.6", - "rc-menu": "^8.0.1", - "rc-trigger": "^4.0.0", - "rc-util": "^4.6.0" - } - }, - "rc-menu": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.0.3.tgz", - "integrity": "sha512-a37l9MfzjXt8/q5en6ukjD2PoVsHCzWeRPdFK9eWi6hF5/9M3mfxgUt1LruQvaJKMQUxDyN5+4M8FsYULXJALw==", - "dev": true, - "requires": { - "classnames": "2.x", - "mini-store": "^3.0.1", - "rc-animate": "^2.10.1", - "rc-trigger": "^4.0.0", - "rc-util": "^4.13.0", - "resize-observer-polyfill": "^1.5.0", - "scroll-into-view-if-needed": "^2.2.20", - "shallowequal": "^1.1.0" - } - }, - "rc-notification": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.0.0.tgz", - "integrity": "sha512-In9FimkJY+JSIq3/eopPfBpQQr2Zugq5i9Aw9vdiNCGCsAsSO9bGq2dPsn8bamOydNrhc3djljGfmxUUMbcZnA==", - "dev": true, - "requires": { - "classnames": "2.x", - "rc-animate": "2.x", - "rc-util": "^4.0.4" - } - }, - "rc-pagination": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-2.2.0.tgz", - "integrity": "sha512-fXempMD/kvHu8tsiW70uPjn1pI4mdD62xFG9drcBh17gj5CbCjazrjpWS615RSauk3b2BBgIcAJzREAMvlAkFQ==", - "dev": true, - "requires": { - "classnames": "^2.2.1" - } - }, - "rc-picker": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-1.4.8.tgz", - "integrity": "sha512-FZ4XnpYBxn4wSzsbnMHK0dqbxkRD1zXE6DNGlevrBnsD7nOrzGeDw67McW4tBR5RjVeGXS1Fzf+Y+glpYWJmkw==", - "dev": true, - "requires": { - "classnames": "^2.2.1", - "moment": "^2.24.0", - "rc-trigger": "^4.0.0", - "rc-util": "^4.17.0", - "shallowequal": "^1.1.0" - } - }, - "rc-progress": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-2.5.2.tgz", - "integrity": "sha512-ajI+MJkbBz9zYDuE9GQsY5gsyqPF7HFioZEDZ9Fmc+ebNZoiSeSJsTJImPFCg0dW/5WiRGUy2F69SX1aPtSJgA==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "prop-types": "^15.5.8" - } - }, - "rc-rate": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.5.1.tgz", - "integrity": "sha512-3iJkNJT8xlHklPCdeZtUZmJmRVUbr6AHRlfSsztfYTXVlHrv2TcPn3XkHsH+12j812WVB7gvilS2j3+ffjUHXg==", - "dev": true, - "requires": { - "classnames": "^2.2.5", - "prop-types": "^15.5.8", - "rc-util": "^4.3.0", - "react-lifecycles-compat": "^3.0.4" - } - }, - "rc-resize-observer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-0.2.1.tgz", - "integrity": "sha512-GENTRkL3lq05ilrjTxPpHUPrKTC9D7XqUGesSXgi/GyO4j/jKIjLPn7zuZOcJ5QmN5QGRe24IaVWPZHQPE6vLw==", - "dev": true, - "requires": { - "classnames": "^2.2.1", - "rc-util": "^4.14.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-select": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-10.2.4.tgz", - "integrity": "sha512-PtfAHQRXof5gX1qEYQc8GIgroajtzU3mcMGbqM1aE1jqaZ4r+p0GJy3rabXoNANsKH7jUV5+zYJb5VhTxj2vmQ==", - "dev": true, - "requires": { - "classnames": "2.x", - "rc-animate": "^2.10.0", - "rc-trigger": "^4.0.0", - "rc-util": "^4.20.0", - "rc-virtual-list": "^1.1.2", - "warning": "^4.0.3" - } - }, - "rc-slider": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.2.4.tgz", - "integrity": "sha512-wSr7vz+WtzzGqsGU2rTQ4mmLz9fkuIDMPYMYm8ygYFvxQ2Rh4uRhOWHYI0R8krNK5k1bGycckYxmQqUIvLAh3w==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "classnames": "^2.2.5", - "rc-tooltip": "^4.0.0", - "rc-util": "^4.0.4", - "shallowequal": "^1.1.0", - "warning": "^4.0.3" - } - }, - "rc-steps": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-3.5.0.tgz", - "integrity": "sha512-2Vkkrpa7PZbg7qPsqTNzVDov4u78cmxofjjnIHiGB9+9rqKS8oTLPzbW2uiWDr3Lk+yGwh8rbpGO1E6VAgBCOg==", - "dev": true, - "requires": { - "babel-runtime": "^6.23.0", - "classnames": "^2.2.3", - "lodash": "^4.17.5", - "prop-types": "^15.5.7" - } - }, - "rc-switch": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-1.9.0.tgz", - "integrity": "sha512-Isas+egaK6qSk64jaEw4GgPStY4umYDbT7ZY93bZF1Af+b/JEsKsJdNOU2qG3WI0Z6tXo2DDq0kJCv8Yhu0zww==", - "dev": true, - "requires": { - "classnames": "^2.2.1", - "prop-types": "^15.5.6", - "react-lifecycles-compat": "^3.0.4" - } - }, - "rc-table": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.4.5.tgz", - "integrity": "sha512-lQS9izhGmgyCVK05imUrl32lBS9g2f3hB8LOKOof19JWCULKuYL5D3lLpaZSpCTecRYfONYNpgR7mZs7FOnYSQ==", - "dev": true, - "requires": { - "classnames": "^2.2.5", - "component-classes": "^1.2.6", - "lodash": "^4.17.5", - "prop-types": "^15.5.8", - "raf": "^3.4.1", - "rc-resize-observer": "^0.2.0", - "rc-util": "^4.20.1", - "react-lifecycles-compat": "^3.0.2", - "shallowequal": "^1.1.0" - } - }, - "rc-tabs": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-10.1.1.tgz", - "integrity": "sha512-dOFeaYil3d6zV3ZtGZWfRf7zwyqUQ48cl67/Y/03SsBWEdYgfZzlgjfHqmUT+V7L7CvhQ5lIQyYpj4EthkgKCg==", - "dev": true, - "requires": { - "classnames": "2.x", - "lodash": "^4.17.5", - "rc-hammerjs": "~0.6.0", - "resize-observer-polyfill": "^1.5.1", - "warning": "^4.0.3" - } - }, - "rc-tooltip": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-4.0.3.tgz", - "integrity": "sha512-HNyBh9/fPdds0DXja8JQX0XTIHmZapB3lLzbdn74aNSxXG1KUkt+GK4X1aOTRY5X9mqm4uUKdeFrn7j273H8gw==", - "dev": true, - "requires": { - "rc-trigger": "^4.0.0" - } - }, - "rc-tree": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-3.1.5.tgz", - "integrity": "sha512-LOUfsJg5XxtA4FKgGkuVwnbBlnh3VVtySF7LMp4ko0n8oIUBYnn2vs6WG41kuH0V4tLTlQhvCFup/6JEKL01sg==", - "dev": true, - "requires": { - "classnames": "2.x", - "prop-types": "^15.5.8", - "rc-animate": "^2.9.2", - "rc-util": "^4.11.0", - "rc-virtual-list": "^1.1.0", - "react-lifecycles-compat": "^3.0.4" - } - }, - "rc-tree-select": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-3.1.3.tgz", - "integrity": "sha512-VQDr+qLCCJ9V/4ewnp3crMT2N7iJV58V0uWVA3nGJxVuxhSj8TPHFZLnyMh6vaNrQsrY6eBp/x1y6nEJBjnVQg==", - "dev": true, - "requires": { - "classnames": "2.x", - "rc-select": "^10.1.0", - "rc-tree": "^3.1.0", - "rc-util": "^4.17.0" - } - }, - "rc-trigger": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-4.0.2.tgz", - "integrity": "sha512-to5S1NhK10rWHIgQpoQdwIhuDc2Ok4R4/dh5NLrDt6C+gqkohsdBCYiPk97Z+NwGhRU8N+dbf251bivX8DkzQg==", - "dev": true, - "requires": { - "classnames": "^2.2.6", - "prop-types": "15.x", - "raf": "^3.4.1", - "rc-align": "^3.0.0-rc.0", - "rc-animate": "^2.10.2", - "rc-util": "^4.20.0" - } - }, - "rc-upload": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-3.0.4.tgz", - "integrity": "sha512-dTCvj1iHxjHG0qo5UyN2ZmtueG9GG3xrOhOwnjsehaoOvl0TOjLbHkUIPPqLZk+wHb57Ue4KB7c3+IMgkDoBvw==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "classnames": "^2.2.5" - } - }, - "rc-util": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.20.3.tgz", - "integrity": "sha512-NBBc9Ad5yGAVTp4jV+pD7tXQGqHxGM2onPSZFyVoJ5fuvRF+ZgzSjZ6RXLPE0pVVISRJ07h+APgLJPBcAeZQlg==", - "dev": true, - "requires": { - "add-dom-event-listener": "^1.1.0", - "prop-types": "^15.5.10", - "react-is": "^16.12.0", - "react-lifecycles-compat": "^3.0.4", - "shallowequal": "^1.1.0" - } - }, - "rc-virtual-list": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-1.1.2.tgz", - "integrity": "sha512-+WwxrtmBta7vcPCty7MtgilBmbxSGwN28Y8o+MG3GkHZccV0tXT+PLnAB+5WOjhhH10iFq+pzviRcXgcZ1x4OA==", - "dev": true, - "requires": { - "classnames": "^2.2.6", - "raf": "^3.4.1", - "rc-util": "^4.8.0" - } - }, "react-draggable": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.2.tgz", @@ -8993,12 +8326,6 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", - "dev": true - }, "react-pivottable": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/react-pivottable/-/react-pivottable-0.9.0.tgz", @@ -9338,12 +8665,6 @@ "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==", "dev": true }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "dev": true - }, "resolve": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", @@ -9450,16 +8771,6 @@ "inherits": "^2.0.1" } }, - "rmc-feedback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rmc-feedback/-/rmc-feedback-2.0.0.tgz", - "integrity": "sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==", - "dev": true, - "requires": { - "babel-runtime": "6.x", - "classnames": "^2.2.5" - } - }, "robust-compress": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/robust-compress/-/robust-compress-1.0.0.tgz", @@ -9622,15 +8933,6 @@ "ajv-keywords": "^3.1.0" } }, - "scroll-into-view-if-needed": { - "version": "2.2.24", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.24.tgz", - "integrity": "sha512-vsC6SzyIZUyJG8o4nbUDCiIwsPdH6W/FVmjT2avR2hp/yzS53JjGmg/bKD20TkoNajbu5dAQN4xR7yes4qhwtQ==", - "dev": true, - "requires": { - "compute-scroll-into-view": "^1.0.13" - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -9693,12 +8995,6 @@ "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "dev": true - }, "sharkdown": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/sharkdown/-/sharkdown-0.1.1.tgz", @@ -10281,12 +9577,6 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, - "string-convert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=", - "dev": true - }, "string-split-by": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", @@ -10765,12 +10055,6 @@ "to-array-buffer": "^3.0.0" } }, - "toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", - "dev": true - }, "topojson-client": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-2.1.0.tgz", @@ -10896,12 +10180,6 @@ "dup": "^1.0.0" } }, - "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", - "dev": true - }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -11293,15 +10571,6 @@ "pbf": "^3.0.5" } }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "watchpack": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", diff --git a/redash-visualizations/package.json b/redash-visualizations/package.json index 4f9c7357fe..b3ab4af1dc 100644 --- a/redash-visualizations/package.json +++ b/redash-visualizations/package.json @@ -29,7 +29,6 @@ "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/preset-env": "^7.9.0", "@babel/preset-react": "^7.9.4", - "antd": "^4.1.4", "babel-loader": "^8.1.0", "babel-plugin-module-resolver": "^4.0.0", "css-loader": "^3.5.2", From 8503dba63b8bd739ee8a2d1312b5530abac8f847 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sat, 25 Apr 2020 21:25:57 -0300 Subject: [PATCH 05/19] Remove p-r-5 from table utils --- .../src/visualizations/table/utils.js | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/redash-visualizations/src/visualizations/table/utils.js b/redash-visualizations/src/visualizations/table/utils.js index 12b2f6376b..f60f6e9dd7 100644 --- a/redash-visualizations/src/visualizations/table/utils.js +++ b/redash-visualizations/src/visualizations/table/utils.js @@ -17,7 +17,7 @@ function nextOrderByDirection(direction) { } function toggleOrderBy(columnName, orderBy = [], multiColumnSort = false) { - const index = findIndex(orderBy, i => i.name === columnName); + const index = findIndex(orderBy, (i) => i.name === columnName); const item = { name: columnName, direction: "ascend" }; if (index >= 0) { item.direction = nextOrderByDirection(orderBy[index].direction); @@ -25,7 +25,7 @@ function toggleOrderBy(columnName, orderBy = [], multiColumnSort = false) { if (multiColumnSort) { if (!item.direction) { - return filter(orderBy, i => i.name !== columnName); + return filter(orderBy, (i) => i.name !== columnName); } if (index >= 0) { orderBy[index] = item; @@ -52,7 +52,7 @@ export function prepareColumns(columns, searchInput, orderBy, onOrderByChange) { const isMultiColumnSort = orderBy.length > 1; const orderByInfo = getOrderByInfo(orderBy); - let tableColumns = map(columns, column => { + let tableColumns = map(columns, (column) => { const isAscend = orderByInfo[column.name] && orderByInfo[column.name].direction === "ascend"; const isDescend = orderByInfo[column.name] && orderByInfo[column.name].direction === "descend"; @@ -65,11 +65,13 @@ export function prepareColumns(columns, searchInput, orderBy, onOrderByChange) { title: ( {column.description && ( - -
- -
-
+ + +
+ +
+
+
)}
@@ -96,7 +98,7 @@ export function prepareColumns(columns, searchInput, orderBy, onOrderByChange) { className: cx("ant-table-column-has-actions ant-table-column-has-sorters", { "table-visualization-column-is-sorted": isAscend || isDescend, }), - onClick: event => onOrderByChange(toggleOrderBy(column.name, orderBy, event.shiftKey)), + onClick: (event) => onOrderByChange(toggleOrderBy(column.name, orderBy, event.shiftKey)), }), }; @@ -151,20 +153,16 @@ export function initRows(rows) { export function filterRows(rows, searchTerm, searchColumns) { if (searchTerm !== "" && searchColumns.length > 0) { searchTerm = searchTerm.toUpperCase(); - const matchFields = map(searchColumns, column => { + const matchFields = map(searchColumns, (column) => { const initColumn = ColumnTypes[column.displayAs]; const { prepareData } = initColumn(column); - return row => { + return (row) => { const { text } = prepareData(row); - return ( - toString(text) - .toUpperCase() - .indexOf(searchTerm) >= 0 - ); + return toString(text).toUpperCase().indexOf(searchTerm) >= 0; }; }); - return filter(rows, row => some(matchFields, match => match(row.record))); + return filter(rows, (row) => some(matchFields, (match) => match(row.record))); } return rows; } From bfbd8a294725edfca7815f103fa29306dcd90005 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sat, 25 Apr 2020 22:08:53 -0300 Subject: [PATCH 06/19] Remove visualization deps from package.json --- package.json | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/package.json b/package.json index 8301e44fe4..45ed85093d 100644 --- a/package.json +++ b/package.json @@ -42,21 +42,15 @@ "@types/react-dom": "^16.0.5", "antd": "^3.19.7", "axios": "^0.19.0", - "beautifymarker": "^1.0.7", "bootstrap": "^3.3.7", "brace": "^0.11.0", - "chroma-js": "^1.3.6", "classnames": "^2.2.6", "d3": "^3.5.17", - "d3-cloud": "^1.2.4", "debug": "^3.1.0", "dompurify": "^2.0.7", "font-awesome": "^4.7.0", "history": "^4.10.1", "hoist-non-react-statics": "^3.3.0", - "leaflet": "^1.2.0", - "leaflet-fullscreen": "^1.0.2", - "leaflet.markercluster": "^1.1.0", "lodash": "^4.17.10", "markdown": "0.5.0", "material-design-iconic-font": "^2.2.0", @@ -65,19 +59,15 @@ "mustache": "^2.3.0", "numeral": "^2.0.6", "pace-progress": "git+https://github.com/getredash/pace.git", - "plotly.js": "1.52.3", "prop-types": "^15.6.1", "query-string": "^6.9.0", "react": "^16.8.3", "react-ace": "^6.1.0", "react-dom": "^16.8.3", "react-grid-layout": "^0.18.2", - "react-pivottable": "^0.9.0", "react-resizable": "^1.10.1", - "react-sortable-hoc": "^1.10.1", "react-virtualized": "^9.21.2", "redash-visualizations": "file:redash-visualizations", - "tinycolor2": "^1.4.1", "universal-router": "^8.3.0", "use-debounce": "^3.1.0", "use-media": "^1.4.0" From a9f246623b4d564f69601f90cb43468397d815a8 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sun, 26 Apr 2020 10:11:00 -0300 Subject: [PATCH 07/19] Rename package and change its version --- .../app/components/ApplicationArea/Router.jsx | 2 +- .../routeWithApiKeySession.jsx | 2 +- .../ApplicationArea/routeWithUserSession.jsx | 2 +- client/app/components/Parameters.jsx | 2 +- client/app/components/QueryLink.jsx | 2 +- .../components/dashboards/TextboxDialog.jsx | 2 +- .../dashboard-widget/TextboxWidget.jsx | 2 +- .../dashboard-widget/VisualizationWidget.jsx | 2 +- .../EditVisualizationDialog.jsx | 2 +- .../visualizations/VisualizationName.jsx | 2 +- .../visualizations/VisualizationRenderer.jsx | 2 +- .../visualizationComponents.jsx | 6 +- client/app/config/index.js | 2 +- .../app/pages/queries/VisualizationEmbed.jsx | 4 +- client/app/services/widget.js | 2 +- package-lock.json | 563 +++++++++++------- package.json | 2 +- {redash-visualizations => viz-lib}/.babelrc | 0 {redash-visualizations => viz-lib}/.gitignore | 0 .../jsconfig.json | 0 .../package-lock.json | 4 +- .../package.json | 6 +- .../prettier.config.js | 0 .../src/components/ColorPicker/Input.jsx | 0 .../src/components/ColorPicker/Label.jsx | 0 .../src/components/ColorPicker/Swatch.jsx | 0 .../src/components/ColorPicker/index.jsx | 0 .../src/components/ColorPicker/index.less | 0 .../src/components/ColorPicker/input.less | 0 .../src/components/ColorPicker/label.less | 0 .../src/components/ColorPicker/swatch.less | 0 .../src/components/ColorPicker/utils.js | 0 .../src/components/ErrorBoundary.jsx | 0 .../src/components/HtmlContent.jsx | 0 .../components/TextAlignmentSelect/index.jsx | 0 .../components/TextAlignmentSelect/index.less | 0 .../JsonViewInteractive.jsx | 0 .../json-view-interactive.less | 0 .../src/components/sortable/index.jsx | 0 .../src/components/sortable/style.less | 0 .../visualizations/editor/ContextHelp.jsx | 0 .../visualizations/editor/Section.jsx | 0 .../visualizations/editor/Section.less | 0 .../visualizations/editor/Switch.jsx | 0 .../visualizations/editor/Switch.less | 0 .../visualizations/editor/TextArea.jsx | 0 .../visualizations/editor/TextArea.less | 0 .../visualizations/editor/context-help.less | 0 .../visualizations/editor/control-label.less | 0 .../editor/createTabbedEditor.jsx | 0 .../components/visualizations/editor/index.js | 0 .../editor/withControlLabel.jsx | 0 .../src/index.js | 0 .../src/lib/chooseTextColorForBackground.js | 0 .../src/lib/hooks/useMemoWithDeepCompare.js | 0 .../src/lib/utils.js | 0 .../src/lib/value-format.js | 0 .../src/services/resizeObserver.js | 0 .../src/services/sanitize.js | 0 .../src/visualizations/ColorPalette.js | 0 .../src/visualizations/Editor.jsx | 0 .../src/visualizations/Renderer.jsx | 0 .../src/visualizations/box-plot/Editor.jsx | 0 .../src/visualizations/box-plot/Renderer.jsx | 0 .../src/visualizations/box-plot/d3box.js | 0 .../src/visualizations/box-plot/index.js | 0 .../src/visualizations/box-plot/renderer.less | 0 .../chart/Editor/AxisSettings.jsx | 0 .../chart/Editor/ChartTypeSelect.jsx | 0 .../chart/Editor/ColorsSettings.jsx | 0 .../chart/Editor/ColorsSettings.test.js | 0 .../chart/Editor/ColumnMappingSelect.jsx | 0 .../chart/Editor/CustomChartSettings.jsx | 0 .../chart/Editor/DataLabelsSettings.jsx | 0 .../chart/Editor/DataLabelsSettings.test.js | 0 .../chart/Editor/DefaultColorsSettings.jsx | 0 .../chart/Editor/GeneralSettings.jsx | 0 .../chart/Editor/GeneralSettings.test.js | 0 .../chart/Editor/HeatmapColorsSettings.jsx | 0 .../chart/Editor/PieColorsSettings.jsx | 0 .../chart/Editor/SeriesSettings.jsx | 0 .../chart/Editor/SeriesSettings.test.js | 0 .../chart/Editor/XAxisSettings.jsx | 0 .../chart/Editor/XAxisSettings.test.js | 0 .../chart/Editor/YAxisSettings.jsx | 0 .../chart/Editor/YAxisSettings.test.js | 0 .../__snapshots__/ColorsSettings.test.js.snap | 0 .../DataLabelsSettings.test.js.snap | 0 .../GeneralSettings.test.js.snap | 0 .../__snapshots__/SeriesSettings.test.js.snap | 0 .../__snapshots__/XAxisSettings.test.js.snap | 0 .../__snapshots__/YAxisSettings.test.js.snap | 0 .../visualizations/chart/Editor/editor.less | 0 .../src/visualizations/chart/Editor/index.jsx | 0 .../visualizations/chart/Editor/index.test.js | 0 .../chart/Renderer/CustomPlotlyChart.jsx | 0 .../chart/Renderer/PlotlyChart.jsx | 0 .../visualizations/chart/Renderer/index.jsx | 0 .../chart/Renderer/renderer.less | 0 .../getChartData/multiple-series-grouped.json | 0 .../multiple-series-multiple-y.json | 0 .../getChartData/multiple-series-sorted.json | 0 .../fixtures/getChartData/single-series.json | 0 .../src/visualizations/chart/getChartData.js | 0 .../visualizations/chart/getChartData.test.js | 0 .../src/visualizations/chart/getOptions.js | 0 .../src/visualizations/chart/index.js | 0 .../chart/plotly/applyLayoutFixes.js | 0 .../chart/plotly/customChartUtils.js | 0 .../fixtures/prepareData/bar/default.json | 0 .../fixtures/prepareData/bar/normalized.json | 0 .../fixtures/prepareData/bar/stacked.json | 0 .../fixtures/prepareData/box/default.json | 0 .../fixtures/prepareData/box/with-points.json | 0 .../fixtures/prepareData/bubble/default.json | 0 .../fixtures/prepareData/heatmap/default.json | 0 .../prepareData/heatmap/reversed.json | 0 .../prepareData/heatmap/sorted-reversed.json | 0 .../fixtures/prepareData/heatmap/sorted.json | 0 .../prepareData/heatmap/with-labels.json | 0 .../prepareData/line-area/default.json | 0 .../line-area/keep-missing-values.json | 0 .../line-area/missing-values-0.json | 0 .../line-area/normalized-stacked.json | 0 .../prepareData/line-area/normalized.json | 0 .../prepareData/line-area/stacked.json | 0 .../prepareData/pie/custom-tooltip.json | 0 .../fixtures/prepareData/pie/default.json | 0 .../prepareData/pie/without-labels.json | 0 .../fixtures/prepareData/pie/without-x.json | 0 .../fixtures/prepareData/scatter/default.json | 0 .../prepareData/scatter/without-labels.json | 0 .../prepareLayout/box-single-axis.json | 0 .../prepareLayout/box-with-second-axis.json | 0 .../prepareLayout/default-single-axis.json | 0 .../default-with-second-axis.json | 0 .../prepareLayout/default-with-stacking.json | 0 .../prepareLayout/default-without-legend.json | 0 .../prepareLayout/pie-multiple-series.json | 0 .../pie-without-annotations.json | 0 .../plotly/fixtures/prepareLayout/pie.json | 0 .../src/visualizations/chart/plotly/index.js | 0 .../chart/plotly/prepareData.js | 0 .../chart/plotly/prepareData.test.js | 0 .../chart/plotly/prepareDefaultData.js | 0 .../chart/plotly/prepareHeatmapData.js | 0 .../chart/plotly/prepareLayout.js | 0 .../chart/plotly/prepareLayout.test.js | 0 .../chart/plotly/preparePieData.js | 0 .../visualizations/chart/plotly/updateData.js | 0 .../src/visualizations/chart/plotly/utils.js | 0 .../visualizations/choropleth/ColorPalette.js | 0 .../choropleth/Editor/BoundsSettings.jsx | 0 .../choropleth/Editor/ColorsSettings.jsx | 0 .../choropleth/Editor/FormatSettings.jsx | 0 .../choropleth/Editor/GeneralSettings.jsx | 0 .../visualizations/choropleth/Editor/index.js | 0 .../visualizations/choropleth/Editor/utils.js | 0 .../choropleth/Renderer/Legend.jsx | 0 .../choropleth/Renderer/index.jsx | 0 .../choropleth/Renderer/initChoropleth.js | 0 .../choropleth/Renderer/renderer.less | 0 .../choropleth/Renderer/utils.js | 0 .../visualizations/choropleth/getOptions.js | 0 .../src/visualizations/choropleth/index.js | 0 .../choropleth/maps/countries.geo.json | 0 .../maps/japan.prefectures.geo.json | 0 .../src/visualizations/cohort/Cornelius.jsx | 0 .../cohort/Editor/AppearanceSettings.jsx | 0 .../cohort/Editor/ColorsSettings.jsx | 0 .../cohort/Editor/ColumnsSettings.jsx | 0 .../cohort/Editor/OptionsSettings.jsx | 0 .../src/visualizations/cohort/Editor/index.js | 0 .../src/visualizations/cohort/Renderer.jsx | 0 .../src/visualizations/cohort/cornelius.less | 0 .../src/visualizations/cohort/getOptions.js | 0 .../src/visualizations/cohort/index.js | 0 .../src/visualizations/cohort/prepareData.js | 0 .../src/visualizations/cohort/renderer.less | 0 .../counter/Editor/FormatSettings.jsx | 0 .../counter/Editor/GeneralSettings.jsx | 0 .../visualizations/counter/Editor/index.js | 0 .../src/visualizations/counter/Renderer.jsx | 0 .../src/visualizations/counter/index.js | 0 .../src/visualizations/counter/render.less | 0 .../src/visualizations/counter/utils.js | 0 .../src/visualizations/counter/utils.test.js | 0 .../details/DetailsRenderer.jsx | 0 .../src/visualizations/details/details.less | 0 .../src/visualizations/details/index.js | 0 .../funnel/Editor/AppearanceSettings.jsx | 0 .../funnel/Editor/GeneralSettings.jsx | 0 .../src/visualizations/funnel/Editor/index.js | 0 .../funnel/Renderer/FunnelBar.jsx | 0 .../funnel/Renderer/funnel-bar.less | 0 .../visualizations/funnel/Renderer/index.jsx | 0 .../visualizations/funnel/Renderer/index.less | 0 .../funnel/Renderer/prepareData.js | 0 .../src/visualizations/funnel/getOptions.js | 0 .../src/visualizations/funnel/index.js | 0 .../src/visualizations/index.js | 0 .../map/Editor/FormatSettings.jsx | 0 .../map/Editor/GeneralSettings.jsx | 0 .../map/Editor/GroupsSettings.jsx | 0 .../map/Editor/StyleSettings.jsx | 0 .../src/visualizations/map/Editor/index.js | 0 .../src/visualizations/map/Renderer.jsx | 0 .../src/visualizations/map/getOptions.js | 0 .../src/visualizations/map/index.js | 0 .../src/visualizations/map/initMap.js | 0 .../src/visualizations/map/prepareData.js | 0 .../src/visualizations/pivot/Editor.jsx | 0 .../src/visualizations/pivot/Renderer.jsx | 0 .../src/visualizations/pivot/index.js | 0 .../src/visualizations/pivot/renderer.less | 0 .../src/visualizations/prop-types.js | 0 .../registeredVisualizations.js | 0 .../src/visualizations/sankey/Editor.jsx | 0 .../src/visualizations/sankey/Renderer.jsx | 0 .../src/visualizations/sankey/d3sankey.js | 0 .../src/visualizations/sankey/index.js | 0 .../src/visualizations/sankey/initSankey.js | 0 .../src/visualizations/sankey/renderer.less | 0 .../src/visualizations/sunburst/Editor.jsx | 0 .../src/visualizations/sunburst/Renderer.jsx | 0 .../src/visualizations/sunburst/index.js | 0 .../visualizations/sunburst/initSunburst.js | 0 .../src/visualizations/sunburst/renderer.less | 0 .../table/Editor/ColumnEditor.jsx | 0 .../table/Editor/ColumnsSettings.jsx | 0 .../table/Editor/ColumnsSettings.test.js | 0 .../table/Editor/GridSettings.jsx | 0 .../table/Editor/GridSettings.test.js | 0 .../ColumnsSettings.test.js.snap | 0 .../__snapshots__/GridSettings.test.js.snap | 0 .../visualizations/table/Editor/editor.less | 0 .../src/visualizations/table/Editor/index.jsx | 0 .../src/visualizations/table/Renderer.jsx | 0 .../__snapshots__/boolean.test.js.snap | 0 .../__snapshots__/datetime.test.js.snap | 0 .../columns/__snapshots__/image.test.js.snap | 0 .../columns/__snapshots__/link.test.js.snap | 0 .../columns/__snapshots__/number.test.js.snap | 0 .../columns/__snapshots__/text.test.js.snap | 0 .../visualizations/table/columns/boolean.jsx | 0 .../table/columns/boolean.test.js | 0 .../visualizations/table/columns/datetime.jsx | 0 .../table/columns/datetime.test.js | 0 .../visualizations/table/columns/image.jsx | 0 .../table/columns/image.test.js | 0 .../src/visualizations/table/columns/index.js | 0 .../src/visualizations/table/columns/json.jsx | 0 .../src/visualizations/table/columns/link.jsx | 0 .../visualizations/table/columns/link.test.js | 0 .../visualizations/table/columns/number.jsx | 0 .../table/columns/number.test.js | 0 .../src/visualizations/table/columns/text.jsx | 0 .../visualizations/table/columns/text.test.js | 0 .../src/visualizations/table/getOptions.js | 0 .../src/visualizations/table/index.js | 0 .../src/visualizations/table/renderer.less | 0 .../src/visualizations/table/utils.js | 0 .../src/visualizations/variables.less | 0 .../visualizations/visualizationsSettings.js | 0 .../src/visualizations/word-cloud/Editor.jsx | 0 .../visualizations/word-cloud/Renderer.jsx | 0 .../src/visualizations/word-cloud/index.js | 0 .../visualizations/word-cloud/renderer.less | 0 .../webpack.config.js | 0 269 files changed, 387 insertions(+), 224 deletions(-) rename {redash-visualizations => viz-lib}/.babelrc (100%) rename {redash-visualizations => viz-lib}/.gitignore (100%) rename {redash-visualizations => viz-lib}/jsconfig.json (100%) rename {redash-visualizations => viz-lib}/package-lock.json (99%) rename {redash-visualizations => viz-lib}/package.json (96%) rename {redash-visualizations => viz-lib}/prettier.config.js (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/Input.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/Label.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/Swatch.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/index.less (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/input.less (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/label.less (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/swatch.less (100%) rename {redash-visualizations => viz-lib}/src/components/ColorPicker/utils.js (100%) rename {redash-visualizations => viz-lib}/src/components/ErrorBoundary.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/HtmlContent.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/TextAlignmentSelect/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/TextAlignmentSelect/index.less (100%) rename {redash-visualizations => viz-lib}/src/components/json-view-interactive/JsonViewInteractive.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/json-view-interactive/json-view-interactive.less (100%) rename {redash-visualizations => viz-lib}/src/components/sortable/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/sortable/style.less (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/ContextHelp.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/Section.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/Section.less (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/Switch.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/Switch.less (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/TextArea.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/TextArea.less (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/context-help.less (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/control-label.less (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/createTabbedEditor.jsx (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/index.js (100%) rename {redash-visualizations => viz-lib}/src/components/visualizations/editor/withControlLabel.jsx (100%) rename {redash-visualizations => viz-lib}/src/index.js (100%) rename {redash-visualizations => viz-lib}/src/lib/chooseTextColorForBackground.js (100%) rename {redash-visualizations => viz-lib}/src/lib/hooks/useMemoWithDeepCompare.js (100%) rename {redash-visualizations => viz-lib}/src/lib/utils.js (100%) rename {redash-visualizations => viz-lib}/src/lib/value-format.js (100%) rename {redash-visualizations => viz-lib}/src/services/resizeObserver.js (100%) rename {redash-visualizations => viz-lib}/src/services/sanitize.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/ColorPalette.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/Editor.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/box-plot/Editor.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/box-plot/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/box-plot/d3box.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/box-plot/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/box-plot/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/AxisSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/ChartTypeSelect.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/ColorsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/ColorsSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/ColumnMappingSelect.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/CustomChartSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/DataLabelsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/DataLabelsSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/DefaultColorsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/GeneralSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/GeneralSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/HeatmapColorsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/PieColorsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/SeriesSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/SeriesSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/XAxisSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/XAxisSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/YAxisSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/YAxisSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/editor.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Editor/index.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Renderer/CustomPlotlyChart.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Renderer/PlotlyChart.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Renderer/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/Renderer/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/fixtures/getChartData/single-series.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/getChartData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/getChartData.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/getOptions.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/applyLayoutFixes.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/customChartUtils.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/bar/default.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/box/default.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/pie/default.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/prepareData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/prepareData.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/prepareDefaultData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/prepareHeatmapData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/prepareLayout.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/prepareLayout.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/preparePieData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/updateData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/chart/plotly/utils.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/ColorPalette.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Editor/BoundsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Editor/ColorsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Editor/FormatSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Editor/GeneralSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Editor/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Editor/utils.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Renderer/Legend.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Renderer/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Renderer/initChoropleth.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Renderer/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/Renderer/utils.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/getOptions.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/maps/countries.geo.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/choropleth/maps/japan.prefectures.geo.json (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/Cornelius.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/Editor/AppearanceSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/Editor/ColorsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/Editor/ColumnsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/Editor/OptionsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/Editor/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/cornelius.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/getOptions.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/prepareData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/cohort/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/Editor/FormatSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/Editor/GeneralSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/Editor/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/render.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/utils.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/counter/utils.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/details/DetailsRenderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/details/details.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/details/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Editor/AppearanceSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Editor/GeneralSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Editor/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Renderer/FunnelBar.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Renderer/funnel-bar.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Renderer/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Renderer/index.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/Renderer/prepareData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/getOptions.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/funnel/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/Editor/FormatSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/Editor/GeneralSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/Editor/GroupsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/Editor/StyleSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/Editor/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/getOptions.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/initMap.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/map/prepareData.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/pivot/Editor.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/pivot/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/pivot/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/pivot/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/prop-types.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/registeredVisualizations.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sankey/Editor.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sankey/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sankey/d3sankey.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sankey/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sankey/initSankey.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sankey/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sunburst/Editor.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sunburst/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sunburst/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sunburst/initSunburst.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/sunburst/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/ColumnEditor.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/ColumnsSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/ColumnsSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/GridSettings.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/GridSettings.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/editor.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Editor/index.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/__snapshots__/boolean.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/__snapshots__/datetime.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/__snapshots__/image.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/__snapshots__/link.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/__snapshots__/number.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/__snapshots__/text.test.js.snap (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/boolean.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/boolean.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/datetime.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/datetime.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/image.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/image.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/json.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/link.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/link.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/number.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/number.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/text.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/columns/text.test.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/getOptions.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/renderer.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/table/utils.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/variables.less (100%) rename {redash-visualizations => viz-lib}/src/visualizations/visualizationsSettings.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/word-cloud/Editor.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/word-cloud/Renderer.jsx (100%) rename {redash-visualizations => viz-lib}/src/visualizations/word-cloud/index.js (100%) rename {redash-visualizations => viz-lib}/src/visualizations/word-cloud/renderer.less (100%) rename {redash-visualizations => viz-lib}/webpack.config.js (100%) diff --git a/client/app/components/ApplicationArea/Router.jsx b/client/app/components/ApplicationArea/Router.jsx index b1a163b807..22d4c61e95 100644 --- a/client/app/components/ApplicationArea/Router.jsx +++ b/client/app/components/ApplicationArea/Router.jsx @@ -2,7 +2,7 @@ import { isFunction, startsWith, trimStart, trimEnd } from "lodash"; import React, { useState, useEffect, useRef } from "react"; import PropTypes from "prop-types"; import UniversalRouter from "universal-router"; -import ErrorBoundary from "redash-visualizations/lib/components/ErrorBoundary"; +import ErrorBoundary from "@redash/viz/lib/components/ErrorBoundary"; import location from "@/services/location"; import url from "@/services/url"; diff --git a/client/app/components/ApplicationArea/routeWithApiKeySession.jsx b/client/app/components/ApplicationArea/routeWithApiKeySession.jsx index 7bd36ff0b7..66f04b79cf 100644 --- a/client/app/components/ApplicationArea/routeWithApiKeySession.jsx +++ b/client/app/components/ApplicationArea/routeWithApiKeySession.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState, useContext } from "react"; import PropTypes from "prop-types"; -import { ErrorBoundaryContext } from "redash-visualizations/lib/components/ErrorBoundary"; +import { ErrorBoundaryContext } from "@redash/viz/lib/components/ErrorBoundary"; import { Auth } from "@/services/auth"; // This wrapper modifies `route.render` function and instead of passing `currentRoute` passes an object diff --git a/client/app/components/ApplicationArea/routeWithUserSession.jsx b/client/app/components/ApplicationArea/routeWithUserSession.jsx index 17bcf5500b..3d3932c787 100644 --- a/client/app/components/ApplicationArea/routeWithUserSession.jsx +++ b/client/app/components/ApplicationArea/routeWithUserSession.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from "react"; import PropTypes from "prop-types"; -import ErrorBoundary, { ErrorBoundaryContext } from "redash-visualizations/lib/components/ErrorBoundary"; +import ErrorBoundary, { ErrorBoundaryContext } from "@redash/viz/lib/components/ErrorBoundary"; import { Auth } from "@/services/auth"; import organizationStatus from "@/services/organizationStatus"; import ApplicationHeader from "./ApplicationHeader"; diff --git a/client/app/components/Parameters.jsx b/client/app/components/Parameters.jsx index b93684e270..9f9240c99a 100644 --- a/client/app/components/Parameters.jsx +++ b/client/app/components/Parameters.jsx @@ -1,7 +1,7 @@ import { size, filter, forEach, extend } from "lodash"; import React from "react"; import PropTypes from "prop-types"; -import { SortableContainer, SortableElement, DragHandle } from "redash-visualizations/lib/components/sortable"; +import { SortableContainer, SortableElement, DragHandle } from "@redash/viz/lib/components/sortable"; import location from "@/services/location"; import { Parameter, createParameter } from "@/services/parameters"; import ParameterApplyButton from "@/components/ParameterApplyButton"; diff --git a/client/app/components/QueryLink.jsx b/client/app/components/QueryLink.jsx index fb6006a63b..1a5a934ca5 100644 --- a/client/app/components/QueryLink.jsx +++ b/client/app/components/QueryLink.jsx @@ -1,6 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; -import { VisualizationType } from "redash-visualizations/lib"; +import { VisualizationType } from "@redash/viz/lib"; import VisualizationName from "@/components/visualizations/VisualizationName"; import "./QueryLink.less"; diff --git a/client/app/components/dashboards/TextboxDialog.jsx b/client/app/components/dashboards/TextboxDialog.jsx index 7f4cf05b63..915e4914ba 100644 --- a/client/app/components/dashboards/TextboxDialog.jsx +++ b/client/app/components/dashboards/TextboxDialog.jsx @@ -7,7 +7,7 @@ import Modal from "antd/lib/modal"; import Input from "antd/lib/input"; import Tooltip from "antd/lib/tooltip"; import Divider from "antd/lib/divider"; -import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; +import HtmlContent from "@redash/viz/lib/components/HtmlContent"; import { wrap as wrapDialog, DialogPropType } from "@/components/DialogWrapper"; import notification from "@/services/notification"; diff --git a/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx b/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx index 151a7a7f03..79d9f68af8 100644 --- a/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx +++ b/client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import PropTypes from "prop-types"; import { markdown } from "markdown"; import Menu from "antd/lib/menu"; -import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; +import HtmlContent from "@redash/viz/lib/components/HtmlContent"; import TextboxDialog from "@/components/dashboards/TextboxDialog"; import Widget from "./Widget"; diff --git a/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx b/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx index c7858d7d70..16fdc9bf98 100644 --- a/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx +++ b/client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx @@ -4,7 +4,7 @@ import { compact, isEmpty, invoke } from "lodash"; import { markdown } from "markdown"; import cx from "classnames"; import Menu from "antd/lib/menu"; -import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; +import HtmlContent from "@redash/viz/lib/components/HtmlContent"; import { currentUser } from "@/services/auth"; import recordEvent from "@/services/recordEvent"; import { formatDateTime } from "@/lib/utils"; diff --git a/client/app/components/visualizations/EditVisualizationDialog.jsx b/client/app/components/visualizations/EditVisualizationDialog.jsx index 72150ff31e..83a19dfccd 100644 --- a/client/app/components/visualizations/EditVisualizationDialog.jsx +++ b/client/app/components/visualizations/EditVisualizationDialog.jsx @@ -15,7 +15,7 @@ import { getDefaultVisualization, newVisualization, VisualizationType, -} from "redash-visualizations/lib"; +} from "@redash/viz/lib"; import { Renderer, Editor } from "@/components/visualizations/visualizationComponents"; import "./EditVisualizationDialog.less"; diff --git a/client/app/components/visualizations/VisualizationName.jsx b/client/app/components/visualizations/VisualizationName.jsx index 4db4c46e09..aefbcb3f65 100644 --- a/client/app/components/visualizations/VisualizationName.jsx +++ b/client/app/components/visualizations/VisualizationName.jsx @@ -1,5 +1,5 @@ import React from "react"; -import { VisualizationType, registeredVisualizations } from "redash-visualizations/lib"; +import { VisualizationType, registeredVisualizations } from "@redash/viz/lib"; import "./VisualizationName.less"; diff --git a/client/app/components/visualizations/VisualizationRenderer.jsx b/client/app/components/visualizations/VisualizationRenderer.jsx index 9526c7f880..7314864553 100644 --- a/client/app/components/visualizations/VisualizationRenderer.jsx +++ b/client/app/components/visualizations/VisualizationRenderer.jsx @@ -4,7 +4,7 @@ import PropTypes from "prop-types"; import getQueryResultData from "@/lib/getQueryResultData"; import { getColumnCleanName } from "@/services/query-result"; import Filters, { FiltersType, filterData } from "@/components/Filters"; -import { VisualizationType } from "redash-visualizations/lib"; +import { VisualizationType } from "@redash/viz/lib"; import { Renderer } from "@/components/visualizations/visualizationComponents"; function combineFilters(localFilters, globalFilters) { diff --git a/client/app/components/visualizations/visualizationComponents.jsx b/client/app/components/visualizations/visualizationComponents.jsx index 13c2e60dd5..b02c484eb3 100644 --- a/client/app/components/visualizations/visualizationComponents.jsx +++ b/client/app/components/visualizations/visualizationComponents.jsx @@ -1,11 +1,11 @@ import React from "react"; import { pick } from "lodash"; import HelpTrigger from "@/components/HelpTrigger"; -import { Renderer as VisRenderer, Editor as VisEditor, updateVisualizationsSettings } from "redash-visualizations/lib"; +import { Renderer as VisRenderer, Editor as VisEditor, updateVisualizationsSettings } from "@redash/viz/lib"; import { clientConfig } from "@/services/auth"; -import countriesDataUrl from "redash-visualizations/lib/visualizations/choropleth/maps/countries.geo.json"; -import subdivJapanDataUrl from "redash-visualizations/lib/visualizations/choropleth/maps/japan.prefectures.geo.json"; +import countriesDataUrl from "@redash/viz/lib/visualizations/choropleth/maps/countries.geo.json"; +import subdivJapanDataUrl from "@redash/viz/lib/visualizations/choropleth/maps/japan.prefectures.geo.json"; function wrapComponentWithSettings(WrappedComponent) { return function VisualizationComponent(props) { diff --git a/client/app/config/index.js b/client/app/config/index.js index 6b9d4c506c..a439e3216b 100644 --- a/client/app/config/index.js +++ b/client/app/config/index.js @@ -7,7 +7,7 @@ import url from "@/services/url"; import "@/assets/images/avatar.svg"; // Register visualizations -import "redash-visualizations/lib"; +import "@redash/viz/lib"; import "./antd-spinner"; diff --git a/client/app/pages/queries/VisualizationEmbed.jsx b/client/app/pages/queries/VisualizationEmbed.jsx index df1c665189..7b53b47ea5 100644 --- a/client/app/pages/queries/VisualizationEmbed.jsx +++ b/client/app/pages/queries/VisualizationEmbed.jsx @@ -8,7 +8,7 @@ import Dropdown from "antd/lib/dropdown"; import Icon from "antd/lib/icon"; import Menu from "antd/lib/menu"; import Tooltip from "antd/lib/tooltip"; -import HtmlContent from "redash-visualizations/lib/components/HtmlContent"; +import HtmlContent from "@redash/viz/lib/components/HtmlContent"; import routeWithApiKeySession from "@/components/ApplicationArea/routeWithApiKeySession"; import { Query } from "@/services/query"; import location from "@/services/location"; @@ -20,7 +20,7 @@ import Timer from "@/components/Timer"; import QueryResultsLink from "@/components/EditVisualizationButton/QueryResultsLink"; import VisualizationName from "@/components/visualizations/VisualizationName"; import VisualizationRenderer from "@/components/visualizations/VisualizationRenderer"; -import { VisualizationType } from "redash-visualizations/lib"; +import { VisualizationType } from "@redash/viz/lib"; import logoUrl from "@/assets/images/redash_icon_small.png"; function VisualizationEmbedHeader({ queryName, queryDescription, visualization }) { diff --git a/client/app/services/widget.js b/client/app/services/widget.js index 0e8690a984..2b21e3b390 100644 --- a/client/app/services/widget.js +++ b/client/app/services/widget.js @@ -4,7 +4,7 @@ import { each, pick, extend, isObject, truncate, keys, difference, filter, map, import location from "@/services/location"; import { cloneParameter } from "@/services/parameters"; import dashboardGridOptions from "@/config/dashboard-grid-options"; -import { registeredVisualizations } from "redash-visualizations/lib"; +import { registeredVisualizations } from "@redash/viz/lib"; import { Query } from "./query"; export const WidgetTypeEnum = { diff --git a/package-lock.json b/package-lock.json index 3cff3f1c81..1603e1ddb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1043,6 +1043,71 @@ "elementary-circuits-directed-graph": "^1.0.4" } }, + "@redash/viz": { + "version": "file:viz-lib", + "requires": { + "axios": "^0.19.2", + "beautifymarker": "^1.0.7", + "chroma-js": "^1.3.6", + "classnames": "^2.2.6", + "d3": "^3.5.17", + "d3-cloud": "^1.2.4", + "debug": "^3.1.0", + "dompurify": "^2.0.7", + "font-awesome": "^4.7.0", + "hoist-non-react-statics": "^3.3.0", + "leaflet": "^1.2.0", + "leaflet-fullscreen": "^1.0.2", + "leaflet.markercluster": "^1.1.0", + "lodash": "^4.17.10", + "moment": "^2.19.3", + "numeral": "^2.0.6", + "plotly.js": "1.52.3", + "react-pivottable": "^0.9.0", + "react-sortable-hoc": "^1.10.1", + "tinycolor2": "^1.4.1", + "use-debounce": "^3.4.1", + "use-media": "^1.4.0" + }, + "dependencies": { + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "use-debounce": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-3.4.2.tgz", + "integrity": "sha512-rW44wZaFPh3XiwUzGBA0JRuklpbfKO/szU/5CYD2Q/erLmCem63lJ650p3a+NJE6S+g0rulKtBOfa/3rw/GN+Q==" + } + } + }, "@turf/area": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.0.1.tgz", @@ -4205,14 +4270,14 @@ "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" }, "d3-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.0.tgz", - "integrity": "sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "d3-dispatch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.5.tgz", - "integrity": "sha512-vwKx+lAqB1UuCeklr6Jh1bvC4SZgbSqbkGBLClItFBIYH4vqDJCA7qfoy14lXmJdnBOdxndAMxjCbImJYW7e6g==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" }, "d3-force": { "version": "1.2.1", @@ -6299,9 +6364,9 @@ "dev": true }, "fast-isnumeric": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-isnumeric/-/fast-isnumeric-1.1.3.tgz", - "integrity": "sha512-MdojHkfLx8pjRNZyGjOhX4HxNPaf0l5R/v5rGZ1bGXCnRPyQIUAe4I1H7QtrlUwuuiDHKdpQTjT3lmueVH2otw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz", + "integrity": "sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw==", "requires": { "is-string-blank": "^1.0.1" } @@ -7303,9 +7368,9 @@ } }, "gl-axes3d": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/gl-axes3d/-/gl-axes3d-1.5.2.tgz", - "integrity": "sha512-47Cfh5KhUVRFtYXgufR4lGY5cyXH7SPgAlS1FlvTGK84spIYFCBMlOGUN3AdavGLGUOcXS4ml+tMM61cY6M3gg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/gl-axes3d/-/gl-axes3d-1.5.3.tgz", + "integrity": "sha512-KRYbguKQcDQ6PcB9g1pgqB8Ly4TY1DQODpPKiDTasyWJ8PxQk0t2Q7XoQQijNqvsguITCpVVCzNb5GVtIWiVlQ==", "requires": { "bit-twiddle": "^1.0.2", "dup": "^1.0.0", @@ -7333,9 +7398,9 @@ } }, "gl-cone3d": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/gl-cone3d/-/gl-cone3d-1.5.1.tgz", - "integrity": "sha512-R8m2lPfVN5ip/IPzykvMNgUUGWTkp9rMuCrVknKIkhjH+gaQeGfwF3+WrB0kwq3FRWvlYWcfdvabv37sZ2rKYA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/gl-cone3d/-/gl-cone3d-1.5.2.tgz", + "integrity": "sha512-1JNeHH4sUtUmDA4ZK7Om8/kShwb8IZVAsnxaaB7IPRJsNGciLj1sTpODrJGeMl41RNkex5kXD2SQFrzyEAR2Rw==", "requires": { "colormap": "^2.3.1", "gl-buffer": "^2.1.2", @@ -7357,9 +7422,9 @@ "integrity": "sha1-WXpQTjZHUP9QJTqjX43qevSl0jM=" }, "gl-contour2d": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/gl-contour2d/-/gl-contour2d-1.1.6.tgz", - "integrity": "sha512-n8nEFb4VRYooBo3+hbAgiXGELVn7PtYyVbj/hWmTNtrkxFK39Yr8LUczcT2uOOyzqq7sO3FH8+J8PSMFh+z+5A==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/gl-contour2d/-/gl-contour2d-1.1.7.tgz", + "integrity": "sha512-GdebvJ9DtT3pJDpoE+eU2q+Wo9S3MijPpPz5arZbhK85w2bARmpFpVfPaDlZqWkB644W3BlH8TVyvAo1KE4Bhw==", "requires": { "binary-search-bounds": "^2.0.4", "cdt2d": "^1.0.0", @@ -7373,9 +7438,9 @@ } }, "gl-error3d": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/gl-error3d/-/gl-error3d-1.0.15.tgz", - "integrity": "sha512-7mB1zU22Vzdvq0KzzYRzE0xvCRF9nHd1+9ElUqkvt0GMH0gVIpxKk+m3hNPM/iQHmNupcXaE1cBcOQE2agN3uA==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/gl-error3d/-/gl-error3d-1.0.16.tgz", + "integrity": "sha512-TGJewnKSp7ZnqGgG3XCF9ldrDbxZrO+OWlx6oIet4OdOM//n8xJ5isArnIV/sdPJnFbhfoLxWrW9f5fxHFRQ1A==", "requires": { "gl-buffer": "^2.1.2", "gl-shader": "^4.2.1", @@ -7404,13 +7469,13 @@ } }, "gl-heatmap2d": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/gl-heatmap2d/-/gl-heatmap2d-1.0.5.tgz", - "integrity": "sha512-nki9GIh0g4OXKNIrlnAT/gy/uXxkwrFKgI+XwRcUO6nLBM1WbI2hl8EPykNFXCqsyd08HJQbXKiqaHPW7cNpJg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/gl-heatmap2d/-/gl-heatmap2d-1.0.6.tgz", + "integrity": "sha512-+agzSv4R5vsaH+AGYVz5RVzBK10amqAa+Bwj205F13JjNSGS91M1L9Yb8zssCv2FIjpP+1Mp73cFBYrQFfS1Jg==", "requires": { - "binary-search-bounds": "^2.0.3", + "binary-search-bounds": "^2.0.4", "gl-buffer": "^2.1.2", - "gl-shader": "^4.0.5", + "gl-shader": "^4.2.1", "glslify": "^7.0.0", "iota-array": "^1.0.0", "typedarray-pool": "^1.1.0" @@ -7447,9 +7512,9 @@ "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==" }, "gl-matrix": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.2.1.tgz", - "integrity": "sha512-YYVO8jUSf6+SakL4AJmx9Jc7zAZhkJQ+WhdtX3VQe5PJdCOX6/ybY4x1vk+h94ePnjRn6uml68+QxTAJneUpvA==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" }, "gl-matrix-invert": { "version": "1.0.0", @@ -7462,57 +7527,57 @@ } }, "gl-mesh3d": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.3.0.tgz", - "integrity": "sha512-iKx3v0xB/6Kej+GpMHhxzW6ziqiIjp6WOyAbuXvBRN9P5iIgzifgBYnDd1mYmCLWGmf85MCki/FvD223BOYFxg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.3.1.tgz", + "integrity": "sha512-pXECamyGgu4/9HeAQSE5OEUuLBGS1aq9V4BCsTcxsND4fNLaajEkYKUz/WY2QSYElqKdsMBVsldGiKRKwlybqA==", "requires": { "barycentric": "^1.0.1", "colormap": "^2.3.1", - "gl-buffer": "^2.0.8", - "gl-mat4": "^1.0.0", + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", "gl-shader": "^4.2.1", - "gl-texture2d": "^2.0.8", - "gl-vao": "^1.1.3", + "gl-texture2d": "^2.1.0", + "gl-vao": "^1.3.0", "glsl-out-of-range": "^1.0.4", "glsl-specular-cook-torrance": "^2.0.1", "glslify": "^7.0.0", - "ndarray": "^1.0.15", - "normals": "^1.0.1", + "ndarray": "^1.0.18", + "normals": "^1.1.0", "polytope-closest-point": "^1.0.0", - "simplicial-complex-contour": "^1.0.0", + "simplicial-complex-contour": "^1.0.2", "typedarray-pool": "^1.1.0" } }, "gl-plot2d": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/gl-plot2d/-/gl-plot2d-1.4.3.tgz", - "integrity": "sha512-Ei6WC/SzQ7/qld8MMv7sWrFSdkq8/n7Xmdvj7sbwUkgsJirfknKfeq4DCwaMn9vD2rHOLmdT0NMW+HPrLKSeWQ==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/gl-plot2d/-/gl-plot2d-1.4.4.tgz", + "integrity": "sha512-0UhKiiqeampLtydv6NMNrKEilc0Ui5oaJtvHLbLZ5u/1ttT1XjOY5Yk8LzfqozA/No4a9omxjSKnH+tvSn+rQQ==", "requires": { "binary-search-bounds": "^2.0.4", "gl-buffer": "^2.1.2", - "gl-select-static": "^2.0.5", + "gl-select-static": "^2.0.6", "gl-shader": "^4.2.1", "glsl-inverse": "^1.0.0", "glslify": "^7.0.0", - "text-cache": "^4.2.1" + "text-cache": "^4.2.2" } }, "gl-plot3d": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/gl-plot3d/-/gl-plot3d-2.4.4.tgz", - "integrity": "sha512-R/V4hSrE2sFD+Xls7D6qCOlWCRmqtUff0sKbeFJdI91HfFzPJPiy9Pqa/Jh2UsvdmwkkSQPNDcBvLd6TvhRC/g==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/gl-plot3d/-/gl-plot3d-2.4.5.tgz", + "integrity": "sha512-cKAqMXFRHTCFxH8r1/ACdk5hyfnA9djfiAM8zVQrqu0qLEttUu0i1fq0pr+d5m0HPuNcK8wEc4F3VjL2hrDcGQ==", "requires": { "3d-view": "^2.0.0", "a-big-triangle": "^1.0.3", - "gl-axes3d": "^1.5.2", + "gl-axes3d": "^1.5.3", "gl-fbo": "^2.0.5", "gl-mat4": "^1.2.0", - "gl-select-static": "^2.0.4", + "gl-select-static": "^2.0.6", "gl-shader": "^4.2.1", - "gl-spikes3d": "^1.0.9", + "gl-spikes3d": "^1.0.10", "glslify": "^7.0.0", "has-passive-events": "^1.0.0", - "is-mobile": "^2.2.0", + "is-mobile": "^2.2.1", "mouse-change": "^1.4.0", "mouse-event-offset": "^3.0.2", "mouse-wheel": "^1.2.0", @@ -7521,9 +7586,9 @@ } }, "gl-pointcloud2d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/gl-pointcloud2d/-/gl-pointcloud2d-1.0.2.tgz", - "integrity": "sha512-KDfuJLg1dFWNPo6eJYgwUpNdVcIdK5y29ZiYpzzP0qh3eg0bSLMq8ZkaqvPmSJsFksUryT73IRunsuxJtTJkvA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gl-pointcloud2d/-/gl-pointcloud2d-1.0.3.tgz", + "integrity": "sha512-OS2e1irvJXVRpg/GziXj10xrFJm9kkRfFoB6BLUvkjCQV7ZRNNcs2CD+YSK1r0gvMwTg2T3lfLM3UPwNtz+4Xw==", "requires": { "gl-buffer": "^2.1.2", "gl-shader": "^4.2.1", @@ -7542,40 +7607,40 @@ } }, "gl-scatter3d": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/gl-scatter3d/-/gl-scatter3d-1.2.2.tgz", - "integrity": "sha512-oZh3WQ0bVXnpASpZmYmiEp7eUiD0oU6J4G5C9KUOhUo5d2gucvZEILAtfWmzCT3zsOltoROn4jGuuP2tlLN88Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/gl-scatter3d/-/gl-scatter3d-1.2.3.tgz", + "integrity": "sha512-nXqPlT1w5Qt51dTksj+DUqrZqwWAEWg0PocsKcoDnVNv0X8sGA+LBZ0Y+zrA+KNXUL0PPCX9WR9cF2uJAZl1Sw==", "requires": { - "gl-buffer": "^2.0.6", - "gl-mat4": "^1.0.0", - "gl-shader": "^4.2.0", - "gl-vao": "^1.1.2", + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", + "gl-shader": "^4.2.1", + "gl-vao": "^1.3.0", "glsl-out-of-range": "^1.0.4", "glslify": "^7.0.0", "is-string-blank": "^1.0.1", - "typedarray-pool": "^1.0.2", + "typedarray-pool": "^1.1.0", "vectorize-text": "^3.2.1" } }, "gl-select-box": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/gl-select-box/-/gl-select-box-1.0.3.tgz", - "integrity": "sha512-sQb18g1aZ6PJAsvsC8nNYhuhc2TYXNbzVbI0bP9AH9770NjrDnd7TC8HHcfu8nJXGPG69HjqR6EzS+QSqiXPSA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/gl-select-box/-/gl-select-box-1.0.4.tgz", + "integrity": "sha512-mKsCnglraSKyBbQiGq0Ila0WF+m6Tr+EWT2yfaMn/Sh9aMHq5Wt0F/l6Cf/Ed3CdERq5jHWAY5yxLviZteYu2w==", "requires": { "gl-buffer": "^2.1.2", - "gl-shader": "^4.0.5", + "gl-shader": "^4.2.1", "glslify": "^7.0.0" } }, "gl-select-static": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/gl-select-static/-/gl-select-static-2.0.5.tgz", - "integrity": "sha512-8H1M9ipHNsrVh8UjUmTv1xhhYjYzMnawAnw3n715Dh4DDoW32F3oBi80ev5qbJtQlvHrNkhHKuoMCJKBjfIt4g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/gl-select-static/-/gl-select-static-2.0.6.tgz", + "integrity": "sha512-p4DmBG1DMo/47/fV3oqPcU6uTqHy0eI1vATH1fm8OVDqlzWnLv3786tdEunZWG6Br7DUdH6NgWhuy4gAlt+TAQ==", "requires": { "bit-twiddle": "^1.0.2", - "cwise": "^1.0.3", - "gl-fbo": "^2.0.3", - "ndarray": "^1.0.15", + "cwise": "^1.0.10", + "gl-fbo": "^2.0.5", + "ndarray": "^1.0.18", "typedarray-pool": "^1.1.0" } }, @@ -7594,9 +7659,9 @@ "integrity": "sha512-QVeOZsi9nQuJJl7NB3132CCv5KA10BWxAY2QgJNsKqbLsG53B/TrGJpjIAohnJftdZ4fT6b3ZojWgeaXk8bOOA==" }, "gl-spikes3d": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/gl-spikes3d/-/gl-spikes3d-1.0.9.tgz", - "integrity": "sha512-laMxydgGdnE8kvd1YD9cNWrx0uSmrPj1Oi02cHhnxWIklut97w3F7mZKnmLMEyUkxpRLkEeQ7YkYy7Y+aUEblw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/gl-spikes3d/-/gl-spikes3d-1.0.10.tgz", + "integrity": "sha512-lT3xroowOFxMvlhT5Mof76B2TE02l5zt/NIWljhczV2FFHgIVhA4jMrd5dIv1so1RXMBDJIKu0uJI3QKliDVLg==", "requires": { "gl-buffer": "^2.1.2", "gl-shader": "^4.2.1", @@ -7613,11 +7678,11 @@ } }, "gl-streamtube3d": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gl-streamtube3d/-/gl-streamtube3d-1.4.0.tgz", - "integrity": "sha512-WgRtdB77uFCN1lBZ6ogz7VTK4J8WwW5DGHvyB3LaBSZF3t5lf/KWeXPgm+xnNINlOy4JqJIgny+CtzwTHAk3Ew==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/gl-streamtube3d/-/gl-streamtube3d-1.4.1.tgz", + "integrity": "sha512-rH02v00kgwgdpkXVo7KsSoPp38bIAYR9TE1iONjcQ4cQAlDhrGRauqT/P5sUaOIzs17A2DxWGcXM+EpNQs9pUA==", "requires": { - "gl-cone3d": "^1.5.0", + "gl-cone3d": "^1.5.2", "gl-vec3": "^1.1.3", "gl-vec4": "^1.0.1", "glsl-inverse": "^1.0.0", @@ -7627,29 +7692,29 @@ } }, "gl-surface3d": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/gl-surface3d/-/gl-surface3d-1.5.1.tgz", - "integrity": "sha512-wE9tMHlAL5ZBluXpdVwxhBiPv7J9HwEBc5tVHFDP6TJkvhvf2RTDkCPDOPP5wCSLAFATImbzgwgoNM30/ghDTw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/gl-surface3d/-/gl-surface3d-1.5.2.tgz", + "integrity": "sha512-rWSQwEQDkB0T5CDEDFJwJc4VgwwJaAyFRSJ92NJlrTSwDlsEsWdzG9+APx6FWJMwkOpIoZGWqv+csswK2kMMLQ==", "requires": { "binary-search-bounds": "^2.0.4", "bit-twiddle": "^1.0.2", "colormap": "^2.3.1", "dup": "^1.0.0", - "gl-buffer": "^2.0.3", - "gl-mat4": "^1.0.0", - "gl-shader": "^4.2.0", - "gl-texture2d": "^2.0.0", - "gl-vao": "^1.1.1", + "gl-buffer": "^2.1.2", + "gl-mat4": "^1.2.0", + "gl-shader": "^4.2.1", + "gl-texture2d": "^2.1.0", + "gl-vao": "^1.3.0", "glsl-out-of-range": "^1.0.4", "glsl-specular-beckmann": "^1.1.2", "glslify": "^7.0.0", - "ndarray": "^1.0.16", + "ndarray": "^1.0.18", "ndarray-gradient": "^1.0.0", - "ndarray-ops": "^1.2.1", - "ndarray-pack": "^1.0.1", - "ndarray-scratch": "^1.1.1", + "ndarray-ops": "^1.2.2", + "ndarray-pack": "^1.2.1", + "ndarray-scratch": "^1.2.0", "surface-nets": "^1.0.2", - "typedarray-pool": "^1.0.0" + "typedarray-pool": "^1.1.0" } }, "gl-text": { @@ -10071,9 +10136,9 @@ } }, "leaflet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.4.0.tgz", - "integrity": "sha512-x9j9tGY1+PDLN9pcWTx9/y6C5nezoTMB8BLK5jTakx+H7bPlnbCHfi9Hjg+Qt36sgDz/cb9lrSpNQXmk45Tvhw==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.6.0.tgz", + "integrity": "sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ==" }, "leaflet-fullscreen": { "version": "1.0.2", @@ -13792,28 +13857,13 @@ } }, "react-sortable-hoc": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.10.1.tgz", - "integrity": "sha512-eVyv5rrK6qY9bG60bboRY78In7OpdRRg+hxp4QMLIjC/UJaFSU7exTYd0764GtXvBqh+b+faYGzren5/ffRYKw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz", + "integrity": "sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg==", "requires": { "@babel/runtime": "^7.2.0", "invariant": "^2.2.4", "prop-types": "^15.5.7" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.2.tgz", - "integrity": "sha512-EXxN64agfUqqIGeEjI5dL5z0Sw0ZwWo1mLTi4mQowCZ42O59b7DRpZAnTC6OqdF28wMBMFKNb/4uFGrVaigSpg==", - "requires": { - "regenerator-runtime": "^0.13.2" - } - }, - "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==" - } } }, "react-sortablejs": { @@ -13933,71 +13983,6 @@ "util.promisify": "^1.0.0" } }, - "redash-visualizations": { - "version": "file:redash-visualizations", - "requires": { - "axios": "^0.19.2", - "beautifymarker": "^1.0.7", - "chroma-js": "^1.3.6", - "classnames": "^2.2.6", - "d3": "^3.5.17", - "d3-cloud": "^1.2.4", - "debug": "^3.1.0", - "dompurify": "^2.0.7", - "font-awesome": "^4.7.0", - "hoist-non-react-statics": "^3.3.0", - "leaflet": "^1.2.0", - "leaflet-fullscreen": "^1.0.2", - "leaflet.markercluster": "^1.1.0", - "lodash": "^4.17.10", - "moment": "^2.19.3", - "numeral": "^2.0.6", - "plotly.js": "1.52.3", - "react-pivottable": "^0.9.0", - "react-sortable-hoc": "^1.10.1", - "tinycolor2": "^1.4.1", - "use-debounce": "^3.4.1", - "use-media": "^1.4.0" - }, - "dependencies": { - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "requires": { - "follow-redirects": "1.5.10" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "use-debounce": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-3.4.2.tgz", - "integrity": "sha512-rW44wZaFPh3XiwUzGBA0JRuklpbfKO/szU/5CYD2Q/erLmCem63lJ650p3a+NJE6S+g0rulKtBOfa/3rw/GN+Q==" - } - } - }, "redeyed": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", @@ -14195,21 +14180,23 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" } }, "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" } } } @@ -14289,9 +14276,9 @@ } }, "regl-scatter2d": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.1.7.tgz", - "integrity": "sha512-FWw1hMsQrV3Y0zMU8YOytGjwSBuV3V58t8GR/mhlSL2S04jXLK1m2eAa/rDP3SpvMDkdVEr744PPDeHwsZVUhA==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.1.8.tgz", + "integrity": "sha512-Z9MYAUx9t8e3MsiHBbJAEstbIqauXxzcL9DmuKXQuRWfCMF2DBytYJtE0FpbQU6639wEMAJ54SEIlISWF8sQ2g==", "requires": { "array-range": "^1.0.1", "array-rearrange": "^2.2.2", @@ -15857,6 +15844,93 @@ "function-bind": "^1.0.2" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, "string.prototype.trimleft": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", @@ -15877,6 +15951,93 @@ "function-bind": "^1.1.1" } }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -16214,21 +16375,23 @@ } }, "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" } }, "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" } } } @@ -16397,9 +16560,9 @@ } }, "text-cache": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/text-cache/-/text-cache-4.2.1.tgz", - "integrity": "sha512-G52NFRYXEW9BL4E3kBPquefXql9OT3sNT4J16gcpl3/a8y/YioDOR2Iwga5rNs9tY7rH2xv6rF8fAYrbINn6Kg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/text-cache/-/text-cache-4.2.2.tgz", + "integrity": "sha512-zky+UDYiX0a/aPw/YTBD+EzKMlCTu1chFuCMZeAkgoRiceySdROu1V2kJXhCbtEdBhiOviYnAdGiSYl58HW0ZQ==", "requires": { "vectorize-text": "^3.2.1" } diff --git a/package.json b/package.json index 45ed85093d..b242d80102 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ }, "homepage": "https://redash.io/", "dependencies": { + "@redash/viz": "file:viz-lib", "@types/prop-types": "^15.5.2", "@types/react": "^16.3.13", "@types/react-dom": "^16.0.5", @@ -67,7 +68,6 @@ "react-grid-layout": "^0.18.2", "react-resizable": "^1.10.1", "react-virtualized": "^9.21.2", - "redash-visualizations": "file:redash-visualizations", "universal-router": "^8.3.0", "use-debounce": "^3.1.0", "use-media": "^1.4.0" diff --git a/redash-visualizations/.babelrc b/viz-lib/.babelrc similarity index 100% rename from redash-visualizations/.babelrc rename to viz-lib/.babelrc diff --git a/redash-visualizations/.gitignore b/viz-lib/.gitignore similarity index 100% rename from redash-visualizations/.gitignore rename to viz-lib/.gitignore diff --git a/redash-visualizations/jsconfig.json b/viz-lib/jsconfig.json similarity index 100% rename from redash-visualizations/jsconfig.json rename to viz-lib/jsconfig.json diff --git a/redash-visualizations/package-lock.json b/viz-lib/package-lock.json similarity index 99% rename from redash-visualizations/package-lock.json rename to viz-lib/package-lock.json index 23c1d79f00..dadaa6f8b8 100644 --- a/redash-visualizations/package-lock.json +++ b/viz-lib/package-lock.json @@ -1,6 +1,6 @@ { - "name": "redash-visualizations", - "version": "1.0.0", + "name": "@redash/viz", + "version": "0.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/redash-visualizations/package.json b/viz-lib/package.json similarity index 96% rename from redash-visualizations/package.json rename to viz-lib/package.json index b3ab4af1dc..01a5ae97b7 100644 --- a/redash-visualizations/package.json +++ b/viz-lib/package.json @@ -1,6 +1,6 @@ { - "name": "redash-visualizations", - "version": "1.0.0", + "name": "@redash/viz", + "version": "0.1.0", "description": "Redash visualizations", "main": "dist/redash-visualizations.js", "scripts": { @@ -19,7 +19,7 @@ "author": "Redash", "license": "BSD-2-Clause", "peerDependencies": { - "antd": ">=3.19.0", + "antd": ">=3.19.0 < 4", "react": ">=16.8.0", "react-dom": ">=16.8.0" }, diff --git a/redash-visualizations/prettier.config.js b/viz-lib/prettier.config.js similarity index 100% rename from redash-visualizations/prettier.config.js rename to viz-lib/prettier.config.js diff --git a/redash-visualizations/src/components/ColorPicker/Input.jsx b/viz-lib/src/components/ColorPicker/Input.jsx similarity index 100% rename from redash-visualizations/src/components/ColorPicker/Input.jsx rename to viz-lib/src/components/ColorPicker/Input.jsx diff --git a/redash-visualizations/src/components/ColorPicker/Label.jsx b/viz-lib/src/components/ColorPicker/Label.jsx similarity index 100% rename from redash-visualizations/src/components/ColorPicker/Label.jsx rename to viz-lib/src/components/ColorPicker/Label.jsx diff --git a/redash-visualizations/src/components/ColorPicker/Swatch.jsx b/viz-lib/src/components/ColorPicker/Swatch.jsx similarity index 100% rename from redash-visualizations/src/components/ColorPicker/Swatch.jsx rename to viz-lib/src/components/ColorPicker/Swatch.jsx diff --git a/redash-visualizations/src/components/ColorPicker/index.jsx b/viz-lib/src/components/ColorPicker/index.jsx similarity index 100% rename from redash-visualizations/src/components/ColorPicker/index.jsx rename to viz-lib/src/components/ColorPicker/index.jsx diff --git a/redash-visualizations/src/components/ColorPicker/index.less b/viz-lib/src/components/ColorPicker/index.less similarity index 100% rename from redash-visualizations/src/components/ColorPicker/index.less rename to viz-lib/src/components/ColorPicker/index.less diff --git a/redash-visualizations/src/components/ColorPicker/input.less b/viz-lib/src/components/ColorPicker/input.less similarity index 100% rename from redash-visualizations/src/components/ColorPicker/input.less rename to viz-lib/src/components/ColorPicker/input.less diff --git a/redash-visualizations/src/components/ColorPicker/label.less b/viz-lib/src/components/ColorPicker/label.less similarity index 100% rename from redash-visualizations/src/components/ColorPicker/label.less rename to viz-lib/src/components/ColorPicker/label.less diff --git a/redash-visualizations/src/components/ColorPicker/swatch.less b/viz-lib/src/components/ColorPicker/swatch.less similarity index 100% rename from redash-visualizations/src/components/ColorPicker/swatch.less rename to viz-lib/src/components/ColorPicker/swatch.less diff --git a/redash-visualizations/src/components/ColorPicker/utils.js b/viz-lib/src/components/ColorPicker/utils.js similarity index 100% rename from redash-visualizations/src/components/ColorPicker/utils.js rename to viz-lib/src/components/ColorPicker/utils.js diff --git a/redash-visualizations/src/components/ErrorBoundary.jsx b/viz-lib/src/components/ErrorBoundary.jsx similarity index 100% rename from redash-visualizations/src/components/ErrorBoundary.jsx rename to viz-lib/src/components/ErrorBoundary.jsx diff --git a/redash-visualizations/src/components/HtmlContent.jsx b/viz-lib/src/components/HtmlContent.jsx similarity index 100% rename from redash-visualizations/src/components/HtmlContent.jsx rename to viz-lib/src/components/HtmlContent.jsx diff --git a/redash-visualizations/src/components/TextAlignmentSelect/index.jsx b/viz-lib/src/components/TextAlignmentSelect/index.jsx similarity index 100% rename from redash-visualizations/src/components/TextAlignmentSelect/index.jsx rename to viz-lib/src/components/TextAlignmentSelect/index.jsx diff --git a/redash-visualizations/src/components/TextAlignmentSelect/index.less b/viz-lib/src/components/TextAlignmentSelect/index.less similarity index 100% rename from redash-visualizations/src/components/TextAlignmentSelect/index.less rename to viz-lib/src/components/TextAlignmentSelect/index.less diff --git a/redash-visualizations/src/components/json-view-interactive/JsonViewInteractive.jsx b/viz-lib/src/components/json-view-interactive/JsonViewInteractive.jsx similarity index 100% rename from redash-visualizations/src/components/json-view-interactive/JsonViewInteractive.jsx rename to viz-lib/src/components/json-view-interactive/JsonViewInteractive.jsx diff --git a/redash-visualizations/src/components/json-view-interactive/json-view-interactive.less b/viz-lib/src/components/json-view-interactive/json-view-interactive.less similarity index 100% rename from redash-visualizations/src/components/json-view-interactive/json-view-interactive.less rename to viz-lib/src/components/json-view-interactive/json-view-interactive.less diff --git a/redash-visualizations/src/components/sortable/index.jsx b/viz-lib/src/components/sortable/index.jsx similarity index 100% rename from redash-visualizations/src/components/sortable/index.jsx rename to viz-lib/src/components/sortable/index.jsx diff --git a/redash-visualizations/src/components/sortable/style.less b/viz-lib/src/components/sortable/style.less similarity index 100% rename from redash-visualizations/src/components/sortable/style.less rename to viz-lib/src/components/sortable/style.less diff --git a/redash-visualizations/src/components/visualizations/editor/ContextHelp.jsx b/viz-lib/src/components/visualizations/editor/ContextHelp.jsx similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/ContextHelp.jsx rename to viz-lib/src/components/visualizations/editor/ContextHelp.jsx diff --git a/redash-visualizations/src/components/visualizations/editor/Section.jsx b/viz-lib/src/components/visualizations/editor/Section.jsx similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/Section.jsx rename to viz-lib/src/components/visualizations/editor/Section.jsx diff --git a/redash-visualizations/src/components/visualizations/editor/Section.less b/viz-lib/src/components/visualizations/editor/Section.less similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/Section.less rename to viz-lib/src/components/visualizations/editor/Section.less diff --git a/redash-visualizations/src/components/visualizations/editor/Switch.jsx b/viz-lib/src/components/visualizations/editor/Switch.jsx similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/Switch.jsx rename to viz-lib/src/components/visualizations/editor/Switch.jsx diff --git a/redash-visualizations/src/components/visualizations/editor/Switch.less b/viz-lib/src/components/visualizations/editor/Switch.less similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/Switch.less rename to viz-lib/src/components/visualizations/editor/Switch.less diff --git a/redash-visualizations/src/components/visualizations/editor/TextArea.jsx b/viz-lib/src/components/visualizations/editor/TextArea.jsx similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/TextArea.jsx rename to viz-lib/src/components/visualizations/editor/TextArea.jsx diff --git a/redash-visualizations/src/components/visualizations/editor/TextArea.less b/viz-lib/src/components/visualizations/editor/TextArea.less similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/TextArea.less rename to viz-lib/src/components/visualizations/editor/TextArea.less diff --git a/redash-visualizations/src/components/visualizations/editor/context-help.less b/viz-lib/src/components/visualizations/editor/context-help.less similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/context-help.less rename to viz-lib/src/components/visualizations/editor/context-help.less diff --git a/redash-visualizations/src/components/visualizations/editor/control-label.less b/viz-lib/src/components/visualizations/editor/control-label.less similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/control-label.less rename to viz-lib/src/components/visualizations/editor/control-label.less diff --git a/redash-visualizations/src/components/visualizations/editor/createTabbedEditor.jsx b/viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/createTabbedEditor.jsx rename to viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx diff --git a/redash-visualizations/src/components/visualizations/editor/index.js b/viz-lib/src/components/visualizations/editor/index.js similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/index.js rename to viz-lib/src/components/visualizations/editor/index.js diff --git a/redash-visualizations/src/components/visualizations/editor/withControlLabel.jsx b/viz-lib/src/components/visualizations/editor/withControlLabel.jsx similarity index 100% rename from redash-visualizations/src/components/visualizations/editor/withControlLabel.jsx rename to viz-lib/src/components/visualizations/editor/withControlLabel.jsx diff --git a/redash-visualizations/src/index.js b/viz-lib/src/index.js similarity index 100% rename from redash-visualizations/src/index.js rename to viz-lib/src/index.js diff --git a/redash-visualizations/src/lib/chooseTextColorForBackground.js b/viz-lib/src/lib/chooseTextColorForBackground.js similarity index 100% rename from redash-visualizations/src/lib/chooseTextColorForBackground.js rename to viz-lib/src/lib/chooseTextColorForBackground.js diff --git a/redash-visualizations/src/lib/hooks/useMemoWithDeepCompare.js b/viz-lib/src/lib/hooks/useMemoWithDeepCompare.js similarity index 100% rename from redash-visualizations/src/lib/hooks/useMemoWithDeepCompare.js rename to viz-lib/src/lib/hooks/useMemoWithDeepCompare.js diff --git a/redash-visualizations/src/lib/utils.js b/viz-lib/src/lib/utils.js similarity index 100% rename from redash-visualizations/src/lib/utils.js rename to viz-lib/src/lib/utils.js diff --git a/redash-visualizations/src/lib/value-format.js b/viz-lib/src/lib/value-format.js similarity index 100% rename from redash-visualizations/src/lib/value-format.js rename to viz-lib/src/lib/value-format.js diff --git a/redash-visualizations/src/services/resizeObserver.js b/viz-lib/src/services/resizeObserver.js similarity index 100% rename from redash-visualizations/src/services/resizeObserver.js rename to viz-lib/src/services/resizeObserver.js diff --git a/redash-visualizations/src/services/sanitize.js b/viz-lib/src/services/sanitize.js similarity index 100% rename from redash-visualizations/src/services/sanitize.js rename to viz-lib/src/services/sanitize.js diff --git a/redash-visualizations/src/visualizations/ColorPalette.js b/viz-lib/src/visualizations/ColorPalette.js similarity index 100% rename from redash-visualizations/src/visualizations/ColorPalette.js rename to viz-lib/src/visualizations/ColorPalette.js diff --git a/redash-visualizations/src/visualizations/Editor.jsx b/viz-lib/src/visualizations/Editor.jsx similarity index 100% rename from redash-visualizations/src/visualizations/Editor.jsx rename to viz-lib/src/visualizations/Editor.jsx diff --git a/redash-visualizations/src/visualizations/Renderer.jsx b/viz-lib/src/visualizations/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/Renderer.jsx rename to viz-lib/src/visualizations/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/box-plot/Editor.jsx b/viz-lib/src/visualizations/box-plot/Editor.jsx similarity index 100% rename from redash-visualizations/src/visualizations/box-plot/Editor.jsx rename to viz-lib/src/visualizations/box-plot/Editor.jsx diff --git a/redash-visualizations/src/visualizations/box-plot/Renderer.jsx b/viz-lib/src/visualizations/box-plot/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/box-plot/Renderer.jsx rename to viz-lib/src/visualizations/box-plot/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/box-plot/d3box.js b/viz-lib/src/visualizations/box-plot/d3box.js similarity index 100% rename from redash-visualizations/src/visualizations/box-plot/d3box.js rename to viz-lib/src/visualizations/box-plot/d3box.js diff --git a/redash-visualizations/src/visualizations/box-plot/index.js b/viz-lib/src/visualizations/box-plot/index.js similarity index 100% rename from redash-visualizations/src/visualizations/box-plot/index.js rename to viz-lib/src/visualizations/box-plot/index.js diff --git a/redash-visualizations/src/visualizations/box-plot/renderer.less b/viz-lib/src/visualizations/box-plot/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/box-plot/renderer.less rename to viz-lib/src/visualizations/box-plot/renderer.less diff --git a/redash-visualizations/src/visualizations/chart/Editor/AxisSettings.jsx b/viz-lib/src/visualizations/chart/Editor/AxisSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/AxisSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/AxisSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/ChartTypeSelect.jsx b/viz-lib/src/visualizations/chart/Editor/ChartTypeSelect.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/ChartTypeSelect.jsx rename to viz-lib/src/visualizations/chart/Editor/ChartTypeSelect.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.jsx b/viz-lib/src/visualizations/chart/Editor/ColorsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/ColorsSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.test.js b/viz-lib/src/visualizations/chart/Editor/ColorsSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/ColorsSettings.test.js rename to viz-lib/src/visualizations/chart/Editor/ColorsSettings.test.js diff --git a/redash-visualizations/src/visualizations/chart/Editor/ColumnMappingSelect.jsx b/viz-lib/src/visualizations/chart/Editor/ColumnMappingSelect.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/ColumnMappingSelect.jsx rename to viz-lib/src/visualizations/chart/Editor/ColumnMappingSelect.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/CustomChartSettings.jsx b/viz-lib/src/visualizations/chart/Editor/CustomChartSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/CustomChartSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/CustomChartSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.jsx b/viz-lib/src/visualizations/chart/Editor/DataLabelsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/DataLabelsSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.test.js b/viz-lib/src/visualizations/chart/Editor/DataLabelsSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/DataLabelsSettings.test.js rename to viz-lib/src/visualizations/chart/Editor/DataLabelsSettings.test.js diff --git a/redash-visualizations/src/visualizations/chart/Editor/DefaultColorsSettings.jsx b/viz-lib/src/visualizations/chart/Editor/DefaultColorsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/DefaultColorsSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/DefaultColorsSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.jsx b/viz-lib/src/visualizations/chart/Editor/GeneralSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/GeneralSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.test.js b/viz-lib/src/visualizations/chart/Editor/GeneralSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/GeneralSettings.test.js rename to viz-lib/src/visualizations/chart/Editor/GeneralSettings.test.js diff --git a/redash-visualizations/src/visualizations/chart/Editor/HeatmapColorsSettings.jsx b/viz-lib/src/visualizations/chart/Editor/HeatmapColorsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/HeatmapColorsSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/HeatmapColorsSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/PieColorsSettings.jsx b/viz-lib/src/visualizations/chart/Editor/PieColorsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/PieColorsSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/PieColorsSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.jsx b/viz-lib/src/visualizations/chart/Editor/SeriesSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/SeriesSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.test.js b/viz-lib/src/visualizations/chart/Editor/SeriesSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/SeriesSettings.test.js rename to viz-lib/src/visualizations/chart/Editor/SeriesSettings.test.js diff --git a/redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.jsx b/viz-lib/src/visualizations/chart/Editor/XAxisSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/XAxisSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.test.js b/viz-lib/src/visualizations/chart/Editor/XAxisSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/XAxisSettings.test.js rename to viz-lib/src/visualizations/chart/Editor/XAxisSettings.test.js diff --git a/redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.jsx b/viz-lib/src/visualizations/chart/Editor/YAxisSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.jsx rename to viz-lib/src/visualizations/chart/Editor/YAxisSettings.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.test.js b/viz-lib/src/visualizations/chart/Editor/YAxisSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/YAxisSettings.test.js rename to viz-lib/src/visualizations/chart/Editor/YAxisSettings.test.js diff --git a/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap rename to viz-lib/src/visualizations/chart/Editor/__snapshots__/ColorsSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap rename to viz-lib/src/visualizations/chart/Editor/__snapshots__/DataLabelsSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap rename to viz-lib/src/visualizations/chart/Editor/__snapshots__/GeneralSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap rename to viz-lib/src/visualizations/chart/Editor/__snapshots__/SeriesSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap rename to viz-lib/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap rename to viz-lib/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/chart/Editor/editor.less b/viz-lib/src/visualizations/chart/Editor/editor.less similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/editor.less rename to viz-lib/src/visualizations/chart/Editor/editor.less diff --git a/redash-visualizations/src/visualizations/chart/Editor/index.jsx b/viz-lib/src/visualizations/chart/Editor/index.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/index.jsx rename to viz-lib/src/visualizations/chart/Editor/index.jsx diff --git a/redash-visualizations/src/visualizations/chart/Editor/index.test.js b/viz-lib/src/visualizations/chart/Editor/index.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/Editor/index.test.js rename to viz-lib/src/visualizations/chart/Editor/index.test.js diff --git a/redash-visualizations/src/visualizations/chart/Renderer/CustomPlotlyChart.jsx b/viz-lib/src/visualizations/chart/Renderer/CustomPlotlyChart.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Renderer/CustomPlotlyChart.jsx rename to viz-lib/src/visualizations/chart/Renderer/CustomPlotlyChart.jsx diff --git a/redash-visualizations/src/visualizations/chart/Renderer/PlotlyChart.jsx b/viz-lib/src/visualizations/chart/Renderer/PlotlyChart.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Renderer/PlotlyChart.jsx rename to viz-lib/src/visualizations/chart/Renderer/PlotlyChart.jsx diff --git a/redash-visualizations/src/visualizations/chart/Renderer/index.jsx b/viz-lib/src/visualizations/chart/Renderer/index.jsx similarity index 100% rename from redash-visualizations/src/visualizations/chart/Renderer/index.jsx rename to viz-lib/src/visualizations/chart/Renderer/index.jsx diff --git a/redash-visualizations/src/visualizations/chart/Renderer/renderer.less b/viz-lib/src/visualizations/chart/Renderer/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/chart/Renderer/renderer.less rename to viz-lib/src/visualizations/chart/Renderer/renderer.less diff --git a/redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json b/viz-lib/src/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json rename to viz-lib/src/visualizations/chart/fixtures/getChartData/multiple-series-grouped.json diff --git a/redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json b/viz-lib/src/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json rename to viz-lib/src/visualizations/chart/fixtures/getChartData/multiple-series-multiple-y.json diff --git a/redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json b/viz-lib/src/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json rename to viz-lib/src/visualizations/chart/fixtures/getChartData/multiple-series-sorted.json diff --git a/redash-visualizations/src/visualizations/chart/fixtures/getChartData/single-series.json b/viz-lib/src/visualizations/chart/fixtures/getChartData/single-series.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/fixtures/getChartData/single-series.json rename to viz-lib/src/visualizations/chart/fixtures/getChartData/single-series.json diff --git a/redash-visualizations/src/visualizations/chart/getChartData.js b/viz-lib/src/visualizations/chart/getChartData.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/getChartData.js rename to viz-lib/src/visualizations/chart/getChartData.js diff --git a/redash-visualizations/src/visualizations/chart/getChartData.test.js b/viz-lib/src/visualizations/chart/getChartData.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/getChartData.test.js rename to viz-lib/src/visualizations/chart/getChartData.test.js diff --git a/redash-visualizations/src/visualizations/chart/getOptions.js b/viz-lib/src/visualizations/chart/getOptions.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/getOptions.js rename to viz-lib/src/visualizations/chart/getOptions.js diff --git a/redash-visualizations/src/visualizations/chart/index.js b/viz-lib/src/visualizations/chart/index.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/index.js rename to viz-lib/src/visualizations/chart/index.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/applyLayoutFixes.js b/viz-lib/src/visualizations/chart/plotly/applyLayoutFixes.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/applyLayoutFixes.js rename to viz-lib/src/visualizations/chart/plotly/applyLayoutFixes.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/customChartUtils.js b/viz-lib/src/visualizations/chart/plotly/customChartUtils.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/customChartUtils.js rename to viz-lib/src/visualizations/chart/plotly/customChartUtils.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/default.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/default.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/default.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/default.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/stacked.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/default.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/box/default.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/default.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/box/default.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/box/with-points.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bubble/default.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/default.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/reversed.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted-reversed.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/sorted.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/heatmap/with-labels.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/default.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/keep-missing-values.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/missing-values-0.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/stacked.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/custom-tooltip.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/default.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/default.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/default.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/default.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-labels.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/pie/without-x.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/scatter/default.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/scatter/without-labels.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json rename to viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json diff --git a/redash-visualizations/src/visualizations/chart/plotly/index.js b/viz-lib/src/visualizations/chart/plotly/index.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/index.js rename to viz-lib/src/visualizations/chart/plotly/index.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/prepareData.js b/viz-lib/src/visualizations/chart/plotly/prepareData.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/prepareData.js rename to viz-lib/src/visualizations/chart/plotly/prepareData.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/prepareData.test.js b/viz-lib/src/visualizations/chart/plotly/prepareData.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/prepareData.test.js rename to viz-lib/src/visualizations/chart/plotly/prepareData.test.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/prepareDefaultData.js b/viz-lib/src/visualizations/chart/plotly/prepareDefaultData.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/prepareDefaultData.js rename to viz-lib/src/visualizations/chart/plotly/prepareDefaultData.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/prepareHeatmapData.js b/viz-lib/src/visualizations/chart/plotly/prepareHeatmapData.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/prepareHeatmapData.js rename to viz-lib/src/visualizations/chart/plotly/prepareHeatmapData.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/prepareLayout.js b/viz-lib/src/visualizations/chart/plotly/prepareLayout.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/prepareLayout.js rename to viz-lib/src/visualizations/chart/plotly/prepareLayout.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/prepareLayout.test.js b/viz-lib/src/visualizations/chart/plotly/prepareLayout.test.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/prepareLayout.test.js rename to viz-lib/src/visualizations/chart/plotly/prepareLayout.test.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/preparePieData.js b/viz-lib/src/visualizations/chart/plotly/preparePieData.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/preparePieData.js rename to viz-lib/src/visualizations/chart/plotly/preparePieData.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/updateData.js b/viz-lib/src/visualizations/chart/plotly/updateData.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/updateData.js rename to viz-lib/src/visualizations/chart/plotly/updateData.js diff --git a/redash-visualizations/src/visualizations/chart/plotly/utils.js b/viz-lib/src/visualizations/chart/plotly/utils.js similarity index 100% rename from redash-visualizations/src/visualizations/chart/plotly/utils.js rename to viz-lib/src/visualizations/chart/plotly/utils.js diff --git a/redash-visualizations/src/visualizations/choropleth/ColorPalette.js b/viz-lib/src/visualizations/choropleth/ColorPalette.js similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/ColorPalette.js rename to viz-lib/src/visualizations/choropleth/ColorPalette.js diff --git a/redash-visualizations/src/visualizations/choropleth/Editor/BoundsSettings.jsx b/viz-lib/src/visualizations/choropleth/Editor/BoundsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Editor/BoundsSettings.jsx rename to viz-lib/src/visualizations/choropleth/Editor/BoundsSettings.jsx diff --git a/redash-visualizations/src/visualizations/choropleth/Editor/ColorsSettings.jsx b/viz-lib/src/visualizations/choropleth/Editor/ColorsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Editor/ColorsSettings.jsx rename to viz-lib/src/visualizations/choropleth/Editor/ColorsSettings.jsx diff --git a/redash-visualizations/src/visualizations/choropleth/Editor/FormatSettings.jsx b/viz-lib/src/visualizations/choropleth/Editor/FormatSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Editor/FormatSettings.jsx rename to viz-lib/src/visualizations/choropleth/Editor/FormatSettings.jsx diff --git a/redash-visualizations/src/visualizations/choropleth/Editor/GeneralSettings.jsx b/viz-lib/src/visualizations/choropleth/Editor/GeneralSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Editor/GeneralSettings.jsx rename to viz-lib/src/visualizations/choropleth/Editor/GeneralSettings.jsx diff --git a/redash-visualizations/src/visualizations/choropleth/Editor/index.js b/viz-lib/src/visualizations/choropleth/Editor/index.js similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Editor/index.js rename to viz-lib/src/visualizations/choropleth/Editor/index.js diff --git a/redash-visualizations/src/visualizations/choropleth/Editor/utils.js b/viz-lib/src/visualizations/choropleth/Editor/utils.js similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Editor/utils.js rename to viz-lib/src/visualizations/choropleth/Editor/utils.js diff --git a/redash-visualizations/src/visualizations/choropleth/Renderer/Legend.jsx b/viz-lib/src/visualizations/choropleth/Renderer/Legend.jsx similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Renderer/Legend.jsx rename to viz-lib/src/visualizations/choropleth/Renderer/Legend.jsx diff --git a/redash-visualizations/src/visualizations/choropleth/Renderer/index.jsx b/viz-lib/src/visualizations/choropleth/Renderer/index.jsx similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Renderer/index.jsx rename to viz-lib/src/visualizations/choropleth/Renderer/index.jsx diff --git a/redash-visualizations/src/visualizations/choropleth/Renderer/initChoropleth.js b/viz-lib/src/visualizations/choropleth/Renderer/initChoropleth.js similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Renderer/initChoropleth.js rename to viz-lib/src/visualizations/choropleth/Renderer/initChoropleth.js diff --git a/redash-visualizations/src/visualizations/choropleth/Renderer/renderer.less b/viz-lib/src/visualizations/choropleth/Renderer/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Renderer/renderer.less rename to viz-lib/src/visualizations/choropleth/Renderer/renderer.less diff --git a/redash-visualizations/src/visualizations/choropleth/Renderer/utils.js b/viz-lib/src/visualizations/choropleth/Renderer/utils.js similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/Renderer/utils.js rename to viz-lib/src/visualizations/choropleth/Renderer/utils.js diff --git a/redash-visualizations/src/visualizations/choropleth/getOptions.js b/viz-lib/src/visualizations/choropleth/getOptions.js similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/getOptions.js rename to viz-lib/src/visualizations/choropleth/getOptions.js diff --git a/redash-visualizations/src/visualizations/choropleth/index.js b/viz-lib/src/visualizations/choropleth/index.js similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/index.js rename to viz-lib/src/visualizations/choropleth/index.js diff --git a/redash-visualizations/src/visualizations/choropleth/maps/countries.geo.json b/viz-lib/src/visualizations/choropleth/maps/countries.geo.json similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/maps/countries.geo.json rename to viz-lib/src/visualizations/choropleth/maps/countries.geo.json diff --git a/redash-visualizations/src/visualizations/choropleth/maps/japan.prefectures.geo.json b/viz-lib/src/visualizations/choropleth/maps/japan.prefectures.geo.json similarity index 100% rename from redash-visualizations/src/visualizations/choropleth/maps/japan.prefectures.geo.json rename to viz-lib/src/visualizations/choropleth/maps/japan.prefectures.geo.json diff --git a/redash-visualizations/src/visualizations/cohort/Cornelius.jsx b/viz-lib/src/visualizations/cohort/Cornelius.jsx similarity index 100% rename from redash-visualizations/src/visualizations/cohort/Cornelius.jsx rename to viz-lib/src/visualizations/cohort/Cornelius.jsx diff --git a/redash-visualizations/src/visualizations/cohort/Editor/AppearanceSettings.jsx b/viz-lib/src/visualizations/cohort/Editor/AppearanceSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/cohort/Editor/AppearanceSettings.jsx rename to viz-lib/src/visualizations/cohort/Editor/AppearanceSettings.jsx diff --git a/redash-visualizations/src/visualizations/cohort/Editor/ColorsSettings.jsx b/viz-lib/src/visualizations/cohort/Editor/ColorsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/cohort/Editor/ColorsSettings.jsx rename to viz-lib/src/visualizations/cohort/Editor/ColorsSettings.jsx diff --git a/redash-visualizations/src/visualizations/cohort/Editor/ColumnsSettings.jsx b/viz-lib/src/visualizations/cohort/Editor/ColumnsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/cohort/Editor/ColumnsSettings.jsx rename to viz-lib/src/visualizations/cohort/Editor/ColumnsSettings.jsx diff --git a/redash-visualizations/src/visualizations/cohort/Editor/OptionsSettings.jsx b/viz-lib/src/visualizations/cohort/Editor/OptionsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/cohort/Editor/OptionsSettings.jsx rename to viz-lib/src/visualizations/cohort/Editor/OptionsSettings.jsx diff --git a/redash-visualizations/src/visualizations/cohort/Editor/index.js b/viz-lib/src/visualizations/cohort/Editor/index.js similarity index 100% rename from redash-visualizations/src/visualizations/cohort/Editor/index.js rename to viz-lib/src/visualizations/cohort/Editor/index.js diff --git a/redash-visualizations/src/visualizations/cohort/Renderer.jsx b/viz-lib/src/visualizations/cohort/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/cohort/Renderer.jsx rename to viz-lib/src/visualizations/cohort/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/cohort/cornelius.less b/viz-lib/src/visualizations/cohort/cornelius.less similarity index 100% rename from redash-visualizations/src/visualizations/cohort/cornelius.less rename to viz-lib/src/visualizations/cohort/cornelius.less diff --git a/redash-visualizations/src/visualizations/cohort/getOptions.js b/viz-lib/src/visualizations/cohort/getOptions.js similarity index 100% rename from redash-visualizations/src/visualizations/cohort/getOptions.js rename to viz-lib/src/visualizations/cohort/getOptions.js diff --git a/redash-visualizations/src/visualizations/cohort/index.js b/viz-lib/src/visualizations/cohort/index.js similarity index 100% rename from redash-visualizations/src/visualizations/cohort/index.js rename to viz-lib/src/visualizations/cohort/index.js diff --git a/redash-visualizations/src/visualizations/cohort/prepareData.js b/viz-lib/src/visualizations/cohort/prepareData.js similarity index 100% rename from redash-visualizations/src/visualizations/cohort/prepareData.js rename to viz-lib/src/visualizations/cohort/prepareData.js diff --git a/redash-visualizations/src/visualizations/cohort/renderer.less b/viz-lib/src/visualizations/cohort/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/cohort/renderer.less rename to viz-lib/src/visualizations/cohort/renderer.less diff --git a/redash-visualizations/src/visualizations/counter/Editor/FormatSettings.jsx b/viz-lib/src/visualizations/counter/Editor/FormatSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/counter/Editor/FormatSettings.jsx rename to viz-lib/src/visualizations/counter/Editor/FormatSettings.jsx diff --git a/redash-visualizations/src/visualizations/counter/Editor/GeneralSettings.jsx b/viz-lib/src/visualizations/counter/Editor/GeneralSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/counter/Editor/GeneralSettings.jsx rename to viz-lib/src/visualizations/counter/Editor/GeneralSettings.jsx diff --git a/redash-visualizations/src/visualizations/counter/Editor/index.js b/viz-lib/src/visualizations/counter/Editor/index.js similarity index 100% rename from redash-visualizations/src/visualizations/counter/Editor/index.js rename to viz-lib/src/visualizations/counter/Editor/index.js diff --git a/redash-visualizations/src/visualizations/counter/Renderer.jsx b/viz-lib/src/visualizations/counter/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/counter/Renderer.jsx rename to viz-lib/src/visualizations/counter/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/counter/index.js b/viz-lib/src/visualizations/counter/index.js similarity index 100% rename from redash-visualizations/src/visualizations/counter/index.js rename to viz-lib/src/visualizations/counter/index.js diff --git a/redash-visualizations/src/visualizations/counter/render.less b/viz-lib/src/visualizations/counter/render.less similarity index 100% rename from redash-visualizations/src/visualizations/counter/render.less rename to viz-lib/src/visualizations/counter/render.less diff --git a/redash-visualizations/src/visualizations/counter/utils.js b/viz-lib/src/visualizations/counter/utils.js similarity index 100% rename from redash-visualizations/src/visualizations/counter/utils.js rename to viz-lib/src/visualizations/counter/utils.js diff --git a/redash-visualizations/src/visualizations/counter/utils.test.js b/viz-lib/src/visualizations/counter/utils.test.js similarity index 100% rename from redash-visualizations/src/visualizations/counter/utils.test.js rename to viz-lib/src/visualizations/counter/utils.test.js diff --git a/redash-visualizations/src/visualizations/details/DetailsRenderer.jsx b/viz-lib/src/visualizations/details/DetailsRenderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/details/DetailsRenderer.jsx rename to viz-lib/src/visualizations/details/DetailsRenderer.jsx diff --git a/redash-visualizations/src/visualizations/details/details.less b/viz-lib/src/visualizations/details/details.less similarity index 100% rename from redash-visualizations/src/visualizations/details/details.less rename to viz-lib/src/visualizations/details/details.less diff --git a/redash-visualizations/src/visualizations/details/index.js b/viz-lib/src/visualizations/details/index.js similarity index 100% rename from redash-visualizations/src/visualizations/details/index.js rename to viz-lib/src/visualizations/details/index.js diff --git a/redash-visualizations/src/visualizations/funnel/Editor/AppearanceSettings.jsx b/viz-lib/src/visualizations/funnel/Editor/AppearanceSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Editor/AppearanceSettings.jsx rename to viz-lib/src/visualizations/funnel/Editor/AppearanceSettings.jsx diff --git a/redash-visualizations/src/visualizations/funnel/Editor/GeneralSettings.jsx b/viz-lib/src/visualizations/funnel/Editor/GeneralSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Editor/GeneralSettings.jsx rename to viz-lib/src/visualizations/funnel/Editor/GeneralSettings.jsx diff --git a/redash-visualizations/src/visualizations/funnel/Editor/index.js b/viz-lib/src/visualizations/funnel/Editor/index.js similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Editor/index.js rename to viz-lib/src/visualizations/funnel/Editor/index.js diff --git a/redash-visualizations/src/visualizations/funnel/Renderer/FunnelBar.jsx b/viz-lib/src/visualizations/funnel/Renderer/FunnelBar.jsx similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Renderer/FunnelBar.jsx rename to viz-lib/src/visualizations/funnel/Renderer/FunnelBar.jsx diff --git a/redash-visualizations/src/visualizations/funnel/Renderer/funnel-bar.less b/viz-lib/src/visualizations/funnel/Renderer/funnel-bar.less similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Renderer/funnel-bar.less rename to viz-lib/src/visualizations/funnel/Renderer/funnel-bar.less diff --git a/redash-visualizations/src/visualizations/funnel/Renderer/index.jsx b/viz-lib/src/visualizations/funnel/Renderer/index.jsx similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Renderer/index.jsx rename to viz-lib/src/visualizations/funnel/Renderer/index.jsx diff --git a/redash-visualizations/src/visualizations/funnel/Renderer/index.less b/viz-lib/src/visualizations/funnel/Renderer/index.less similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Renderer/index.less rename to viz-lib/src/visualizations/funnel/Renderer/index.less diff --git a/redash-visualizations/src/visualizations/funnel/Renderer/prepareData.js b/viz-lib/src/visualizations/funnel/Renderer/prepareData.js similarity index 100% rename from redash-visualizations/src/visualizations/funnel/Renderer/prepareData.js rename to viz-lib/src/visualizations/funnel/Renderer/prepareData.js diff --git a/redash-visualizations/src/visualizations/funnel/getOptions.js b/viz-lib/src/visualizations/funnel/getOptions.js similarity index 100% rename from redash-visualizations/src/visualizations/funnel/getOptions.js rename to viz-lib/src/visualizations/funnel/getOptions.js diff --git a/redash-visualizations/src/visualizations/funnel/index.js b/viz-lib/src/visualizations/funnel/index.js similarity index 100% rename from redash-visualizations/src/visualizations/funnel/index.js rename to viz-lib/src/visualizations/funnel/index.js diff --git a/redash-visualizations/src/visualizations/index.js b/viz-lib/src/visualizations/index.js similarity index 100% rename from redash-visualizations/src/visualizations/index.js rename to viz-lib/src/visualizations/index.js diff --git a/redash-visualizations/src/visualizations/map/Editor/FormatSettings.jsx b/viz-lib/src/visualizations/map/Editor/FormatSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/map/Editor/FormatSettings.jsx rename to viz-lib/src/visualizations/map/Editor/FormatSettings.jsx diff --git a/redash-visualizations/src/visualizations/map/Editor/GeneralSettings.jsx b/viz-lib/src/visualizations/map/Editor/GeneralSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/map/Editor/GeneralSettings.jsx rename to viz-lib/src/visualizations/map/Editor/GeneralSettings.jsx diff --git a/redash-visualizations/src/visualizations/map/Editor/GroupsSettings.jsx b/viz-lib/src/visualizations/map/Editor/GroupsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/map/Editor/GroupsSettings.jsx rename to viz-lib/src/visualizations/map/Editor/GroupsSettings.jsx diff --git a/redash-visualizations/src/visualizations/map/Editor/StyleSettings.jsx b/viz-lib/src/visualizations/map/Editor/StyleSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/map/Editor/StyleSettings.jsx rename to viz-lib/src/visualizations/map/Editor/StyleSettings.jsx diff --git a/redash-visualizations/src/visualizations/map/Editor/index.js b/viz-lib/src/visualizations/map/Editor/index.js similarity index 100% rename from redash-visualizations/src/visualizations/map/Editor/index.js rename to viz-lib/src/visualizations/map/Editor/index.js diff --git a/redash-visualizations/src/visualizations/map/Renderer.jsx b/viz-lib/src/visualizations/map/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/map/Renderer.jsx rename to viz-lib/src/visualizations/map/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/map/getOptions.js b/viz-lib/src/visualizations/map/getOptions.js similarity index 100% rename from redash-visualizations/src/visualizations/map/getOptions.js rename to viz-lib/src/visualizations/map/getOptions.js diff --git a/redash-visualizations/src/visualizations/map/index.js b/viz-lib/src/visualizations/map/index.js similarity index 100% rename from redash-visualizations/src/visualizations/map/index.js rename to viz-lib/src/visualizations/map/index.js diff --git a/redash-visualizations/src/visualizations/map/initMap.js b/viz-lib/src/visualizations/map/initMap.js similarity index 100% rename from redash-visualizations/src/visualizations/map/initMap.js rename to viz-lib/src/visualizations/map/initMap.js diff --git a/redash-visualizations/src/visualizations/map/prepareData.js b/viz-lib/src/visualizations/map/prepareData.js similarity index 100% rename from redash-visualizations/src/visualizations/map/prepareData.js rename to viz-lib/src/visualizations/map/prepareData.js diff --git a/redash-visualizations/src/visualizations/pivot/Editor.jsx b/viz-lib/src/visualizations/pivot/Editor.jsx similarity index 100% rename from redash-visualizations/src/visualizations/pivot/Editor.jsx rename to viz-lib/src/visualizations/pivot/Editor.jsx diff --git a/redash-visualizations/src/visualizations/pivot/Renderer.jsx b/viz-lib/src/visualizations/pivot/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/pivot/Renderer.jsx rename to viz-lib/src/visualizations/pivot/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/pivot/index.js b/viz-lib/src/visualizations/pivot/index.js similarity index 100% rename from redash-visualizations/src/visualizations/pivot/index.js rename to viz-lib/src/visualizations/pivot/index.js diff --git a/redash-visualizations/src/visualizations/pivot/renderer.less b/viz-lib/src/visualizations/pivot/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/pivot/renderer.less rename to viz-lib/src/visualizations/pivot/renderer.less diff --git a/redash-visualizations/src/visualizations/prop-types.js b/viz-lib/src/visualizations/prop-types.js similarity index 100% rename from redash-visualizations/src/visualizations/prop-types.js rename to viz-lib/src/visualizations/prop-types.js diff --git a/redash-visualizations/src/visualizations/registeredVisualizations.js b/viz-lib/src/visualizations/registeredVisualizations.js similarity index 100% rename from redash-visualizations/src/visualizations/registeredVisualizations.js rename to viz-lib/src/visualizations/registeredVisualizations.js diff --git a/redash-visualizations/src/visualizations/sankey/Editor.jsx b/viz-lib/src/visualizations/sankey/Editor.jsx similarity index 100% rename from redash-visualizations/src/visualizations/sankey/Editor.jsx rename to viz-lib/src/visualizations/sankey/Editor.jsx diff --git a/redash-visualizations/src/visualizations/sankey/Renderer.jsx b/viz-lib/src/visualizations/sankey/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/sankey/Renderer.jsx rename to viz-lib/src/visualizations/sankey/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/sankey/d3sankey.js b/viz-lib/src/visualizations/sankey/d3sankey.js similarity index 100% rename from redash-visualizations/src/visualizations/sankey/d3sankey.js rename to viz-lib/src/visualizations/sankey/d3sankey.js diff --git a/redash-visualizations/src/visualizations/sankey/index.js b/viz-lib/src/visualizations/sankey/index.js similarity index 100% rename from redash-visualizations/src/visualizations/sankey/index.js rename to viz-lib/src/visualizations/sankey/index.js diff --git a/redash-visualizations/src/visualizations/sankey/initSankey.js b/viz-lib/src/visualizations/sankey/initSankey.js similarity index 100% rename from redash-visualizations/src/visualizations/sankey/initSankey.js rename to viz-lib/src/visualizations/sankey/initSankey.js diff --git a/redash-visualizations/src/visualizations/sankey/renderer.less b/viz-lib/src/visualizations/sankey/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/sankey/renderer.less rename to viz-lib/src/visualizations/sankey/renderer.less diff --git a/redash-visualizations/src/visualizations/sunburst/Editor.jsx b/viz-lib/src/visualizations/sunburst/Editor.jsx similarity index 100% rename from redash-visualizations/src/visualizations/sunburst/Editor.jsx rename to viz-lib/src/visualizations/sunburst/Editor.jsx diff --git a/redash-visualizations/src/visualizations/sunburst/Renderer.jsx b/viz-lib/src/visualizations/sunburst/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/sunburst/Renderer.jsx rename to viz-lib/src/visualizations/sunburst/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/sunburst/index.js b/viz-lib/src/visualizations/sunburst/index.js similarity index 100% rename from redash-visualizations/src/visualizations/sunburst/index.js rename to viz-lib/src/visualizations/sunburst/index.js diff --git a/redash-visualizations/src/visualizations/sunburst/initSunburst.js b/viz-lib/src/visualizations/sunburst/initSunburst.js similarity index 100% rename from redash-visualizations/src/visualizations/sunburst/initSunburst.js rename to viz-lib/src/visualizations/sunburst/initSunburst.js diff --git a/redash-visualizations/src/visualizations/sunburst/renderer.less b/viz-lib/src/visualizations/sunburst/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/sunburst/renderer.less rename to viz-lib/src/visualizations/sunburst/renderer.less diff --git a/redash-visualizations/src/visualizations/table/Editor/ColumnEditor.jsx b/viz-lib/src/visualizations/table/Editor/ColumnEditor.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/ColumnEditor.jsx rename to viz-lib/src/visualizations/table/Editor/ColumnEditor.jsx diff --git a/redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.jsx b/viz-lib/src/visualizations/table/Editor/ColumnsSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.jsx rename to viz-lib/src/visualizations/table/Editor/ColumnsSettings.jsx diff --git a/redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.test.js b/viz-lib/src/visualizations/table/Editor/ColumnsSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/ColumnsSettings.test.js rename to viz-lib/src/visualizations/table/Editor/ColumnsSettings.test.js diff --git a/redash-visualizations/src/visualizations/table/Editor/GridSettings.jsx b/viz-lib/src/visualizations/table/Editor/GridSettings.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/GridSettings.jsx rename to viz-lib/src/visualizations/table/Editor/GridSettings.jsx diff --git a/redash-visualizations/src/visualizations/table/Editor/GridSettings.test.js b/viz-lib/src/visualizations/table/Editor/GridSettings.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/GridSettings.test.js rename to viz-lib/src/visualizations/table/Editor/GridSettings.test.js diff --git a/redash-visualizations/src/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap b/viz-lib/src/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap rename to viz-lib/src/visualizations/table/Editor/__snapshots__/ColumnsSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap b/viz-lib/src/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap rename to viz-lib/src/visualizations/table/Editor/__snapshots__/GridSettings.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/Editor/editor.less b/viz-lib/src/visualizations/table/Editor/editor.less similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/editor.less rename to viz-lib/src/visualizations/table/Editor/editor.less diff --git a/redash-visualizations/src/visualizations/table/Editor/index.jsx b/viz-lib/src/visualizations/table/Editor/index.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/Editor/index.jsx rename to viz-lib/src/visualizations/table/Editor/index.jsx diff --git a/redash-visualizations/src/visualizations/table/Renderer.jsx b/viz-lib/src/visualizations/table/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/Renderer.jsx rename to viz-lib/src/visualizations/table/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/__snapshots__/boolean.test.js.snap b/viz-lib/src/visualizations/table/columns/__snapshots__/boolean.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/__snapshots__/boolean.test.js.snap rename to viz-lib/src/visualizations/table/columns/__snapshots__/boolean.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/columns/__snapshots__/datetime.test.js.snap b/viz-lib/src/visualizations/table/columns/__snapshots__/datetime.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/__snapshots__/datetime.test.js.snap rename to viz-lib/src/visualizations/table/columns/__snapshots__/datetime.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/columns/__snapshots__/image.test.js.snap b/viz-lib/src/visualizations/table/columns/__snapshots__/image.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/__snapshots__/image.test.js.snap rename to viz-lib/src/visualizations/table/columns/__snapshots__/image.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/columns/__snapshots__/link.test.js.snap b/viz-lib/src/visualizations/table/columns/__snapshots__/link.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/__snapshots__/link.test.js.snap rename to viz-lib/src/visualizations/table/columns/__snapshots__/link.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/columns/__snapshots__/number.test.js.snap b/viz-lib/src/visualizations/table/columns/__snapshots__/number.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/__snapshots__/number.test.js.snap rename to viz-lib/src/visualizations/table/columns/__snapshots__/number.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/columns/__snapshots__/text.test.js.snap b/viz-lib/src/visualizations/table/columns/__snapshots__/text.test.js.snap similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/__snapshots__/text.test.js.snap rename to viz-lib/src/visualizations/table/columns/__snapshots__/text.test.js.snap diff --git a/redash-visualizations/src/visualizations/table/columns/boolean.jsx b/viz-lib/src/visualizations/table/columns/boolean.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/boolean.jsx rename to viz-lib/src/visualizations/table/columns/boolean.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/boolean.test.js b/viz-lib/src/visualizations/table/columns/boolean.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/boolean.test.js rename to viz-lib/src/visualizations/table/columns/boolean.test.js diff --git a/redash-visualizations/src/visualizations/table/columns/datetime.jsx b/viz-lib/src/visualizations/table/columns/datetime.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/datetime.jsx rename to viz-lib/src/visualizations/table/columns/datetime.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/datetime.test.js b/viz-lib/src/visualizations/table/columns/datetime.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/datetime.test.js rename to viz-lib/src/visualizations/table/columns/datetime.test.js diff --git a/redash-visualizations/src/visualizations/table/columns/image.jsx b/viz-lib/src/visualizations/table/columns/image.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/image.jsx rename to viz-lib/src/visualizations/table/columns/image.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/image.test.js b/viz-lib/src/visualizations/table/columns/image.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/image.test.js rename to viz-lib/src/visualizations/table/columns/image.test.js diff --git a/redash-visualizations/src/visualizations/table/columns/index.js b/viz-lib/src/visualizations/table/columns/index.js similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/index.js rename to viz-lib/src/visualizations/table/columns/index.js diff --git a/redash-visualizations/src/visualizations/table/columns/json.jsx b/viz-lib/src/visualizations/table/columns/json.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/json.jsx rename to viz-lib/src/visualizations/table/columns/json.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/link.jsx b/viz-lib/src/visualizations/table/columns/link.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/link.jsx rename to viz-lib/src/visualizations/table/columns/link.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/link.test.js b/viz-lib/src/visualizations/table/columns/link.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/link.test.js rename to viz-lib/src/visualizations/table/columns/link.test.js diff --git a/redash-visualizations/src/visualizations/table/columns/number.jsx b/viz-lib/src/visualizations/table/columns/number.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/number.jsx rename to viz-lib/src/visualizations/table/columns/number.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/number.test.js b/viz-lib/src/visualizations/table/columns/number.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/number.test.js rename to viz-lib/src/visualizations/table/columns/number.test.js diff --git a/redash-visualizations/src/visualizations/table/columns/text.jsx b/viz-lib/src/visualizations/table/columns/text.jsx similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/text.jsx rename to viz-lib/src/visualizations/table/columns/text.jsx diff --git a/redash-visualizations/src/visualizations/table/columns/text.test.js b/viz-lib/src/visualizations/table/columns/text.test.js similarity index 100% rename from redash-visualizations/src/visualizations/table/columns/text.test.js rename to viz-lib/src/visualizations/table/columns/text.test.js diff --git a/redash-visualizations/src/visualizations/table/getOptions.js b/viz-lib/src/visualizations/table/getOptions.js similarity index 100% rename from redash-visualizations/src/visualizations/table/getOptions.js rename to viz-lib/src/visualizations/table/getOptions.js diff --git a/redash-visualizations/src/visualizations/table/index.js b/viz-lib/src/visualizations/table/index.js similarity index 100% rename from redash-visualizations/src/visualizations/table/index.js rename to viz-lib/src/visualizations/table/index.js diff --git a/redash-visualizations/src/visualizations/table/renderer.less b/viz-lib/src/visualizations/table/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/table/renderer.less rename to viz-lib/src/visualizations/table/renderer.less diff --git a/redash-visualizations/src/visualizations/table/utils.js b/viz-lib/src/visualizations/table/utils.js similarity index 100% rename from redash-visualizations/src/visualizations/table/utils.js rename to viz-lib/src/visualizations/table/utils.js diff --git a/redash-visualizations/src/visualizations/variables.less b/viz-lib/src/visualizations/variables.less similarity index 100% rename from redash-visualizations/src/visualizations/variables.less rename to viz-lib/src/visualizations/variables.less diff --git a/redash-visualizations/src/visualizations/visualizationsSettings.js b/viz-lib/src/visualizations/visualizationsSettings.js similarity index 100% rename from redash-visualizations/src/visualizations/visualizationsSettings.js rename to viz-lib/src/visualizations/visualizationsSettings.js diff --git a/redash-visualizations/src/visualizations/word-cloud/Editor.jsx b/viz-lib/src/visualizations/word-cloud/Editor.jsx similarity index 100% rename from redash-visualizations/src/visualizations/word-cloud/Editor.jsx rename to viz-lib/src/visualizations/word-cloud/Editor.jsx diff --git a/redash-visualizations/src/visualizations/word-cloud/Renderer.jsx b/viz-lib/src/visualizations/word-cloud/Renderer.jsx similarity index 100% rename from redash-visualizations/src/visualizations/word-cloud/Renderer.jsx rename to viz-lib/src/visualizations/word-cloud/Renderer.jsx diff --git a/redash-visualizations/src/visualizations/word-cloud/index.js b/viz-lib/src/visualizations/word-cloud/index.js similarity index 100% rename from redash-visualizations/src/visualizations/word-cloud/index.js rename to viz-lib/src/visualizations/word-cloud/index.js diff --git a/redash-visualizations/src/visualizations/word-cloud/renderer.less b/viz-lib/src/visualizations/word-cloud/renderer.less similarity index 100% rename from redash-visualizations/src/visualizations/word-cloud/renderer.less rename to viz-lib/src/visualizations/word-cloud/renderer.less diff --git a/redash-visualizations/webpack.config.js b/viz-lib/webpack.config.js similarity index 100% rename from redash-visualizations/webpack.config.js rename to viz-lib/webpack.config.js From 220ccad2820358e2d155a04d5c5df5bc2f163df5 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sun, 26 Apr 2020 10:52:47 -0300 Subject: [PATCH 08/19] Test preinstall script --- package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b242d80102..0e8527db8c 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "start": "webpack-dev-server", "bundle": "bin/bundle-extensions", "clean": "rm -rf ./client/dist/", - "build": "npm run clean && NODE_ENV=production webpack", + "build:viz": "(cd viz-lib && npm run build:babel)", + "build": "npm run clean && npm run build:viz && NODE_ENV=production webpack", "build:old-node-version": "npm run clean && NODE_ENV=production node --max-old-space-size=4096 node_modules/.bin/webpack", "watch": "webpack --watch --progress --colors -d", "analyze": "npm run clean && BUNDLE_ANALYZER=on webpack", @@ -20,7 +21,8 @@ "test": "TZ=Africa/Khartoum jest", "test:watch": "jest --watch", "cypress:install": "npm install --no-save cypress@~4.1.0 @percy/cypress@^2.2.0 atob@2.1.2", - "cypress": "node client/cypress/cypress.js" + "cypress": "node client/cypress/cypress.js", + "preinstall": "(cd viz-lib && npm ci && npm run build:babel)" }, "repository": { "type": "git", From e6d0d6550494f70bd36aee112a68fad8c3eeab2c Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sun, 26 Apr 2020 15:59:15 -0300 Subject: [PATCH 09/19] Update Dockerfile build for frontend --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index bdaf9a4f40..82560bb0f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,9 +2,11 @@ FROM node:12 as frontend-builder WORKDIR /frontend COPY package.json package-lock.json /frontend/ +COPY /viz-lib/package.json /viz-lib/package-lock.json /frontend/viz-lib/ RUN npm ci COPY client /frontend/client +COPY viz-lib /frontend/viz-lib COPY webpack.config.js /frontend/ RUN npm run build From 5f562073de678324ec0bd2c195af88480a2ac054 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Mon, 27 Apr 2020 17:04:33 -0300 Subject: [PATCH 10/19] Test adding dockerignore --- .dockerignore | 1 + Dockerfile | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.dockerignore b/.dockerignore index d233c7a9d5..8e3dfae173 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,7 @@ client/.tmp/ client/dist/ node_modules/ +viz-lib/node_modules/ .tmp/ .venv/ venv/ diff --git a/Dockerfile b/Dockerfile index 82560bb0f4..9388cf5b2b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,11 +2,10 @@ FROM node:12 as frontend-builder WORKDIR /frontend COPY package.json package-lock.json /frontend/ -COPY /viz-lib/package.json /viz-lib/package-lock.json /frontend/viz-lib/ -RUN npm ci +COPY viz-lib /frontend/viz-lib +RUN npm ci --unsafe-perm COPY client /frontend/client -COPY viz-lib /frontend/viz-lib COPY webpack.config.js /frontend/ RUN npm run build From ed61df12a52ae3fa08836d3f778b4d257c4ec219 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Tue, 28 Apr 2020 10:27:53 -0300 Subject: [PATCH 11/19] Update jest tests --- package.json | 9 +- viz-lib/__tests__/enzyme_setup.js | 4 + viz-lib/__tests__/mocks.js | 5 + viz-lib/package-lock.json | 1899 ++++++++++++++++- viz-lib/package.json | 23 +- .../chart/Editor/ColorsSettings.test.js | 2 +- 6 files changed, 1873 insertions(+), 69 deletions(-) create mode 100644 viz-lib/__tests__/enzyme_setup.js create mode 100644 viz-lib/__tests__/mocks.js diff --git a/package.json b/package.json index 0e8527db8c..36a43ead5e 100644 --- a/package.json +++ b/package.json @@ -130,19 +130,20 @@ "fsevents": "^1.2.9" }, "jest": { + "rootDir": "./client", "setupFiles": [ - "./client/app/__tests__/enzyme_setup.js", - "./client/app/__tests__/mocks.js" + "./app/__tests__/enzyme_setup.js", + "./app/__tests__/mocks.js" ], "snapshotSerializers": [ "enzyme-to-json/serializer" ], "moduleNameMapper": { - "^@/(.*)": "/client/app/$1", + "^@/(.*)": "/app/$1", "\\.(css|less)$": "identity-obj-proxy" }, "testPathIgnorePatterns": [ - "/client/app/__tests__/" + "/app/__tests__/" ] }, "//": "browserslist set to 'Async functions' compatibility", diff --git a/viz-lib/__tests__/enzyme_setup.js b/viz-lib/__tests__/enzyme_setup.js new file mode 100644 index 0000000000..6f413a40b8 --- /dev/null +++ b/viz-lib/__tests__/enzyme_setup.js @@ -0,0 +1,4 @@ +import { configure } from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; + +configure({ adapter: new Adapter() }); diff --git a/viz-lib/__tests__/mocks.js b/viz-lib/__tests__/mocks.js new file mode 100644 index 0000000000..d4025fbe83 --- /dev/null +++ b/viz-lib/__tests__/mocks.js @@ -0,0 +1,5 @@ +import MockDate from "mockdate"; + +const date = new Date("2000-01-01T02:00:00.000"); + +MockDate.set(date); diff --git a/viz-lib/package-lock.json b/viz-lib/package-lock.json index dadaa6f8b8..7391333146 100644 --- a/viz-lib/package-lock.json +++ b/viz-lib/package-lock.json @@ -1102,6 +1102,208 @@ } } }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, "@mapbox/geojson-area": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz", @@ -1225,10 +1427,97 @@ "@turf/helpers": "6.x" } }, + "@types/babel__core": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.7.tgz", + "integrity": "sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.11.tgz", + "integrity": "sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, "@types/node": { - "version": "13.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", - "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", + "version": "13.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", + "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, "@webassemblyjs/ast": { @@ -1428,6 +1717,12 @@ "weak-map": "^1.0.5" } }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, "abs-svg-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", @@ -1443,11 +1738,35 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==" }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } + } + }, "acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, "add-line-numbers": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/add-line-numbers/-/add-line-numbers-1.0.1.tgz", @@ -1555,6 +1874,18 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "optional": true }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1617,6 +1948,12 @@ "resolved": "https://registry.npmjs.org/array-bounds/-/array-bounds-1.0.1.tgz", "integrity": "sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==" }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, "array-filter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", @@ -1679,7 +2016,6 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, - "optional": true, "requires": { "safer-buffer": "~2.1.0" } @@ -1726,8 +2062,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -1735,18 +2070,29 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true + "dev": true }, "atob": { "version": "2.1.2", @@ -1812,15 +2158,13 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true + "dev": true }, "aws4": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true, - "optional": true + "dev": true }, "axios": { "version": "0.19.2", @@ -1830,6 +2174,21 @@ "follow-redirects": "1.5.10" } }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, "babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -1864,6 +2223,72 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, "babel-plugin-module-resolver": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.0.0.tgz", @@ -1931,6 +2356,16 @@ } } }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -2010,7 +2445,6 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "optional": true, "requires": { "tweetnacl": "^0.14.3" } @@ -2157,6 +2591,29 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -2240,6 +2697,15 @@ "pkg-up": "^2.0.0" } }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buble": { "version": "0.19.8", "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.8.tgz", @@ -2338,6 +2804,12 @@ "unset-value": "^1.0.0" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -2357,6 +2829,15 @@ "element-size": "^1.1.1" } }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, "cardinal": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz", @@ -2370,8 +2851,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true + "dev": true }, "cdt2d": { "version": "1.0.0", @@ -2461,6 +2941,12 @@ "tslib": "^1.9.0" } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -2551,6 +3037,12 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -2642,7 +3134,6 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "optional": true, "requires": { "delayed-stream": "~1.0.0" } @@ -2997,6 +3488,21 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, "cubic-hermite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", @@ -3137,11 +3643,34 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -3253,8 +3782,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "optional": true + "dev": true }, "des.js": { "version": "1.0.1", @@ -3277,6 +3805,18 @@ "resolved": "https://registry.npmjs.org/detect-kerning/-/detect-kerning-2.1.2.tgz", "integrity": "sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw==" }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -3316,6 +3856,15 @@ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", @@ -3424,7 +3973,6 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, - "optional": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -3767,6 +4315,12 @@ "safe-buffer": "^5.1.1" } }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -3782,6 +4336,12 @@ "strip-eof": "^1.0.0" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -3835,6 +4395,20 @@ "homedir-polyfill": "^1.0.1" } }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, "ext": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", @@ -3854,8 +4428,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "optional": true + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -3952,8 +4525,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "optional": true + "dev": true }, "falafel": { "version": "2.2.4", @@ -3998,6 +4570,15 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -4218,15 +4799,13 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, - "optional": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -4899,7 +5478,6 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0" } @@ -5592,19 +6170,23 @@ "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "optional": true + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, - "optional": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -5744,6 +6326,21 @@ "array-filter": "^1.0.0" } }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", @@ -5776,7 +6373,6 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -5789,6 +6385,15 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "icss-utils": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", @@ -6007,6 +6612,15 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -6084,6 +6698,12 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -6196,8 +6816,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true + "dev": true }, "is-windows": { "version": "1.0.2", @@ -6232,8 +6851,691 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, - "optional": true + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "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 + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.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 + } + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } }, "js-tokens": { "version": "4.0.0", @@ -6244,8 +7546,55 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + } + } }, "jsesc": { "version": "2.5.2", @@ -6263,8 +7612,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -6276,8 +7624,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true + "dev": true }, "json5": { "version": "2.1.3", @@ -6293,7 +7640,6 @@ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, - "optional": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -6312,6 +7658,12 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -6523,6 +7875,12 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -6563,6 +7921,15 @@ "semver": "^5.6.0" } }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -6740,6 +8107,12 @@ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -6782,15 +8155,13 @@ "version": "1.43.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", - "dev": true, - "optional": true + "dev": true }, "mime-types": { "version": "2.1.26", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, - "optional": true, "requires": { "mime-db": "1.43.0" } @@ -6998,6 +8369,12 @@ "to-regex": "^3.0.1" } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "ndarray": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz", @@ -7136,6 +8513,12 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -7181,6 +8564,25 @@ } } }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, "node-releases": { "version": "1.1.53", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", @@ -7280,12 +8682,17 @@ "resolved": "https://registry.npmjs.org/numeric/-/numeric-1.2.6.tgz", "integrity": "sha1-dlsCvvl5iPz4gNTrPza4D6MTNao=" }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -7386,6 +8793,16 @@ "has": "^1.0.3" } }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -7465,6 +8882,15 @@ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7495,6 +8921,12 @@ "p-limit": "^1.1.0" } }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -7706,6 +9138,15 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -7862,6 +9303,12 @@ "world-calendars": "^1.0.3" } }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, "point-cluster": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/point-cluster/-/point-cluster-3.1.8.tgz", @@ -8020,6 +9467,18 @@ "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", "dev": true }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -8053,6 +9512,16 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -8089,8 +9558,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true, - "optional": true + "dev": true }, "public-encrypt": { "version": "4.0.3", @@ -8169,8 +9637,7 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "optional": true + "dev": true }, "quantize": { "version": "1.0.2", @@ -8379,6 +9846,61 @@ "path-type": "^3.0.0" } }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -8404,6 +9926,15 @@ "readable-stream": "^2.0.2" } }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, "redeyed": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", @@ -8623,7 +10154,6 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, - "optional": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -8647,6 +10177,26 @@ "uuid": "^3.3.2" } }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -8872,6 +10422,12 @@ "nearley": "^2.7.10" } }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -8904,14 +10460,36 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, - "optional": true + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } }, "sane-topojson": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/sane-topojson/-/sane-topojson-4.0.0.tgz", "integrity": "sha512-bJILrpBboQfabG3BNnHI2hZl52pbt80BE09u4WhnrmzuF2JbMKZdl62G5glXskJ46p+gxE2IzOwGj/awR4g8AA==" }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", @@ -9033,6 +10611,12 @@ "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -9103,6 +10687,12 @@ } } }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "slab-decomposition": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/slab-decomposition/-/slab-decomposition-1.0.2.tgz", @@ -9271,6 +10861,24 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", @@ -9350,7 +10958,6 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, - "optional": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -9377,6 +10984,12 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=" }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, "static-eval": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz", @@ -9539,6 +11152,12 @@ } } }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -9577,6 +11196,33 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "string-split-by": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", @@ -9695,6 +11341,15 @@ "safe-buffer": "~5.1.0" } }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -9814,6 +11469,12 @@ "svg-path-bounds": "^1.0.1" } }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -9902,6 +11563,18 @@ } } }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, "text-cache": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/text-cache/-/text-cache-4.2.2.tgz", @@ -9910,6 +11583,12 @@ "vectorize-text": "^3.2.1" } }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -9966,6 +11645,12 @@ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, "to-array-buffer": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/to-array-buffer/-/to-array-buffer-3.2.0.tgz", @@ -10075,12 +11760,20 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, - "optional": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "triangulate-hypercube": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/triangulate-hypercube/-/triangulate-hypercube-1.0.1.tgz", @@ -10116,7 +11809,6 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.0.1" } @@ -10135,8 +11827,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "dev": true }, "two-product": { "version": "1.0.2", @@ -10387,6 +12078,18 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, "utils-copy": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/utils-copy/-/utils-copy-1.1.1.tgz", @@ -10434,8 +12137,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "optional": true + "dev": true }, "v8-compile-cache": { "version": "2.0.3", @@ -10548,7 +12250,6 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -10571,6 +12272,24 @@ "pbf": "^3.0.5" } }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, "watchpack": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", @@ -10600,6 +12319,12 @@ "get-canvas-context": "^1.0.1" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "webpack": { "version": "4.42.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.1.tgz", @@ -10817,6 +12542,32 @@ "resolved": "https://registry.npmjs.org/wgs84/-/wgs84-0.0.0.tgz", "integrity": "sha1-NP3FVZF7blfPKigu0ENxDASc3HY=" }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -10897,6 +12648,32 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/viz-lib/package.json b/viz-lib/package.json index 01a5ae97b7..3445199e7d 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -5,12 +5,14 @@ "main": "dist/redash-visualizations.js", "scripts": { "clean": "rm -rf lib dist", - "build:babel": "babel src --out-dir lib --source-maps --copy-files", + "build:babel": "babel src --out-dir lib --source-maps --ignore 'src/**/*.test.js' --copy-files --no-copy-ignored", "build:webpack": "webpack", "build": " NODE_ENV=production npm-run-all clean build:babel build:webpack", - "watch:babel": "babel src --watch --out-dir lib --source-maps --copy-files", + "watch:babel": "babel src --watch --out-dir lib --source-maps --ignore 'src/**/*.test.js' --copy-files --no-copy-ignored", "watch:webpack": "webpack --watch", - "watch": "npm-run-all --parallel watch:*" + "watch": "npm-run-all --parallel watch:*", + "test": "jest", + "test:watch": "jest --watch" }, "repository": { "type": "git", @@ -36,6 +38,7 @@ "enzyme-adapter-react-16": "^1.7.1", "enzyme-to-json": "^3.3.5", "file-loader": "^6.0.0", + "jest": "^24.1.0", "less": "^3.11.1", "less-loader": "^5.0.0", "less-plugin-autoprefix": "^2.0.0", @@ -73,5 +76,19 @@ "tinycolor2": "^1.4.1", "use-debounce": "^3.4.1", "use-media": "^1.4.0" + }, + "jest": { + "rootDir": "./src", + "setupFiles": [ + "../__tests__/enzyme_setup.js", + "../__tests__/mocks.js" + ], + "snapshotSerializers": [ + "enzyme-to-json/serializer" + ], + "moduleNameMapper": { + "^@/(.*)": "/$1", + "\\.(css|less)$": "identity-obj-proxy" + } } } diff --git a/viz-lib/src/visualizations/chart/Editor/ColorsSettings.test.js b/viz-lib/src/visualizations/chart/Editor/ColorsSettings.test.js index b09f2a733a..e8bbe6af22 100644 --- a/viz-lib/src/visualizations/chart/Editor/ColorsSettings.test.js +++ b/viz-lib/src/visualizations/chart/Editor/ColorsSettings.test.js @@ -70,7 +70,7 @@ describe("Visualizations -> Chart -> Editor -> Colors Settings", () => { .simulate("click"); }); - test("Sets custom color scheme", async done => { + test("Sets custom color scheme", done => { const el = mount( { globalSeriesType: "heatmap", From 6711d2908c87e72dc373e20eb96b07aa690c0153 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Tue, 28 Apr 2020 11:22:43 -0300 Subject: [PATCH 12/19] Add step for jest tests --- .circleci/config.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e31d03f0da..f744e815f0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -76,7 +76,12 @@ jobs: - run: sudo pip3 install -r requirements_bundles.txt - run: npm ci - run: npm run bundle - - run: npm test + - run: + name: Run App Tests + command: npm test + - run: + name: Run Visualizations Tests + command: (cd viz-lib && npm test) - run: npm run lint frontend-e2e-tests: environment: From b0fcfd788c6c5f56bc935e345d2c4146bde11329 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Tue, 28 Apr 2020 12:14:11 -0300 Subject: [PATCH 13/19] Include viz-lib on dev commands --- package-lock.json | 132 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 8 ++- 2 files changed, 138 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1603e1ddb1..4dcf8dfdc5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10684,6 +10684,12 @@ "p-is-promise": "^2.0.0" } }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, "merge": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", @@ -11529,6 +11535,23 @@ "resolved": "https://registry.npmjs.org/normals/-/normals-1.1.0.tgz", "integrity": "sha1-MltZXtNK/kZ6bFWhT9kIV4f/WcA=" }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -12168,6 +12191,12 @@ "resolved": "https://registry.npmjs.org/pick-by-alias/-/pick-by-alias-1.2.0.tgz", "integrity": "sha1-X3yysfIabh6ISgyHhVqko3NhEHs=" }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -14971,6 +15000,12 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -15833,6 +15868,103 @@ } } }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, "string.prototype.trim": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", diff --git a/package.json b/package.json index 36a43ead5e..01e07b1634 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,16 @@ "description": "The frontend part of Redash.", "main": "index.js", "scripts": { - "start": "webpack-dev-server", + "start": "npm-run-all --parallel watch:viz webpack-dev-server", "bundle": "bin/bundle-extensions", "clean": "rm -rf ./client/dist/", "build:viz": "(cd viz-lib && npm run build:babel)", "build": "npm run clean && npm run build:viz && NODE_ENV=production webpack", "build:old-node-version": "npm run clean && NODE_ENV=production node --max-old-space-size=4096 node_modules/.bin/webpack", - "watch": "webpack --watch --progress --colors -d", + "watch:app": "webpack --watch --progress --colors -d", + "watch:viz": "(cd viz-lib && npm run watch:babel)", + "watch": "npm-run-all --parallel watch:*", + "webpack-dev-server": "webpack-dev-server", "analyze": "npm run clean && BUNDLE_ANALYZER=on webpack", "analyze:build": "npm run clean && NODE_ENV=production BUNDLE_ANALYZER=on webpack", "lint": "npm run lint:base -- --ext .js --ext .jsx ./client", @@ -114,6 +117,7 @@ "less-plugin-autoprefix": "^1.5.1", "mini-css-extract-plugin": "^0.4.4", "mockdate": "^2.0.2", + "npm-run-all": "^4.1.5", "prettier": "^1.19.1", "raw-loader": "^0.5.1", "react-test-renderer": "^16.5.2", From f2cdda076201d47aab3590e18a83e47586ed0d23 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Tue, 28 Apr 2020 16:59:49 -0300 Subject: [PATCH 14/19] User prettier v1 for now --- viz-lib/package-lock.json | 6 +++--- viz-lib/package.json | 3 ++- .../editor/createTabbedEditor.jsx | 2 +- viz-lib/src/visualizations/table/utils.js | 20 +++++++++++-------- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/viz-lib/package-lock.json b/viz-lib/package-lock.json index 7391333146..900ae93944 100644 --- a/viz-lib/package-lock.json +++ b/viz-lib/package-lock.json @@ -9462,9 +9462,9 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prettier": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", - "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true }, "pretty-format": { diff --git a/viz-lib/package.json b/viz-lib/package.json index 3445199e7d..aea40b2760 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -11,6 +11,7 @@ "watch:babel": "babel src --watch --out-dir lib --source-maps --ignore 'src/**/*.test.js' --copy-files --no-copy-ignored", "watch:webpack": "webpack --watch", "watch": "npm-run-all --parallel watch:*", + "prettier": "prettier --write 'src/**/*.{js,jsx}'", "test": "jest", "test:watch": "jest --watch" }, @@ -43,7 +44,7 @@ "less-loader": "^5.0.0", "less-plugin-autoprefix": "^2.0.0", "npm-run-all": "^4.1.5", - "prettier": "^2.0.4", + "prettier": "^1.19.1", "prop-types": "^15.7.2", "style-loader": "^1.1.4", "webpack": "^4.42.1", diff --git a/viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx b/viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx index e4edef469f..62f767d437 100644 --- a/viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx +++ b/viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx @@ -15,7 +15,7 @@ export function TabbedEditor({ tabs, options, data, onOptionsChange, ...restProp onOptionsChange(updateStrategy(options, newOptions)); }; - tabs = filter(tabs, (tab) => (isFunction(tab.isAvailable) ? tab.isAvailable(options, data) : true)); + tabs = filter(tabs, tab => (isFunction(tab.isAvailable) ? tab.isAvailable(options, data) : true)); return ( diff --git a/viz-lib/src/visualizations/table/utils.js b/viz-lib/src/visualizations/table/utils.js index f60f6e9dd7..3fe890376c 100644 --- a/viz-lib/src/visualizations/table/utils.js +++ b/viz-lib/src/visualizations/table/utils.js @@ -17,7 +17,7 @@ function nextOrderByDirection(direction) { } function toggleOrderBy(columnName, orderBy = [], multiColumnSort = false) { - const index = findIndex(orderBy, (i) => i.name === columnName); + const index = findIndex(orderBy, i => i.name === columnName); const item = { name: columnName, direction: "ascend" }; if (index >= 0) { item.direction = nextOrderByDirection(orderBy[index].direction); @@ -25,7 +25,7 @@ function toggleOrderBy(columnName, orderBy = [], multiColumnSort = false) { if (multiColumnSort) { if (!item.direction) { - return filter(orderBy, (i) => i.name !== columnName); + return filter(orderBy, i => i.name !== columnName); } if (index >= 0) { orderBy[index] = item; @@ -52,7 +52,7 @@ export function prepareColumns(columns, searchInput, orderBy, onOrderByChange) { const isMultiColumnSort = orderBy.length > 1; const orderByInfo = getOrderByInfo(orderBy); - let tableColumns = map(columns, (column) => { + let tableColumns = map(columns, column => { const isAscend = orderByInfo[column.name] && orderByInfo[column.name].direction === "ascend"; const isDescend = orderByInfo[column.name] && orderByInfo[column.name].direction === "descend"; @@ -98,7 +98,7 @@ export function prepareColumns(columns, searchInput, orderBy, onOrderByChange) { className: cx("ant-table-column-has-actions ant-table-column-has-sorters", { "table-visualization-column-is-sorted": isAscend || isDescend, }), - onClick: (event) => onOrderByChange(toggleOrderBy(column.name, orderBy, event.shiftKey)), + onClick: event => onOrderByChange(toggleOrderBy(column.name, orderBy, event.shiftKey)), }), }; @@ -153,16 +153,20 @@ export function initRows(rows) { export function filterRows(rows, searchTerm, searchColumns) { if (searchTerm !== "" && searchColumns.length > 0) { searchTerm = searchTerm.toUpperCase(); - const matchFields = map(searchColumns, (column) => { + const matchFields = map(searchColumns, column => { const initColumn = ColumnTypes[column.displayAs]; const { prepareData } = initColumn(column); - return (row) => { + return row => { const { text } = prepareData(row); - return toString(text).toUpperCase().indexOf(searchTerm) >= 0; + return ( + toString(text) + .toUpperCase() + .indexOf(searchTerm) >= 0 + ); }; }); - return filter(rows, (row) => some(matchFields, (match) => match(row.record))); + return filter(rows, row => some(matchFields, match => match(row.record))); } return rows; } From 8f7b987874ce7389eed433c0cdf222252cc27092 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Tue, 28 Apr 2020 17:03:42 -0300 Subject: [PATCH 15/19] Delete unused libs on the app --- client/app/lib/chooseTextColorForBackground.js | 11 ----------- client/app/lib/hooks/useMemoWithDeepCompare.js | 11 ----------- 2 files changed, 22 deletions(-) delete mode 100644 client/app/lib/chooseTextColorForBackground.js delete mode 100644 client/app/lib/hooks/useMemoWithDeepCompare.js diff --git a/client/app/lib/chooseTextColorForBackground.js b/client/app/lib/chooseTextColorForBackground.js deleted file mode 100644 index dd84870f28..0000000000 --- a/client/app/lib/chooseTextColorForBackground.js +++ /dev/null @@ -1,11 +0,0 @@ -import { maxBy } from "lodash"; -import chroma from "chroma-js"; - -export default function chooseTextColorForBackground(backgroundColor, textColors = ["#ffffff", "#333333"]) { - try { - backgroundColor = chroma(backgroundColor); - return maxBy(textColors, color => chroma.contrast(backgroundColor, color)); - } catch (e) { - return null; - } -} diff --git a/client/app/lib/hooks/useMemoWithDeepCompare.js b/client/app/lib/hooks/useMemoWithDeepCompare.js deleted file mode 100644 index 381253cae8..0000000000 --- a/client/app/lib/hooks/useMemoWithDeepCompare.js +++ /dev/null @@ -1,11 +0,0 @@ -import { isEqual } from "lodash"; -import { useMemo, useRef } from "react"; - -export default function useMemoWithDeepCompare(create, inputs) { - const valueRef = useRef(); - const value = useMemo(create, inputs); - if (!isEqual(value, valueRef.current)) { - valueRef.current = value; - } - return valueRef.current; -} From 66d7162f1bdfc890ec6bc9b2d87499f1ea5b0d90 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Sun, 3 May 2020 20:54:33 -0300 Subject: [PATCH 16/19] Add readme draft (to be finished) --- viz-lib/README.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 viz-lib/README.md diff --git a/viz-lib/README.md b/viz-lib/README.md new file mode 100644 index 0000000000..e3c929347f --- /dev/null +++ b/viz-lib/README.md @@ -0,0 +1,39 @@ +# @redash/viz + +![Version](https://img.shields.io/npm/v/@redash/viz) + +`@redash/viz` is a library containing the visualizations used by [Redash](https://redash.io). + +## Installation + +Using npm: + +```bash +npm install @redash/viz +``` + +Using yarn: + +```bash +yarn add @redash/viz +``` + +## Usage + +You can check [our live example](https://codesandbox.io/s/redashviz-v9odv) or follow the code below: + +```jsx +import { Renderer, Editor } from "@redash/viz"; + +function Example() { + return ; +} +``` + +### Available Types + +- ... + +## License + +BSD-2-Clause. From 2505abcccf3292652ed395a7e9ac1bd9b17ed709 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Mon, 4 May 2020 19:17:09 -0300 Subject: [PATCH 17/19] Add getOptions to Editor --- viz-lib/src/visualizations/Editor.jsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/viz-lib/src/visualizations/Editor.jsx b/viz-lib/src/visualizations/Editor.jsx index 01fe1cd167..1d78ce0685 100644 --- a/viz-lib/src/visualizations/Editor.jsx +++ b/viz-lib/src/visualizations/Editor.jsx @@ -1,11 +1,13 @@ -import React from "react"; +import React, { useMemo } from "react"; import PropTypes from "prop-types"; import { EditorPropTypes } from "@/visualizations/prop-types"; import registeredVisualizations from "@/visualizations/registeredVisualizations"; -export default function Editor({ type, ...otherProps }) { - const { Editor } = registeredVisualizations[type]; - return ; +export default function Editor({ type, options: optionsProp, data, ...otherProps }) { + const { Editor, getOptions } = registeredVisualizations[type]; + const options = useMemo(() => getOptions(optionsProp, data), [optionsProp, data]); + + return ; } Editor.propTypes = { From 5e8124a74d4afcccaf6a4b84681044e0baf00275 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Mon, 4 May 2020 22:32:22 -0300 Subject: [PATCH 18/19] Add required libraries and finish basic example --- viz-lib/README.md | 55 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/viz-lib/README.md b/viz-lib/README.md index e3c929347f..2e4cce905a 100644 --- a/viz-lib/README.md +++ b/viz-lib/README.md @@ -6,6 +6,12 @@ ## Installation +Required libraries: + +- react (`>=16.8.0`) +- react-dom (`>=16.8.0`) +- antd (`>=3.19.0 < 4`) + Using npm: ```bash @@ -23,16 +29,61 @@ yarn add @redash/viz You can check [our live example](https://codesandbox.io/s/redashviz-v9odv) or follow the code below: ```jsx +import React, { useState } from "react"; import { Renderer, Editor } from "@redash/viz"; +const exampleData = { + columns: [ + { type: null, name: "Country" }, + { type: null, name: "Amount" }, + ], + rows: [ + { Amount: 37.620000000000005, Country: "Argentina" }, + { Amount: 37.620000000000005, Country: "Australia" }, + { Amount: 42.62, Country: "Austria" }, + { Amount: 37.62, Country: "Belgium" }, + { Amount: 190.09999999999997, Country: "Brazil" }, + { Amount: 303.9599999999999, Country: "Canada" }, + { Amount: 46.62, Country: "Chile" }, + { Amount: 90.24000000000001, Country: "Czech Republic" }, + { Amount: 37.620000000000005, Country: "Denmark" }, + { Amount: 41.620000000000005, Country: "Finland" }, + { Amount: 195.09999999999994, Country: "France" }, + ], +}; + function Example() { - return ; + const [options, setOptions] = useState({ countRows: true }); + + return ( +
+ + +
+ ); } ``` ### Available Types -- ... +- Chart: `CHART` +- Cohort: `COHORT` +- Counter: `COUNTER` +- Details View: `DETAILS` +- Funnel: `FUNNEL` +- Map (Choropleth): `CHOROPLETH` +- Map (Markers): `MAP` +- Pivot Table: `PIVOT` +- Sankey: `SANKEY` +- Sunburst Sequence: `SUNBURST_SEQUENCE` +- Table: `TABLE` +- Word Cloud: `WORD_CLOUD` ## License From 8489794f39057d5ad0ea42579fc304bb7c2d07cc Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Mon, 4 May 2020 22:48:42 -0300 Subject: [PATCH 19/19] Bump version --- viz-lib/package-lock.json | 2 +- viz-lib/package.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/viz-lib/package-lock.json b/viz-lib/package-lock.json index 900ae93944..8fd0d7ece9 100644 --- a/viz-lib/package-lock.json +++ b/viz-lib/package-lock.json @@ -1,6 +1,6 @@ { "name": "@redash/viz", - "version": "0.1.0", + "version": "0.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/viz-lib/package.json b/viz-lib/package.json index aea40b2760..058cce0340 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -1,6 +1,6 @@ { "name": "@redash/viz", - "version": "0.1.0", + "version": "0.1.1", "description": "Redash visualizations", "main": "dist/redash-visualizations.js", "scripts": { @@ -11,6 +11,7 @@ "watch:babel": "babel src --watch --out-dir lib --source-maps --ignore 'src/**/*.test.js' --copy-files --no-copy-ignored", "watch:webpack": "webpack --watch", "watch": "npm-run-all --parallel watch:*", + "version": "npm run build", "prettier": "prettier --write 'src/**/*.{js,jsx}'", "test": "jest", "test:watch": "jest --watch"