diff --git a/.corenode b/.corenode
new file mode 100755
index 00000000..bedde2c0
--- /dev/null
+++ b/.corenode
@@ -0,0 +1,3 @@
+{
+ "version": "0.13.0"
+}
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100755
index 7e3649ac..00000000
--- a/.editorconfig
+++ /dev/null
@@ -1,16 +0,0 @@
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
-[Makefile]
-indent_style = tab
diff --git a/.env b/.env
deleted file mode 100755
index 8637115c..00000000
--- a/.env
+++ /dev/null
@@ -1,2 +0,0 @@
-UMI_UI=false
-NODE_ENV=development
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
old mode 100755
new mode 100644
index 3efaa1b0..32dd8b43
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,29 @@
-# dependencies
-/node_modules
-/npm-debug.log*
-/yarn-error.log
-/yarn.lock
+# Secrets
+/**/**/.env
+/**/**/origin.server
+/**/**/server.manifest
+/**/**/server.registry
-# production
-/build
-/dist
-/out
+# Trash
+/**/**/.crash.log
+/**/**/.tmp
+/**/**/.cache
+/**/**/out
+/**/**/.out
+/**/**/dist
+/**/**/node_modules
+/**/**/corenode_modules
+/**/**/.DS_Store
+/**/**/package-lock.json
+/**/**/yarn.lock
+/**/**/.evite
+/**/**/d_data
-# umi
-/packages/**/src/.umi
-/packages/**/src/.umi-production
-/packages/**/src/.umi-test
-/packages/**/.env.local
+# Logs
+/**/**/npm-debug.log*
+/**/**/yarn-error.log
+/**/**/dumps.log
+/**/**/corenode.log
-/packages/*/src/.umi
-/packages/*/src/.umi-production
-/packages/*/src/.umi-test
-/packages/*/.env.local
-
-/.env.local
-
-/packages/*/node_modules
-/packages/**/node_modules
\ No newline at end of file
+# Temporal configurations
+/**/**/.aliaser
\ No newline at end of file
diff --git a/.nodecore b/.nodecore
deleted file mode 100755
index 8c0786d5..00000000
--- a/.nodecore
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "version": "0.12.8",
- "devRuntime": {
- "headPackage": "ragestudio"
- },
- "runtime": {
- "src": "/src",
- "UUID": "C8mVSr-4nmPp2-pr5Vrz-CU4kg4",
- "stage": "alpha"
- }
-}
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100755
index 0d4222f5..00000000
--- a/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-**/*.md
-**/*.svg
-**/*.ejs
-**/*.html
-package.json
-.umi
-.umi-production
-.umi-test
diff --git a/.prettierrc b/.prettierrc
deleted file mode 100755
index 94beb148..00000000
--- a/.prettierrc
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "singleQuote": true,
- "trailingComma": "all",
- "printWidth": 80,
- "overrides": [
- {
- "files": ".prettierrc",
- "options": { "parser": "json" }
- }
- ]
-}
diff --git a/callback_codes.md b/callback_codes.md
deleted file mode 100755
index d4353b54..00000000
--- a/callback_codes.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Callback Codes
-
-## 000 - 100 > Runtime
-
-| code | type |
-|--|--|
-| | |
-
-
-## 100 - 200 > Operations results
-
-| code | type | description
-|--|--|--|
-| 100 | successful operation | |
-| 110 | failed operation | unhandled |
-| 115 | invalid operation | |
-> API/WS Requests callbacks codes
-
-| | | |
-|--|--|--|
-| 130 | needs auth | |
-| 131 | no user send | |
-| 132 | no id_user send | |
-| 133 | no password send | |
-| 134 | no token send | |
-| 135 | no server_key send | |
-| 136 | no payload send | |
-> API/WS Invalid requests
-
-| | | |
-|--|--|--|
-| 140 | invalid auth |
-| 141 | invalid/notfound user |
-| 142 | invalid/notfound id_user |
-| 143 | invalid password |
-| 144 | invalid/notfound token |
-| 145 | invalid server_key | fails when the sended server_key is not valid |
-| 146 | invalid payload | bad typeof / missing parameter / bad parameter |
-
-## 200 - 300 > Permissions
diff --git a/dumps.log b/dumps.log
new file mode 100644
index 00000000..0f05f56f
--- /dev/null
+++ b/dumps.log
@@ -0,0 +1,4 @@
+> 2021-11-16T16:47:12.984Z (anonymous)[info] : sync versions on package.json [/home/srgooglo/repos/comty/packages/comty] > /home/srgooglo/repos/comty/packages/comty/package.json
+> 2021-11-16T16:47:12.985Z (anonymous)[info] : sync versions on package.json [/home/srgooglo/repos/comty/packages/server] > /home/srgooglo/repos/comty/packages/server/package.json
+> 2021-11-16T16:47:12.985Z (anonymous)[info] : sync versions on package.json [/home/srgooglo/repos/comty/packages/wrapper] > /home/srgooglo/repos/comty/packages/wrapper/package.json
+> 2021-11-16T16:47:12.986Z (anonymous)[info] : sync versions on package.json [/home/srgooglo/repos/comty] > /home/srgooglo/repos/comty/package.json
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index d3657738..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,4170 +0,0 @@
-{
- "requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "7zip-bin": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.0.3.tgz",
- "integrity": "sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA=="
- },
- "@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/compat-data": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz",
- "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw=="
- },
- "@babel/core": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz",
- "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==",
- "requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.10",
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helpers": "^7.12.5",
- "@babel/parser": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/traverse": "^7.12.10",
- "@babel/types": "^7.12.10",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.1",
- "json5": "^2.1.2",
- "lodash": "^4.17.19",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- }
- },
- "@babel/generator": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
- "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
- "requires": {
- "@babel/types": "^7.12.11",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-annotate-as-pure": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz",
- "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==",
- "requires": {
- "@babel/types": "^7.12.10"
- }
- },
- "@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz",
- "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==",
- "requires": {
- "@babel/helper-explode-assignable-expression": "^7.10.4",
- "@babel/types": "^7.10.4"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.12.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz",
- "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==",
- "requires": {
- "@babel/compat-data": "^7.12.5",
- "@babel/helper-validator-option": "^7.12.1",
- "browserslist": "^4.14.5",
- "semver": "^5.5.0"
- }
- },
- "@babel/helper-create-class-features-plugin": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz",
- "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==",
- "requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-member-expression-to-functions": "^7.12.1",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.10.4"
- }
- },
- "@babel/helper-create-regexp-features-plugin": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz",
- "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "regexpu-core": "^4.7.1"
- }
- },
- "@babel/helper-define-map": {
- "version": "7.10.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
- "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
- "requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/types": "^7.10.5",
- "lodash": "^4.17.19"
- }
- },
- "@babel/helper-explode-assignable-expression": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz",
- "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==",
- "requires": {
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz",
- "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==",
- "requires": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz",
- "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==",
- "requires": {
- "@babel/types": "^7.12.10"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz",
- "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==",
- "requires": {
- "@babel/types": "^7.10.4"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz",
- "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==",
- "requires": {
- "@babel/types": "^7.12.7"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.12.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz",
- "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==",
- "requires": {
- "@babel/types": "^7.12.5"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz",
- "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==",
- "requires": {
- "@babel/helper-module-imports": "^7.12.1",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-simple-access": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/helper-validator-identifier": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.12.1",
- "@babel/types": "^7.12.1",
- "lodash": "^4.17.19"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz",
- "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==",
- "requires": {
- "@babel/types": "^7.12.10"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
- "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg=="
- },
- "@babel/helper-remap-async-to-generator": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz",
- "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "@babel/helper-wrap-function": "^7.10.4",
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-replace-supers": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz",
- "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==",
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.12.7",
- "@babel/helper-optimise-call-expression": "^7.12.10",
- "@babel/traverse": "^7.12.10",
- "@babel/types": "^7.12.11"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz",
- "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==",
- "requires": {
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
- "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
- "requires": {
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz",
- "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==",
- "requires": {
- "@babel/types": "^7.12.11"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
- "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
- },
- "@babel/helper-validator-option": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz",
- "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw=="
- },
- "@babel/helper-wrap-function": {
- "version": "7.12.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz",
- "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==",
- "requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.10.4",
- "@babel/types": "^7.10.4"
- }
- },
- "@babel/helpers": {
- "version": "7.12.5",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz",
- "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==",
- "requires": {
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.12.5",
- "@babel/types": "^7.12.5"
- }
- },
- "@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
- "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz",
- "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg=="
- },
- "@babel/plugin-proposal-async-generator-functions": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz",
- "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-remap-async-to-generator": "^7.12.1",
- "@babel/plugin-syntax-async-generators": "^7.8.0"
- }
- },
- "@babel/plugin-proposal-class-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz",
- "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==",
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-do-expressions": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.12.1.tgz",
- "integrity": "sha512-bpJ6Bfrzvdzb0vG6zBSNh3HLgFKh+S2CBpNmaLRjg2u7cNkzRPIqBjVURCmpG6pvPfKyxkizwbrXwpYtW3a9cw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-do-expressions": "^7.12.1"
- }
- },
- "@babel/plugin-proposal-dynamic-import": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz",
- "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-dynamic-import": "^7.8.0"
- }
- },
- "@babel/plugin-proposal-export-default-from": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz",
- "integrity": "sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-export-default-from": "^7.12.1"
- }
- },
- "@babel/plugin-proposal-export-namespace-from": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz",
- "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-json-strings": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz",
- "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.0"
- }
- },
- "@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz",
- "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz",
- "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
- }
- },
- "@babel/plugin-proposal-numeric-separator": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz",
- "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-object-rest-spread": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz",
- "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
- "@babel/plugin-transform-parameters": "^7.12.1"
- }
- },
- "@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz",
- "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
- }
- },
- "@babel/plugin-proposal-optional-chaining": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz",
- "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
- "@babel/plugin-syntax-optional-chaining": "^7.8.0"
- }
- },
- "@babel/plugin-proposal-private-methods": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz",
- "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==",
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz",
- "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz",
- "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-do-expressions": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.12.1.tgz",
- "integrity": "sha512-a9TknRXkzfetNjOWSWnPIG/Y7x+elzcmKng2Qpvh8QaqdPo0OABizTjco8YO8r5xZNQfE58YHq7lWR+PKwHyxg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-export-default-from": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz",
- "integrity": "sha512-dP5eGg6tHEkhnRD2/vRG/KJKRSg8gtxu2i+P/8/yFPJn/CfPU5G0/7Gks2i3M6IOVAPQekmsLN9LPsmXFFL4Uw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
- }
- },
- "@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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@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==",
- "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==",
- "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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz",
- "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-typescript": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz",
- "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-arrow-functions": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz",
- "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz",
- "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==",
- "requires": {
- "@babel/helper-module-imports": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-remap-async-to-generator": "^7.12.1"
- }
- },
- "@babel/plugin-transform-block-scoped-functions": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz",
- "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-block-scoping": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz",
- "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-classes": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz",
- "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "@babel/helper-define-map": "^7.10.4",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.10.4",
- "globals": "^11.1.0"
- }
- },
- "@babel/plugin-transform-computed-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz",
- "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-destructuring": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz",
- "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-dotall-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz",
- "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-duplicate-keys": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz",
- "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-exponentiation-operator": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz",
- "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==",
- "requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-for-of": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz",
- "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-function-name": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz",
- "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==",
- "requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz",
- "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-member-expression-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz",
- "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-modules-amd": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz",
- "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==",
- "requires": {
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "babel-plugin-dynamic-import-node": "^2.3.3"
- }
- },
- "@babel/plugin-transform-modules-commonjs": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz",
- "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==",
- "requires": {
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-simple-access": "^7.12.1",
- "babel-plugin-dynamic-import-node": "^2.3.3"
- }
- },
- "@babel/plugin-transform-modules-systemjs": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz",
- "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==",
- "requires": {
- "@babel/helper-hoist-variables": "^7.10.4",
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-validator-identifier": "^7.10.4",
- "babel-plugin-dynamic-import-node": "^2.3.3"
- }
- },
- "@babel/plugin-transform-modules-umd": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz",
- "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==",
- "requires": {
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz",
- "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1"
- }
- },
- "@babel/plugin-transform-new-target": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz",
- "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-object-super": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz",
- "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1"
- }
- },
- "@babel/plugin-transform-parameters": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz",
- "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-property-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz",
- "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-regenerator": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz",
- "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==",
- "requires": {
- "regenerator-transform": "^0.14.2"
- }
- },
- "@babel/plugin-transform-reserved-words": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz",
- "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-runtime": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz",
- "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==",
- "requires": {
- "@babel/helper-module-imports": "^7.12.5",
- "@babel/helper-plugin-utils": "^7.10.4",
- "semver": "^5.5.1"
- }
- },
- "@babel/plugin-transform-shorthand-properties": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz",
- "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-spread": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz",
- "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
- }
- },
- "@babel/plugin-transform-sticky-regex": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz",
- "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-template-literals": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz",
- "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-typeof-symbol": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz",
- "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-typescript": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz",
- "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==",
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-typescript": "^7.12.1"
- }
- },
- "@babel/plugin-transform-unicode-escapes": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz",
- "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-transform-unicode-regex": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz",
- "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.1",
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/preset-env": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz",
- "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==",
- "requires": {
- "@babel/compat-data": "^7.12.7",
- "@babel/helper-compilation-targets": "^7.12.5",
- "@babel/helper-module-imports": "^7.12.5",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-validator-option": "^7.12.11",
- "@babel/plugin-proposal-async-generator-functions": "^7.12.1",
- "@babel/plugin-proposal-class-properties": "^7.12.1",
- "@babel/plugin-proposal-dynamic-import": "^7.12.1",
- "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
- "@babel/plugin-proposal-json-strings": "^7.12.1",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
- "@babel/plugin-proposal-numeric-separator": "^7.12.7",
- "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
- "@babel/plugin-proposal-optional-catch-binding": "^7.12.1",
- "@babel/plugin-proposal-optional-chaining": "^7.12.7",
- "@babel/plugin-proposal-private-methods": "^7.12.1",
- "@babel/plugin-proposal-unicode-property-regex": "^7.12.1",
- "@babel/plugin-syntax-async-generators": "^7.8.0",
- "@babel/plugin-syntax-class-properties": "^7.12.1",
- "@babel/plugin-syntax-dynamic-import": "^7.8.0",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.0",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@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.12.1",
- "@babel/plugin-transform-arrow-functions": "^7.12.1",
- "@babel/plugin-transform-async-to-generator": "^7.12.1",
- "@babel/plugin-transform-block-scoped-functions": "^7.12.1",
- "@babel/plugin-transform-block-scoping": "^7.12.11",
- "@babel/plugin-transform-classes": "^7.12.1",
- "@babel/plugin-transform-computed-properties": "^7.12.1",
- "@babel/plugin-transform-destructuring": "^7.12.1",
- "@babel/plugin-transform-dotall-regex": "^7.12.1",
- "@babel/plugin-transform-duplicate-keys": "^7.12.1",
- "@babel/plugin-transform-exponentiation-operator": "^7.12.1",
- "@babel/plugin-transform-for-of": "^7.12.1",
- "@babel/plugin-transform-function-name": "^7.12.1",
- "@babel/plugin-transform-literals": "^7.12.1",
- "@babel/plugin-transform-member-expression-literals": "^7.12.1",
- "@babel/plugin-transform-modules-amd": "^7.12.1",
- "@babel/plugin-transform-modules-commonjs": "^7.12.1",
- "@babel/plugin-transform-modules-systemjs": "^7.12.1",
- "@babel/plugin-transform-modules-umd": "^7.12.1",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1",
- "@babel/plugin-transform-new-target": "^7.12.1",
- "@babel/plugin-transform-object-super": "^7.12.1",
- "@babel/plugin-transform-parameters": "^7.12.1",
- "@babel/plugin-transform-property-literals": "^7.12.1",
- "@babel/plugin-transform-regenerator": "^7.12.1",
- "@babel/plugin-transform-reserved-words": "^7.12.1",
- "@babel/plugin-transform-shorthand-properties": "^7.12.1",
- "@babel/plugin-transform-spread": "^7.12.1",
- "@babel/plugin-transform-sticky-regex": "^7.12.7",
- "@babel/plugin-transform-template-literals": "^7.12.1",
- "@babel/plugin-transform-typeof-symbol": "^7.12.10",
- "@babel/plugin-transform-unicode-escapes": "^7.12.1",
- "@babel/plugin-transform-unicode-regex": "^7.12.1",
- "@babel/preset-modules": "^0.1.3",
- "@babel/types": "^7.12.11",
- "core-js-compat": "^3.8.0",
- "semver": "^5.5.0"
- }
- },
- "@babel/preset-modules": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
- "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
- "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-typescript": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz",
- "integrity": "sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-validator-option": "^7.12.1",
- "@babel/plugin-transform-typescript": "^7.12.1"
- }
- },
- "@babel/runtime": {
- "version": "7.12.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
- "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
- "requires": {
- "regenerator-runtime": "^0.13.4"
- }
- },
- "@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
- "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
- "requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
- }
- },
- "@babel/traverse": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz",
- "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==",
- "requires": {
- "@babel/code-frame": "^7.12.11",
- "@babel/generator": "^7.12.11",
- "@babel/helper-function-name": "^7.12.11",
- "@babel/helper-split-export-declaration": "^7.12.11",
- "@babel/parser": "^7.12.11",
- "@babel/types": "^7.12.12",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.19"
- }
- },
- "@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz",
- "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@nodecorejs/builder": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/@nodecorejs/builder/-/builder-0.15.1.tgz",
- "integrity": "sha512-XGhjU082rimBucHVUYcRqD3SDFUQfnIQae65A/49ssVCE2vFxhtozkfV3Zu9tPq+DteqjGuopm1NlcDk5npzfw==",
- "requires": {
- "@babel/core": "^7.12.10",
- "@babel/plugin-proposal-class-properties": "^7.12.1",
- "@babel/plugin-proposal-do-expressions": "^7.12.1",
- "@babel/plugin-proposal-export-default-from": "^7.12.1",
- "@babel/plugin-transform-runtime": "^7.12.10",
- "@babel/preset-env": "^7.12.11",
- "@babel/preset-typescript": "^7.12.7",
- "@babel/runtime": "^7.12.5",
- "@nodecorejs/utils": "0.15.1",
- "rimraf": "^3.0.2",
- "slash2": "^2.0.0",
- "through2": "^4.0.2",
- "vinyl-fs": "^3.0.3"
- }
- },
- "@nodecorejs/cli": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/@nodecorejs/cli/-/cli-0.15.1.tgz",
- "integrity": "sha512-jEpsvtHlsOvYO7cby7MMaxYt4V8Z4AIxjwVZ2yVKT5O/8aUqC/1aWXp6mOjZVEFt0g8oVqatolbjXsLVvS6WiA==",
- "requires": {
- "7zip-bin": "^5.0.3",
- "@nodecorejs/builder": "0.15.1",
- "@nodecorejs/dot-runtime": "0.15.1",
- "@nodecorejs/utils": "0.15.1",
- "axios": "^0.21.0",
- "chalk": "^4.1.0",
- "cli-spinners": "^2.5.0",
- "escape-goat": "^3.0.0",
- "execa": "^4.1.0",
- "inquirer": "^7.3.3",
- "listr": "^0.14.3",
- "log4js": "^6.3.0",
- "new-github-release-url": "^1.0.0",
- "node-7z": "^2.1.2",
- "node-fetch": "^2.6.1",
- "open": "^7.3.0",
- "ora": "^5.1.0",
- "prompt": "^1.0.0",
- "yargs": "^16.2.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@nodecorejs/dot-runtime": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/@nodecorejs/dot-runtime/-/dot-runtime-0.15.1.tgz",
- "integrity": "sha512-KdCM24ha3jG07eMqUvJYXBzt3D726agDapDN3GWPPxBXSGU15p75dcnpM7YDQPUi72F4kP5jORVInLkYAUqYnA==",
- "requires": {
- "@nodecorejs/utils": "0.15.1"
- }
- },
- "@nodecorejs/utils": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/@nodecorejs/utils/-/utils-0.15.1.tgz",
- "integrity": "sha512-mZeNA/jFQWJZk/M4zRM7m7JTZ6fTul33D1HS1X20gaPI9nGVungfnBcAR19L29AdIzKhJDsgg6le8Pc43JpzEg==",
- "requires": {
- "@babel/core": "^7.12.9",
- "chalk": "^4.1.0",
- "color": "^3.1.3",
- "lodash": "^4.17.15",
- "stack-trace": "^0.0.10"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@ragestudio/nodecorejs": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/@ragestudio/nodecorejs/-/nodecorejs-0.15.1.tgz",
- "integrity": "sha512-xpvxEsZYTAI3DW3uacpiyihkJYXd+qqURv/t/Ysao4N6RNhPO+gVyNmzOb2Kvf9FT/1PWLMP1YTHpzw/4q6kWQ==",
- "requires": {
- "@babel/core": "7.12.9",
- "@babel/runtime": "^7.12.5",
- "@nodecorejs/builder": "0.15.1",
- "@nodecorejs/cli": "0.15.1",
- "@nodecorejs/dot-runtime": "0.15.1",
- "@nodecorejs/utils": "0.15.1",
- "resolve-cwd": "^3.0.0"
- },
- "dependencies": {
- "@babel/core": {
- "version": "7.12.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz",
- "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==",
- "requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.5",
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helpers": "^7.12.5",
- "@babel/parser": "^7.12.7",
- "@babel/template": "^7.12.7",
- "@babel/traverse": "^7.12.9",
- "@babel/types": "^7.12.7",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.1",
- "json5": "^2.1.2",
- "lodash": "^4.17.19",
- "resolve": "^1.3.2",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- }
- }
- }
- },
- "@samverschueren/stream-to-observable": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz",
- "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==",
- "requires": {
- "any-observable": "^0.3.0"
- }
- },
- "@types/node": {
- "version": "14.14.20",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz",
- "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==",
- "dev": true
- },
- "ansi-escapes": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
- "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
- "requires": {
- "type-fest": "^0.11.0"
- }
- },
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
- },
- "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"
- }
- },
- "any-observable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
- "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog=="
- },
- "append-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
- "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
- "requires": {
- "buffer-equal": "^1.0.0"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "async": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
- },
- "axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
- "requires": {
- "follow-redirects": "^1.10.0"
- }
- },
- "babel-plugin-dynamic-import-node": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
- "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
- "requires": {
- "object.assign": "^4.1.0"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
- },
- "bl": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
- "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "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"
- }
- },
- "browserslist": {
- "version": "4.16.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz",
- "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==",
- "requires": {
- "caniuse-lite": "^1.0.30001173",
- "colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.634",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.69"
- }
- },
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74="
- },
- "call-bind": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.1.tgz",
- "integrity": "sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "caniuse-lite": {
- "version": "1.0.30001173",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz",
- "integrity": "sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw=="
- },
- "catharsis": {
- "version": "0.8.11",
- "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz",
- "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "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"
- }
- },
- "chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "cli-spinners": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz",
- "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ=="
- },
- "cli-truncate": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
- "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
- "requires": {
- "slice-ansi": "0.0.4",
- "string-width": "^1.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw=="
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
- },
- "clone-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
- "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg="
- },
- "clone-stats": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
- "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA="
- },
- "cloneable-readable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
- "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
- "requires": {
- "inherits": "^2.0.1",
- "process-nextick-args": "^2.0.0",
- "readable-stream": "^2.3.5"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "color": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz",
- "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==",
- "requires": {
- "color-convert": "^1.9.1",
- "color-string": "^1.5.4"
- }
- },
- "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-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "color-string": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz",
- "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==",
- "requires": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
- }
- },
- "colorette": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
- "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw=="
- },
- "colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "concurrently": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
- "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "date-fns": "^2.0.1",
- "lodash": "^4.17.15",
- "read-pkg": "^4.0.1",
- "rxjs": "^6.5.2",
- "spawn-command": "^0.0.2-1",
- "supports-color": "^6.1.0",
- "tree-kill": "^1.2.2",
- "yargs": "^13.3.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
- },
- "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"
- }
- },
- "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
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "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"
- }
- },
- "y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "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==",
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "core-js-compat": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.2.tgz",
- "integrity": "sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ==",
- "requires": {
- "browserslist": "^4.16.0",
- "semver": "7.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
- "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A=="
- }
- }
- },
- "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="
- },
- "cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.1"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "cycle": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
- "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI="
- },
- "date-fns": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz",
- "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==",
- "dev": true
- },
- "date-format": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
- "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w=="
- },
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "deep-equal": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz",
- "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0="
- },
- "defaults": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "requires": {
- "clone": "^1.0.2"
- },
- "dependencies": {
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
- }
- }
- },
- "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"
- }
- },
- "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"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "electron-to-chromium": {
- "version": "1.3.635",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.635.tgz",
- "integrity": "sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ=="
- },
- "elegant-spinner": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
- "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4="
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "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"
- }
- },
- "entities": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
- "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
- "dev": true
- },
- "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"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
- },
- "escape-goat": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz",
- "integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw=="
- },
- "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="
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
- },
- "execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "requires": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- }
- },
- "eyes": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
- "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
- },
- "figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "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"
- }
- },
- "flatted": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
- "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA=="
- },
- "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==",
- "requires": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "follow-redirects": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz",
- "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg=="
- },
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "fs-mkdirp-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
- "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
- "requires": {
- "graceful-fs": "^4.1.11",
- "through2": "^2.0.3"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
- },
- "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=="
- },
- "get-intrinsic": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz",
- "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- }
- },
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "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=",
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "glob-stream": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
- "requires": {
- "extend": "^3.0.0",
- "glob": "^7.1.1",
- "glob-parent": "^3.1.0",
- "is-negated-glob": "^1.0.0",
- "ordered-read-streams": "^1.0.0",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.1.5",
- "remove-trailing-separator": "^1.0.1",
- "to-absolute-glob": "^2.0.0",
- "unique-stream": "^2.0.2"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
- },
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
- },
- "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-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "requires": {
- "ansi-regex": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- }
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "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=="
- },
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw=="
- },
- "i": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz",
- "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0="
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok="
- },
- "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=="
- },
- "inquirer": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
- "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
- "requires": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.19",
- "mute-stream": "0.0.8",
- "run-async": "^2.4.0",
- "rxjs": "^6.6.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "requires": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
- }
- },
- "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-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-docker": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
- "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw=="
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "requires": {
- "is-extglob": "^2.1.0"
- }
- },
- "is-interactive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
- },
- "is-negated-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
- "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI="
- },
- "is-observable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
- "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
- "requires": {
- "symbol-observable": "^1.1.0"
- }
- },
- "is-promise": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
- "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
- },
- "is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
- "requires": {
- "is-unc-path": "^1.0.0"
- }
- },
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
- },
- "is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
- "requires": {
- "unc-path-regex": "^0.1.2"
- }
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
- },
- "is-valid-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
- "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao="
- },
- "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=="
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "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="
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "js2xmlparser": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz",
- "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==",
- "dev": true,
- "requires": {
- "xmlcreate": "^2.0.3"
- }
- },
- "jsdoc": {
- "version": "3.6.6",
- "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.6.tgz",
- "integrity": "sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.9.4",
- "bluebird": "^3.7.2",
- "catharsis": "^0.8.11",
- "escape-string-regexp": "^2.0.0",
- "js2xmlparser": "^4.0.1",
- "klaw": "^3.0.0",
- "markdown-it": "^10.0.0",
- "markdown-it-anchor": "^5.2.7",
- "marked": "^0.8.2",
- "mkdirp": "^1.0.4",
- "requizzle": "^0.2.3",
- "strip-json-comments": "^3.1.0",
- "taffydb": "2.6.2",
- "underscore": "~1.10.2"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- }
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
- },
- "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-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
- },
- "json5": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "klaw": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
- "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.9"
- }
- },
- "lazystream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
- "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
- "requires": {
- "readable-stream": "^2.0.5"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "lead": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
- "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
- "requires": {
- "flush-write-stream": "^1.0.2"
- }
- },
- "linkify-it": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
- "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
- "dev": true,
- "requires": {
- "uc.micro": "^1.0.1"
- }
- },
- "listr": {
- "version": "0.14.3",
- "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
- "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
- "requires": {
- "@samverschueren/stream-to-observable": "^0.3.0",
- "is-observable": "^1.1.0",
- "is-promise": "^2.1.0",
- "is-stream": "^1.1.0",
- "listr-silent-renderer": "^1.1.1",
- "listr-update-renderer": "^0.5.0",
- "listr-verbose-renderer": "^0.5.0",
- "p-map": "^2.0.0",
- "rxjs": "^6.3.3"
- },
- "dependencies": {
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
- }
- }
- },
- "listr-silent-renderer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
- "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4="
- },
- "listr-update-renderer": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
- "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
- "requires": {
- "chalk": "^1.1.3",
- "cli-truncate": "^0.2.1",
- "elegant-spinner": "^1.0.1",
- "figures": "^1.7.0",
- "indent-string": "^3.0.0",
- "log-symbols": "^1.0.2",
- "log-update": "^2.3.0",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
- "requires": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- }
- }
- },
- "listr-verbose-renderer": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
- "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
- "requires": {
- "chalk": "^2.4.1",
- "cli-cursor": "^2.1.0",
- "date-fns": "^1.27.2",
- "figures": "^2.0.0"
- },
- "dependencies": {
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
- "requires": {
- "restore-cursor": "^2.0.0"
- }
- },
- "date-fns": {
- "version": "1.30.1",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
- "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw=="
- },
- "figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
- },
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
- "requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- }
- }
- }
- },
- "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"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "lodash.defaultsdeep": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
- "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA=="
- },
- "lodash.defaultto": {
- "version": "4.14.0",
- "resolved": "https://registry.npmjs.org/lodash.defaultto/-/lodash.defaultto-4.14.0.tgz",
- "integrity": "sha1-OL09QlrO5zPg4ru9TkspcRzC7hE="
- },
- "lodash.flattendeep": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
- "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI="
- },
- "lodash.isempty": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
- "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4="
- },
- "lodash.negate": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/lodash.negate/-/lodash.negate-3.0.2.tgz",
- "integrity": "sha1-nIl7C/YQAZ4LQ7j/Pwr+89e2bzQ="
- },
- "log-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
- "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
- "requires": {
- "chalk": "^1.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- }
- }
- },
- "log-update": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
- "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
- "requires": {
- "ansi-escapes": "^3.0.0",
- "cli-cursor": "^2.0.0",
- "wrap-ansi": "^3.0.1"
- },
- "dependencies": {
- "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=="
- },
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
- "requires": {
- "restore-cursor": "^2.0.0"
- }
- },
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
- },
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
- "requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- }
- }
- }
- },
- "log4js": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz",
- "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==",
- "requires": {
- "date-format": "^3.0.0",
- "debug": "^4.1.1",
- "flatted": "^2.0.1",
- "rfdc": "^1.1.4",
- "streamroller": "^2.2.4"
- }
- },
- "markdown-it": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
- "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "entities": "~2.0.0",
- "linkify-it": "^2.0.0",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- }
- },
- "markdown-it-anchor": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz",
- "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==",
- "dev": true
- },
- "marked": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz",
- "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==",
- "dev": true
- },
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
- "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=="
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
- },
- "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=="
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
- },
- "ncp": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz",
- "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY="
- },
- "new-github-release-url": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-1.0.0.tgz",
- "integrity": "sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A==",
- "requires": {
- "type-fest": "^0.4.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz",
- "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw=="
- }
- }
- },
- "node-7z": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/node-7z/-/node-7z-2.1.2.tgz",
- "integrity": "sha512-mSmn90OIYKYIkuRwH1YRJl2sMwB9OlYhCQS4SPTOfxlzWwomoC1G9j4tsvAsv7vJPwvK7B76Z0a2dH5Mvwo91Q==",
- "requires": {
- "cross-spawn": "^7.0.2",
- "debug": "^4.1.1",
- "lodash.defaultsdeep": "^4.6.1",
- "lodash.defaultto": "^4.14.0",
- "lodash.flattendeep": "^4.4.0",
- "lodash.isempty": "^4.4.0",
- "lodash.negate": "^3.0.2",
- "normalize-path": "^3.0.0"
- }
- },
- "node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
- },
- "node-releases": {
- "version": "1.1.69",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz",
- "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA=="
- },
- "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=="
- },
- "now-and-later": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
- "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
- "requires": {
- "once": "^1.3.2"
- }
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "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.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "open": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/open/-/open-7.3.1.tgz",
- "integrity": "sha512-f2wt9DCBKKjlFbjzGb8MOAW8LH8F0mrs1zc7KTjAJ9PZNQbfenzWbNP1VZJvw6ICMG9r14Ah6yfwPn7T7i646A==",
- "requires": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- }
- },
- "ora": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.2.0.tgz",
- "integrity": "sha512-+wG2v8TUU8EgzPHun1k/n45pXquQ9fHnbXVetl9rRgO6kjZszGGbraF3XPTIdgeA+s1lbRjSEftAnyT0w8ZMvQ==",
- "requires": {
- "bl": "^4.0.3",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "log-symbols": "^4.0.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "log-symbols": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
- "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
- "requires": {
- "chalk": "^4.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "ordered-read-streams": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
- "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
- "requires": {
- "readable-stream": "^2.0.1"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
- },
- "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-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
- },
- "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
- },
- "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"
- }
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
- },
- "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": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
- },
- "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=="
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "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=="
- },
- "prompt": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.1.0.tgz",
- "integrity": "sha512-ec1vUPXCplDBDUVD8uPa3XGA+OzLrO40Vxv3F1uxoiZGkZhdctlK2JotcHq5X6ExjocDOGwGdCSXloGNyU5L1Q==",
- "requires": {
- "colors": "^1.1.2",
- "read": "1.0.x",
- "revalidator": "0.1.x",
- "utile": "0.3.x",
- "winston": "2.x"
- }
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "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==",
- "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==",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- }
- }
- },
- "read": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
- "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
- "requires": {
- "mute-stream": "~0.0.4"
- }
- },
- "read-pkg": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
- "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
- "dev": true,
- "requires": {
- "normalize-package-data": "^2.3.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0"
- }
- },
- "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==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
- },
- "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.7",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
- },
- "regenerator-transform": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
- "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "regexpu-core": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
- "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==",
- "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.2",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
- "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
- },
- "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="
- }
- }
- },
- "remove-bom-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
- "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
- "requires": {
- "is-buffer": "^1.1.5",
- "is-utf8": "^0.2.1"
- }
- },
- "remove-bom-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
- "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
- "requires": {
- "remove-bom-buffer": "^3.0.0",
- "safe-buffer": "^5.1.0",
- "through2": "^2.0.3"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "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="
- },
- "replace-ext": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
- "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw=="
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
- },
- "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
- },
- "requizzle": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz",
- "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "resolve": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
- "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
- "requires": {
- "is-core-module": "^2.1.0",
- "path-parse": "^1.0.6"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "requires": {
- "resolve-from": "^5.0.0"
- }
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
- },
- "resolve-options": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
- "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
- "requires": {
- "value-or-function": "^3.0.0"
- }
- },
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "revalidator": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
- "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs="
- },
- "rfdc": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
- "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="
- },
- "rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "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=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- },
- "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
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "simple-swizzle": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
- "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
- "requires": {
- "is-arrayish": "^0.3.1"
- },
- "dependencies": {
- "is-arrayish": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
- }
- }
- },
- "slash2": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash2/-/slash2-2.0.0.tgz",
- "integrity": "sha512-7ElvBydJPi3MHU/KEOblFSbO/skl4Z69jKkFCpYIYVOMSIZsKi4gYU43HGeZPmjxCXrHekoDAAewphPQNnsqtA=="
- },
- "slice-ansi": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
- "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU="
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
- "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
- },
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
- },
- "streamroller": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz",
- "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==",
- "requires": {
- "date-format": "^2.1.0",
- "debug": "^4.1.1",
- "fs-extra": "^8.1.0"
- },
- "dependencies": {
- "date-format": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
- "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA=="
- }
- }
- },
- "string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "requires": {
- "safe-buffer": "~5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- }
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "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"
- }
- },
- "symbol-observable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
- "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
- },
- "taffydb": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
- "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
- },
- "through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "requires": {
- "readable-stream": "3"
- }
- },
- "through2-filter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
- "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
- "requires": {
- "through2": "~2.0.0",
- "xtend": "~4.0.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "requires": {
- "os-tmpdir": "~1.0.2"
- }
- },
- "to-absolute-glob": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
- "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
- "requires": {
- "is-absolute": "^1.0.0",
- "is-negated-glob": "^1.0.0"
- }
- },
- "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="
- },
- "to-through": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
- "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
- "requires": {
- "through2": "^2.0.3"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "type-fest": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
- "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ=="
- },
- "uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
- "dev": true
- },
- "unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo="
- },
- "underscore": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz",
- "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==",
- "dev": 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=="
- },
- "unique-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
- "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
- "requires": {
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "through2-filter": "^3.0.0"
- }
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "utile": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz",
- "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=",
- "requires": {
- "async": "~0.9.0",
- "deep-equal": "~0.2.1",
- "i": "0.3.x",
- "mkdirp": "0.x.x",
- "ncp": "1.0.x",
- "rimraf": "2.x.x"
- },
- "dependencies": {
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "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"
- }
- },
- "value-or-function": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
- "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM="
- },
- "vinyl": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
- "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
- "requires": {
- "clone": "^2.1.1",
- "clone-buffer": "^1.0.0",
- "clone-stats": "^1.0.0",
- "cloneable-readable": "^1.0.0",
- "remove-trailing-separator": "^1.0.1",
- "replace-ext": "^1.0.0"
- }
- },
- "vinyl-fs": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
- "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
- "requires": {
- "fs-mkdirp-stream": "^1.0.0",
- "glob-stream": "^6.1.0",
- "graceful-fs": "^4.0.0",
- "is-valid-glob": "^1.0.0",
- "lazystream": "^1.0.0",
- "lead": "^1.0.0",
- "object.assign": "^4.0.4",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.3.3",
- "remove-bom-buffer": "^3.0.0",
- "remove-bom-stream": "^1.2.0",
- "resolve-options": "^1.1.0",
- "through2": "^2.0.0",
- "to-through": "^2.0.0",
- "value-or-function": "^3.0.0",
- "vinyl": "^2.0.0",
- "vinyl-sourcemap": "^1.1.0"
- },
- "dependencies": {
- "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"
- }
- },
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "vinyl-sourcemap": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
- "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
- "requires": {
- "append-buffer": "^1.0.2",
- "convert-source-map": "^1.5.0",
- "graceful-fs": "^4.1.6",
- "normalize-path": "^2.1.1",
- "now-and-later": "^2.0.0",
- "remove-bom-buffer": "^3.0.0",
- "vinyl": "^2.0.0"
- },
- "dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
- "requires": {
- "defaults": "^1.0.3"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "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
- },
- "winston": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz",
- "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==",
- "requires": {
- "async": "~1.0.0",
- "colors": "1.0.x",
- "cycle": "1.0.x",
- "eyes": "0.1.x",
- "isstream": "0.1.x",
- "stack-trace": "0.0.x"
- },
- "dependencies": {
- "async": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
- "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k="
- },
- "colors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
- "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
- }
- }
- },
- "wrap-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
- "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
- "requires": {
- "string-width": "^2.1.1",
- "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="
- },
- "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="
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "xmlcreate": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz",
- "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==",
- "dev": true
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
- },
- "y18n": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
- "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg=="
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA=="
- }
- }
-}
diff --git a/package.json b/package.json
index d39bc211..6c8e0fd2 100644
--- a/package.json
+++ b/package.json
@@ -6,27 +6,8 @@
"workspaces": [
"packages"
],
- "lint-staged": {
- "*.{js,jsx,less,md,json}": [
- "prettier --write"
- ],
- "*.ts?(x)": [
- "prettier --parser=typescript --write"
- ]
- },
- "scripts": {
- "postinstall": "cd ./packages/comty && npm i",
- "start": "cd ./packages/comty && npm start",
- "update:deps": "yarn upgrade-interactive --latest"
- },
- "devDependencies": {
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@types/node": "^14.14.20",
- "concurrently": "^5.3.0",
- "cross-env": "^7.0.3",
- "jsdoc": "^3.6.5"
- },
"dependencies": {
- "@ragestudio/nodecorejs": "^0.15.1"
- }
+ "corenode": "^0.28.26"
+ },
+ "version": "0.13.0"
}
diff --git a/packages/app/.config.js b/packages/app/.config.js
new file mode 100644
index 00000000..daabef03
--- /dev/null
+++ b/packages/app/.config.js
@@ -0,0 +1,69 @@
+const path = require("path")
+const { builtinModules } = require("module")
+const { node } = require("../desktop/.electron-vendors.cache.json")
+
+const aliases = {
+ "~/": `${path.resolve(__dirname, "src")}/`,
+ "__": __dirname,
+ "@src": path.resolve(__dirname, "src"),
+ schemas: path.resolve(__dirname, "constants"),
+ config: path.join(__dirname, "config"),
+ extensions: path.resolve(__dirname, "src/extensions"),
+ pages: path.join(__dirname, "src/pages"),
+ theme: path.join(__dirname, "src/theme"),
+ components: path.join(__dirname, "src/components"),
+ models: path.join(__dirname, "src/models"),
+ utils: path.join(__dirname, "src/utils"),
+}
+
+module.exports = (config = {}) => {
+ if (!config.resolve) {
+ config.resolve = {}
+ }
+ if (!config.server) {
+ config.server = {}
+ }
+
+ config.resolve.alias = aliases
+ config.server.port = process.env.listenPort ?? 8000
+ config.server.host = "0.0.0.0"
+ config.server.fs = {
+ allow: [".."]
+ }
+
+ config.envDir = path.join(__dirname, "environments")
+
+ config.css = {
+ preprocessorOptions: {
+ less: {
+ javascriptEnabled: true,
+ }
+ }
+ }
+
+ config.build = {
+ sourcemap: "inline",
+ target: `node${node}`,
+ outDir: "dist",
+ assetsDir: ".",
+ minify: process.env.MODE !== "development",
+ lib: {
+ entry: "src/index.ts",
+ formats: ["cjs"],
+ },
+ rollupOptions: {
+ external: [
+ "electron",
+ "electron-devtools-installer",
+ ...builtinModules.flatMap(p => [p, `node:${p}`]),
+ ],
+ output: {
+ entryFileNames: "[name].cjs",
+ },
+ },
+ emptyOutDir: true,
+ brotliSize: false,
+ }
+
+ return config
+}
\ No newline at end of file
diff --git a/packages/app/.gitignore b/packages/app/.gitignore
new file mode 100644
index 00000000..d54f00b3
--- /dev/null
+++ b/packages/app/.gitignore
@@ -0,0 +1,8 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+*.local
+.vscode
+yarn-error.log
+ios/**/**
\ No newline at end of file
diff --git a/packages/app/capacitor.config.json b/packages/app/capacitor.config.json
new file mode 100644
index 00000000..35900907
--- /dev/null
+++ b/packages/app/capacitor.config.json
@@ -0,0 +1,7 @@
+{
+ "appId": "com.ragestudio.comty",
+ "appName": "Comty",
+ "bundledWebRuntime": true,
+ "overrideUserAgent": "capacitor",
+ "webDir": "dist"
+}
\ No newline at end of file
diff --git a/packages/app/config/index.js b/packages/app/config/index.js
new file mode 100644
index 00000000..32bfae3d
--- /dev/null
+++ b/packages/app/config/index.js
@@ -0,0 +1,46 @@
+import packagejson from "../package.json"
+import defaultTheme from "../constants/defaultTheme.json"
+import defaultSoundPack from "../constants/defaultSoundPack.json"
+import defaultRemotesOrigins from "../constants/defaultRemotesOrigins.json"
+
+export default {
+ package: packagejson,
+ defaultTheme: defaultTheme,
+ defaultSoundPack: defaultSoundPack,
+ author: "RageStudio© 2022",
+ logo: {
+ alt: "/logo_alt.svg",
+ full: "/logo_full.svg",
+ },
+ api: {
+ address: defaultRemotesOrigins.http_api,//process.env.NODE_ENV !== "production" ? `http://${window.location.hostname}:3000` : defaultRemotesOrigins.http_api,
+ },
+ ws: {
+ address: defaultRemotesOrigins.ws_api, //process.env.NODE_ENV !== "production" ? `ws://${window.location.hostname}:3001` : defaultRemotesOrigins.ws_api,
+ },
+ app: {
+ title: packagejson.name,
+ siteName: "Comty",
+ mainPath: "/main",
+ storage: {
+ basics: "user",
+ token: "token",
+ session_frame: "session",
+ signkey: "certified",
+ settings: "app_settings"
+ },
+ },
+ i18n: {
+ languages: [
+ {
+ locale: "en",
+ name: "English"
+ },
+ {
+ locale: "es",
+ name: "Español"
+ }
+ ],
+ defaultLocale: "es",
+ }
+}
\ No newline at end of file
diff --git a/packages/app/constants/defaultRemotesOrigins.json b/packages/app/constants/defaultRemotesOrigins.json
new file mode 100644
index 00000000..82f6b81a
--- /dev/null
+++ b/packages/app/constants/defaultRemotesOrigins.json
@@ -0,0 +1,4 @@
+{
+ "http_api": "https://indev_api.comty.pw",
+ "ws_api": "wss://indev_ws.comty.pw"
+}
\ No newline at end of file
diff --git a/packages/app/constants/defaultSettings.json b/packages/app/constants/defaultSettings.json
new file mode 100644
index 00000000..5b8190b3
--- /dev/null
+++ b/packages/app/constants/defaultSettings.json
@@ -0,0 +1,18 @@
+{
+ "forceMobileMode": false,
+ "notifications_sound": true,
+ "notifications_vibrate": true,
+ "notifications_sound_volume": 50,
+ "selection_longPress_timeout": 600,
+ "autoCollapseDelay": 500,
+ "autoCollapseDelayEnabled": true,
+ "haptic_feedback": false,
+ "collapseOnLooseFocus": true,
+ "language": "en",
+ "sidebarKeys": [
+ "main",
+ "explore",
+ "saved",
+ "marketplace"
+ ]
+}
\ No newline at end of file
diff --git a/packages/app/constants/defaultSoundPack.json b/packages/app/constants/defaultSoundPack.json
new file mode 100644
index 00000000..467a491d
--- /dev/null
+++ b/packages/app/constants/defaultSoundPack.json
@@ -0,0 +1,5 @@
+{
+ "crash": "/sounds/crash.wav",
+ "error": "/sounds/error.wav",
+ "notification": "/sounds/notification.wav"
+}
\ No newline at end of file
diff --git a/packages/app/constants/defaultTheme.json b/packages/app/constants/defaultTheme.json
new file mode 100644
index 00000000..d17f94fb
--- /dev/null
+++ b/packages/app/constants/defaultTheme.json
@@ -0,0 +1,37 @@
+{
+ "staticVars": {
+ "primaryColor": "#ff6064",
+ "fontFamily": "'Varela Round', sans-serif"
+ },
+ "defaultVariant": "light",
+ "variants": {
+ "light": {
+ "appColor": "#ff6064",
+ "background-color-primary": "#ffffff",
+ "background-color-primary2": "#f0f0f0",
+ "shadow-color": "#4b4b4b7c",
+ "background-color-accent": "#f0f2f5",
+ "background-color-contrast": "#4b4b4b",
+ "border-color": "#4b4b4b2a",
+ "sidebar-background-color": "var(--background-color-accent)",
+ "sidedrawer-background-color": "var(--background-color-accent)"
+ },
+ "dark": {
+ "appColor": "#ff6064",
+ "text-color": "#d2d2d2",
+ "svg-color": "var(--text-color)",
+ "shadow-color": "#3535357c",
+ "background-color-primary": "#262626",
+ "background-color-primary2": "#2c2c2c",
+ "background-color-accent": "#353535",
+ "background_disabled": "#0A0A0A",
+ "background-color-contrast": "#ffffff",
+ "border-color": "#4b4b4b2a",
+ "header-text-color": "#d2d2d2",
+ "button-background-color": "var(--primaryColor)",
+ "button-text-color": "var(--background-color-contrast)",
+ "sidebar-background-color": "var(--background-color-accent)",
+ "sidedrawer-background-color": "var(--background-color-accent)"
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/constants/pathDecorators.json b/packages/app/constants/pathDecorators.json
new file mode 100644
index 00000000..665b6772
--- /dev/null
+++ b/packages/app/constants/pathDecorators.json
@@ -0,0 +1,14 @@
+{
+ "main": {
+ "icon": "Home",
+ "title": "Main"
+ },
+ "account": {
+ "icon": "User",
+ "title": "Account"
+ },
+ "users": {
+ "icon": "Users",
+ "title": "Users"
+ }
+}
\ No newline at end of file
diff --git a/packages/app/constants/routes.json b/packages/app/constants/routes.json
new file mode 100644
index 00000000..8232575e
--- /dev/null
+++ b/packages/app/constants/routes.json
@@ -0,0 +1,22 @@
+[
+ {
+ "id": "main",
+ "title": "Dashboard",
+ "icon": "Home"
+ },
+ {
+ "id": "explore",
+ "title": "Explore",
+ "icon": "Compass"
+ },
+ {
+ "id": "saved",
+ "title": "Saved",
+ "icon": "Archive"
+ },
+ {
+ "id": "marketplace",
+ "title": "Marketplace",
+ "icon": "Package"
+ }
+]
\ No newline at end of file
diff --git a/packages/app/constants/settings/account.jsx b/packages/app/constants/settings/account.jsx
new file mode 100644
index 00000000..2324a982
--- /dev/null
+++ b/packages/app/constants/settings/account.jsx
@@ -0,0 +1,103 @@
+import React from "react"
+import { User } from "models"
+
+export default [
+ {
+ "id": "username",
+ "group": "account.basicInfo",
+ "type": "Button",
+ "icon": "AtSign",
+ "title": "Username",
+ "description": "Your username is the name you use to log in to your account.",
+ "props": {
+ "disabled": true,
+ "children": "Change username",
+ },
+ },
+ {
+ "id": "fullName",
+ "group": "account.basicInfo",
+ "type": "Input",
+ "icon": "Edit3",
+ "title": "Name",
+ "description": "Change your public name",
+ "props": {
+ "placeholder": "Enter your name. e.g. John Doe",
+ },
+ "defaultValue": async () => {
+ const userData = await User.data()
+ return userData.fullName
+ },
+ "onUpdate": async (value) => {
+ const selfId = await User.selfUserId()
+
+ const result = window.app.request.post.updateUser({
+ _id: selfId,
+ update: {
+ fullName: value
+ }
+ })
+
+ if (result) {
+ return result
+ }
+ },
+ "extraActions": [
+ {
+ "id": "unset",
+ "icon": "Delete",
+ "title": "Unset",
+ "onClick": async () => {
+ window.app.request.post.unsetPublicName()
+ }
+ }
+ ],
+ "debounced": true,
+ },
+ {
+ "id": "email",
+ "group": "account.basicInfo",
+ "type": "Input",
+ "icon": "Mail",
+ "title": "Email",
+ "description": "Change your email address",
+ "props": {
+ "placeholder": "Enter your email address",
+ },
+ "defaultValue": async () => {
+ const userData = await User.data()
+ return userData.email
+ },
+ "onUpdate": async (value) => {
+ const selfId = await User.selfUserId()
+
+ const result = window.app.request.post.updateUser({
+ _id: selfId,
+ update: {
+ email: value
+ }
+ })
+
+ if (result) {
+ return result
+ }
+ },
+ "debounced": true,
+ },
+ {
+ "id": "Avatar",
+ "group": "account.basicInfo",
+ "type": "ImageUpload",
+ "icon": "Image",
+ "title": "Avatar",
+ "description": "Change your avatar",
+ },
+ {
+ "id": "primaryBadge",
+ "group": "account.basicInfo",
+ "type": "Select",
+ "icon": "Tag",
+ "title": "Primary badge",
+ "description": "Change your primary badge",
+ },
+]
\ No newline at end of file
diff --git a/packages/app/constants/settings/app.jsx b/packages/app/constants/settings/app.jsx
new file mode 100644
index 00000000..9924605d
--- /dev/null
+++ b/packages/app/constants/settings/app.jsx
@@ -0,0 +1,185 @@
+import React from "react"
+import config from "config"
+import { Select } from "antd"
+
+export default [
+ {
+ "id": "language",
+ "storaged": true,
+ "group": "general",
+ "type": "Select",
+ "icon": "MdTranslate",
+ "title": "Language",
+ "description": "Choose a language for the application",
+ "props": {
+ children: config.i18n.languages.map((language) => {
+ return {language.name}
+ })
+ },
+ "emitEvent": "changeLanguage"
+ },
+ {
+ "id": "forceMobileMode",
+ "storaged": true,
+ "group": "general",
+ "type": "Switch",
+ "icon": "MdSmartphone",
+ "title": "Force Mobile Mode",
+ "description": "Force the application to run in mobile mode.",
+ "emitEvent": "forceMobileMode"
+ },
+ {
+ "id": "haptic_feedback",
+ "storaged": true,
+ "group": "general",
+ "type": "Switch",
+ "icon": "MdVibration",
+ "title": "Haptic Feedback",
+ "description": "Enable haptic feedback on touch events.",
+ },
+ {
+ "id": "selection_longPress_timeout",
+ "storaged": true,
+ "group": "general",
+ "type": "Slider",
+ "icon": "MdTimer",
+ "title": "Selection press delay",
+ "description": "Set the delay before the selection trigger is activated.",
+ "props": {
+ min: 300,
+ max: 2000,
+ step: 100,
+ marks: {
+ 300: "0.3s",
+ 600: "0.6s",
+ 1000: "1s",
+ 1500: "1.5s",
+ 2000: "2s",
+ }
+ }
+ },
+ {
+ "id": "notifications_sound",
+ "storaged": true,
+ "group": "notifications",
+ "type": "Switch",
+ "icon": "MdVolumeUp",
+ "title": "Notifications Sound",
+ "description": "Play a sound when a notification is received.",
+ },
+ {
+ "id": "notifications_vibrate",
+ "storaged": true,
+ "group": "notifications",
+ "type": "Switch",
+ "icon": "MdVibration",
+ "title": "Vibration",
+ "description": "Vibrate the device when a notification is received.",
+ "emitEvent": "changeNotificationsVibrate"
+ },
+ {
+ "id": "notifications_sound_volume",
+ "storaged": true,
+ "group": "notifications",
+ "type": "Slider",
+ "icon": "MdVolumeUp",
+ "title": "Sound Volume",
+ "description": "Set the volume of the sound when a notification is received.",
+ "props": {
+ tipFormatter: (value) => {
+ return `${value}%`
+ }
+ },
+ "emitEvent": "changeNotificationsSoundVolume"
+ },
+ {
+ "id": "edit_sidebar",
+ "storaged": true,
+ "group": "sidebar",
+ "type": "Button",
+ "icon": "Edit",
+ "title": "Edit Sidebar",
+ "emitEvent": "edit_sidebar",
+ "noStorage": true
+ },
+ {
+ "id": "collapseOnLooseFocus",
+ "storaged": true,
+ "group": "sidebar",
+ "type": "Switch",
+ "icon": "Columns",
+ "title": "Auto Collapse",
+ "description": "Collapse the sidebar when loose focus",
+ "emitEvent": "settingChanged.sidebar_collapse",
+ },
+ {
+ "id": "autoCollapseDelay",
+ "storaged": true,
+ "group": "sidebar",
+ "type": "Slider",
+ "icon": "Wh",
+ "dependsOn": {
+ "collapseOnLooseFocus": true
+ },
+ "title": "Auto Collapse timeout",
+ "description": "Set the delay before the sidebar is collapsed",
+ "props": {
+ min: 0,
+ max: 2000,
+ step: 100,
+ marks: {
+ 0: "No delay",
+ 600: "0.6s",
+ 1000: "1s",
+ 1500: "1.5s",
+ 2000: "2s",
+ }
+ }
+ },
+ {
+ "id": "reduceAnimations",
+ "storaged": true,
+ "group": "aspect",
+ "type": "Switch",
+ "icon": "MdOutlineAnimation",
+ "title": "Reduce animation",
+ "experimental": true
+ },
+ {
+ "id": "darkMode",
+ "storaged": true,
+ "group": "aspect",
+ "type": "Switch",
+ "icon": "Moon",
+ "title": "Dark mode",
+ "emitEvent": "darkMode",
+ "experimental": true
+ },
+ {
+ "id": "primaryColor",
+ "storaged": true,
+ "group": "aspect",
+ "type": "SliderColorPicker",
+ "title": "Primary color",
+ "description": "Change primary color of the application.",
+ "emitEvent": "modifyTheme",
+ "reloadValueOnUpdateEvent": "resetTheme",
+ "emissionValueUpdate": (value) => {
+ return {
+ primaryColor: value
+ }
+ }
+ },
+ {
+ "id": "resetTheme",
+ "storaged": true,
+ "group": "aspect",
+ "type": "Button",
+ "title": "Reset theme",
+ "props": {
+ "children": "Default Theme"
+ },
+ "emitEvent": "resetTheme",
+ "noUpdate": true,
+ }
+]
\ No newline at end of file
diff --git a/packages/app/constants/settingsGroupsDecorator.json b/packages/app/constants/settingsGroupsDecorator.json
new file mode 100644
index 00000000..4ae53ad4
--- /dev/null
+++ b/packages/app/constants/settingsGroupsDecorator.json
@@ -0,0 +1,22 @@
+{
+ "general": {
+ "title": "General",
+ "icon": "Settings"
+ },
+ "notifications": {
+ "title": "Notifications",
+ "icon": "Bell"
+ },
+ "sidebar": {
+ "title": "Sidebar",
+ "icon": "Layout"
+ },
+ "aspect": {
+ "title": "Aspect",
+ "icon": "Eye"
+ },
+ "account.basicInfo": {
+ "title": "Basic Information",
+ "icon": "Info"
+ }
+}
\ No newline at end of file
diff --git a/packages/app/index.html b/packages/app/index.html
new file mode 100644
index 00000000..88cbff65
--- /dev/null
+++ b/packages/app/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/app/package.json b/packages/app/package.json
new file mode 100644
index 00000000..e5517400
--- /dev/null
+++ b/packages/app/package.json
@@ -0,0 +1,101 @@
+{
+ "name": "comty",
+ "version": "0.15.0",
+ "license": "MIT",
+ "scripts": {
+ "dev": "vite",
+ "dev:ssr": "vite-ssr",
+ "sync": "capacitor sync ios && capacitor sync android",
+ "build": "cross-env NODE_ENV=production vite build && yarn sync",
+ "build:dist": "cross-env NODE_ENV=production vite build",
+ "build:preview": "cross-env NODE_ENV=preview vite build && yarn sync",
+ "build:ssr": "cross-env NODE_ENV=production vite-ssr build && ./scripts/move-dist.sh",
+ "preview": "vite preview",
+ "capacitor": "capacitor"
+ },
+ "peerDependencies": {
+ "react": "^16.8.6"
+ },
+ "dependencies": {
+ "@ant-design/icons": "4.7.0",
+ "@capacitor/android": "^3.4.0",
+ "@capacitor/haptics": "^1.1.4",
+ "@capacitor/push-notifications": "^1.0.9",
+ "@capacitor/status-bar": "1.0.7",
+ "@capacitor/storage": "1.2.4",
+ "@corenode/utils": "0.28.26",
+ "@emotion/css": "11.0.0",
+ "@foxify/events": "2.0.1",
+ "@loadable/component": "5.15.2",
+ "antd": "^4.19.1",
+ "antd-mobile": "^5.0.0-rc.17",
+ "chart.js": "3.7.0",
+ "classnames": "2.3.1",
+ "evite": "0.9.5",
+ "faye": "1.4.0",
+ "feather-reactjs": "2.0.13",
+ "fuse.js": "6.5.3",
+ "global": "4.4.0",
+ "history": "5.2.0",
+ "hls.js": "^1.1.5",
+ "howler": "2.2.3",
+ "i18next": "21.6.6",
+ "js-cookie": "3.0.1",
+ "jwt-decode": "3.1.2",
+ "less": "4.1.2",
+ "linebridge": "0.10.13",
+ "moment": "2.29.1",
+ "mpegts.js": "^1.6.10",
+ "nprogress": "^0.2.0",
+ "plyr": "^3.6.12",
+ "prop-types": "^15.8.1",
+ "qrcode": "1.5.0",
+ "rc-animate": "^3.1.1",
+ "rc-util": "^5.19.3",
+ "rc-virtual-list": "^3.4.4",
+ "react": "17.0.2",
+ "react-beautiful-dnd": "13.1.0",
+ "react-chartjs-2": "4.0.1",
+ "react-color": "2.19.3",
+ "react-contexify": "5.0.0",
+ "react-dom": "17.0.2",
+ "react-draggable": "4.4.4",
+ "react-helmet": "6.1.0",
+ "react-i18next": "11.15.3",
+ "react-icons": "4.3.1",
+ "react-intersection-observer": "8.33.1",
+ "react-json-view": "1.21.3",
+ "react-lazy-load-image-component": "^1.5.1",
+ "react-motion": "0.5.2",
+ "react-reveal": "1.2.2",
+ "react-rnd": "10.3.5",
+ "react-router": "6.2.1",
+ "react-router-config": "^5.1.1",
+ "react-router-dom": "6.2.1",
+ "react-virtualized": "^9.22.3",
+ "store": "^2.0.12",
+ "styled-components": "^5.3.3",
+ "vite-ssr": "0.15.0"
+ },
+ "devDependencies": {
+ "@capacitor/cli": "3.2.2",
+ "@capacitor/core": "3.2.2",
+ "@capacitor/ios": "3.0.2",
+ "@capacitor/project": "1.0.28",
+ "@types/jest": "^26.0.24",
+ "@types/node": "^16.4.10",
+ "@types/react": "^17.0.15",
+ "@types/react-dom": "^17.0.9",
+ "@types/react-router-config": "^5.0.3",
+ "@types/react-router-dom": "^5.1.8",
+ "@typescript-eslint/eslint-plugin": "^4.29.0",
+ "@vitejs/plugin-react-refresh": "^1.3.6",
+ "corenode": "0.28.26",
+ "cross-env": "^7.0.3",
+ "express": "^4.17.1",
+ "typescript": "^4.3.5",
+ "vite": "2.7.13",
+ "vite-plugin-next-react-router": "^0.6.2",
+ "vite-plugin-pages": "0.12.x"
+ }
+}
diff --git a/packages/app/public/broken-image.svg b/packages/app/public/broken-image.svg
new file mode 100644
index 00000000..3dc703ef
--- /dev/null
+++ b/packages/app/public/broken-image.svg
@@ -0,0 +1,8 @@
+
diff --git a/packages/app/public/favicon.ico b/packages/app/public/favicon.ico
new file mode 100644
index 00000000..3fab6a0d
Binary files /dev/null and b/packages/app/public/favicon.ico differ
diff --git a/packages/app/public/logo_alt.svg b/packages/app/public/logo_alt.svg
new file mode 100644
index 00000000..e4096219
--- /dev/null
+++ b/packages/app/public/logo_alt.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/app/public/logo_full.svg b/packages/app/public/logo_full.svg
new file mode 100644
index 00000000..385188c1
--- /dev/null
+++ b/packages/app/public/logo_full.svg
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/app/public/sounds/crash.wav b/packages/app/public/sounds/crash.wav
new file mode 100644
index 00000000..7bd8f8f1
Binary files /dev/null and b/packages/app/public/sounds/crash.wav differ
diff --git a/packages/app/public/sounds/error.wav b/packages/app/public/sounds/error.wav
new file mode 100644
index 00000000..9ec4325d
Binary files /dev/null and b/packages/app/public/sounds/error.wav differ
diff --git a/packages/app/public/sounds/notification.wav b/packages/app/public/sounds/notification.wav
new file mode 100644
index 00000000..c32e396e
Binary files /dev/null and b/packages/app/public/sounds/notification.wav differ
diff --git a/packages/app/src/App.jsx b/packages/app/src/App.jsx
new file mode 100644
index 00000000..0050920d
--- /dev/null
+++ b/packages/app/src/App.jsx
@@ -0,0 +1,430 @@
+// Patch global prototypes
+Array.prototype.findAndUpdateObject = function (discriminator, obj) {
+ let index = this.findIndex(item => item[discriminator] === obj[discriminator])
+ if (index !== -1) {
+ this[index] = obj
+ }
+
+ return index
+}
+
+Array.prototype.move = function (from, to) {
+ this.splice(to, 0, this.splice(from, 1)[0])
+ return this
+}
+
+String.prototype.toTitleCase = function () {
+ return this.replace(/\w\S*/g, function (txt) {
+ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()
+ })
+}
+
+Promise.tasked = function (promises) {
+ return new Promise(async (resolve, reject) => {
+ let rejected = false
+
+ for await (let promise of promises) {
+ if (rejected) {
+ return
+ }
+
+ try {
+ await promise()
+ } catch (error) {
+ rejected = true
+ return reject(error)
+ }
+ }
+
+ if (!rejected) {
+ return resolve()
+ }
+ })
+}
+
+import React from "react"
+import { CreateEviteApp, BindPropsProvider } from "evite"
+import { Helmet } from "react-helmet"
+import * as antd from "antd"
+import { ActionSheet, Toast } from "antd-mobile"
+import { StatusBar, Style } from "@capacitor/status-bar"
+import { Translation } from "react-i18next"
+
+import { Session, User } from "models"
+import { API, SettingsController, Render, Splash, Theme, Sound, Notifications, i18n, Debug, Shortcuts } from "extensions"
+import config from "config"
+
+import { NotFound, RenderError, Crash, Settings, Navigation } from "components"
+import { Icons } from "components/Icons"
+
+import Layout from "./layout"
+import "theme/index.less"
+
+const SplashExtension = Splash.extension({
+ logo: config.logo.alt,
+ preset: "fadeOut",
+ velocity: 1000,
+ props: {
+ logo: {
+ style: {
+ marginBottom: "10%",
+ stroke: "black",
+ },
+ },
+ },
+})
+
+class App {
+ static initialize() {
+ window.app.version = config.package.version
+
+ this.mainSocket = this.contexts.app.WSInterface.sockets.main
+ this.loadingMessage = false
+ this.isAppCapacitor = () => navigator.userAgent === "capacitor"
+ }
+
+ static eventsHandlers = {
+ "new_session": async function () {
+ await this.flushState()
+ await this.initialization()
+
+ if (window.location.pathname == "/login") {
+ window.app.setLocation(this.beforeLoginLocation ?? "/main")
+ this.beforeLoginLocation = null
+ }
+ },
+ "destroyed_session": async function () {
+ await this.flushState()
+ this.eventBus.emit("forceToLogin")
+ },
+ "forceToLogin": function () {
+ if (window.location.pathname !== "/login") {
+ this.beforeLoginLocation = window.location.pathname
+ }
+
+ window.app.setLocation("/login")
+ },
+ "invalid_session": async function (error) {
+ await this.sessionController.forgetLocalSession()
+ await this.flushState()
+
+ if (window.location.pathname !== "/login") {
+ this.eventBus.emit("forceToLogin")
+
+ antd.notification.open({
+ message:
+ {(t) => t("Invalid Session")}
+ ,
+ description:
+ {(t) => t(error)}
+ ,
+ icon: ,
+ })
+ }
+ },
+ "clearAllOverlays": function () {
+ window.app.DrawerController.closeAll()
+ },
+ "websocket_connected": function () {
+ if (this.wsReconnecting) {
+ this.wsReconnectingTry = 0
+ this.wsReconnecting = false
+ this.initialization()
+
+ setTimeout(() => {
+ Toast.show({
+ icon: "success",
+ content: "Connected",
+ })
+ }, 500)
+ }
+ },
+ "websocket_connection_error": function () {
+ if (!this.wsReconnecting) {
+ this.latencyWarning = null
+ this.wsReconnectingTry = 0
+ this.wsReconnecting = true
+
+ Toast.show({
+ icon: "loading",
+ content: "Connecting...",
+ duration: 0,
+ })
+ }
+
+ this.wsReconnectingTry = this.wsReconnectingTry + 1
+
+ if (this.wsReconnectingTry > 3) {
+ window.location.reload()
+ }
+ },
+ "websocket_latency_too_high": function () {
+ if (!this.latencyWarning) {
+ this.latencyWarning = true
+ Toast.show({
+ icon: "loading",
+ content: "Slow connection...",
+ duration: 0,
+ })
+ }
+ },
+ "websocket_latency_normal": function () {
+ if (this.latencyWarning) {
+ this.latencyWarning = null
+ Toast.show({
+ icon: "success",
+ content: "Connection restored",
+ })
+ }
+ },
+ "appLoadError": function (error) {
+
+ },
+ }
+
+ static windowContext() {
+ return {
+ // TODO: Open with popup controller instead drawer controller
+ openNavigationMenu: () => window.app.DrawerController.open("navigation", Navigation),
+ openSettings: App.publicMethods.openSettings,
+ goMain: () => {
+ return window.app.setLocation(config.app.mainPath)
+ },
+ goToAccount: (username) => {
+ return window.app.setLocation(`/account`, { username })
+ },
+ setStatusBarStyleDark: async () => {
+ if (!this.isAppCapacitor()) {
+ console.warn("[App] setStatusBarStyleDark is only available on capacitor")
+ return false
+ }
+ return await StatusBar.setStyle({ style: Style.Dark })
+ },
+ setStatusBarStyleLight: async () => {
+ if (!this.isAppCapacitor()) {
+ console.warn("[App] setStatusBarStyleLight is not supported on this platform")
+ return false
+ }
+ return await StatusBar.setStyle({ style: Style.Light })
+ },
+ hideStatusBar: async () => {
+ if (!this.isAppCapacitor()) {
+ console.warn("[App] hideStatusBar is not supported on this platform")
+ return false
+ }
+ return await StatusBar.hide()
+ },
+ showStatusBar: async () => {
+ if (!this.isAppCapacitor()) {
+ console.warn("[App] showStatusBar is not supported on this platform")
+ return false
+ }
+ return await StatusBar.show()
+ },
+ isAppCapacitor: this.isAppCapacitor,
+ }
+ }
+
+ static appContext() {
+ return {
+ renderRef: this.renderRef,
+ sessionController: this.sessionController,
+ userController: this.userController,
+ }
+ }
+
+ static staticRenders = {
+ NotFound: (props) => {
+ return
+ },
+ RenderError: (props) => {
+ return
+ },
+ Crash: Crash,
+ initialization: () => {
+ return
+ }
+ }
+
+ static publicMethods = {
+ "openSettings": (goTo) => {
+ window.app.DrawerController.open("settings", Settings, {
+ props: {
+ width: "fit-content",
+ },
+ componentProps: {
+ goTo,
+ }
+ })
+ }
+ }
+
+ sessionController = new Session()
+ userController = new User()
+ state = {
+ session: null,
+ user: null,
+ }
+
+ flushState = async () => {
+ await this.setState({ session: null, user: null })
+ }
+
+ componentDidMount = async () => {
+ if (this.isAppCapacitor()) {
+ window.addEventListener("statusTap", () => {
+ this.eventBus.emit("statusTap")
+ })
+
+ StatusBar.setOverlaysWebView({ overlay: true })
+ window.app.hideStatusBar()
+ }
+
+ const userAgentPlatform = window.navigator.userAgent.toLowerCase()
+
+ if (userAgentPlatform.includes("mac")) {
+ window.app.ShortcutsController.register({
+ key: ",",
+ meta: true,
+ }, (...args) => {
+ App.publicMethods.openSettings(...args)
+ })
+ } else {
+ window.app.ShortcutsController.register({
+ key: ",",
+ ctrl: true,
+ }, (...args) => {
+ App.publicMethods.openSettings(...args)
+ })
+ }
+
+ this.eventBus.emit("render_initialization")
+
+ await this.initialization()
+
+ this.eventBus.emit("render_initialization_done")
+ }
+
+ initialization = async () => {
+ console.debug(`[App] Initializing app`)
+
+ const initializationTasks = [
+ async () => {
+ try {
+ await this.contexts.app.attachAPIConnection()
+ } catch (error) {
+ throw {
+ cause: "Cannot connect to API",
+ details: error.message,
+ }
+ }
+ },
+ async () => {
+ try {
+ await this.__SessionInit()
+ } catch (error) {
+ throw {
+ cause: "Cannot initialize session",
+ details: error.message,
+ }
+ }
+ },
+ async () => {
+ try {
+ await this.__UserInit()
+ } catch (error) {
+ throw {
+ cause: "Cannot initialize user data",
+ details: error.message,
+ }
+ }
+ },
+ async () => {
+ try {
+ await this.__WSInit()
+ } catch (error) {
+ throw {
+ cause: "Cannot connect to WebSocket",
+ details: error.message,
+ }
+ }
+ },
+ ]
+
+ await Promise.tasked(initializationTasks).catch((reason) => {
+ console.error(`[App] Initialization failed: ${reason.cause}`)
+ window.app.eventBus.emit("appLoadError", reason.cause, reason.details)
+ })
+ }
+
+ __SessionInit = async () => {
+ const token = await Session.token
+
+ if (!token || token == null) {
+ window.app.eventBus.emit("forceToLogin")
+ return false
+ }
+
+ const session = await this.sessionController.getCurrentSession().catch((error) => {
+ console.error(`[App] Cannot get current session: ${error.message}`)
+ return false
+ })
+
+ await this.setState({ session })
+ }
+
+ __WSInit = async () => {
+ if (!this.state.session) {
+ return false
+ }
+
+ const token = await Session.token
+ await this.contexts.app.attachWSConnection()
+
+ this.mainSocket.emit("authenticate", token)
+ }
+
+ __UserInit = async () => {
+ if (!this.state.session) {
+ return false
+ }
+
+ const user = await User.data()
+ await this.setState({ user })
+ }
+
+ render() {
+ return (
+
+
+ {config.app.siteName}
+
+
+
+
+
+
+
+
+
+ )
+ }
+}
+
+export default CreateEviteApp(App, {
+ extensions: [
+ Shortcuts,
+ SettingsController,
+ i18n.extension,
+ Sound.extension,
+ Notifications.extension,
+ API,
+ Render.extension,
+ Theme.extension,
+ SplashExtension,
+ Debug,
+ ],
+})
\ No newline at end of file
diff --git a/packages/app/src/components/AboutApp/index.jsx b/packages/app/src/components/AboutApp/index.jsx
new file mode 100644
index 00000000..b845dad4
--- /dev/null
+++ b/packages/app/src/components/AboutApp/index.jsx
@@ -0,0 +1,80 @@
+import React from "react"
+import ReactDOM from "react-dom"
+import * as antd from "antd"
+import { Card, Mask } from "antd-mobile"
+
+import { Icons } from "components/Icons"
+import { DiReact } from "react-icons/di"
+
+import config from "config"
+
+import "./index.less"
+
+export const AboutCard = (props) => {
+ const [visible, setVisible] = React.useState(false)
+
+ React.useEffect(() => {
+ setVisible(true)
+ }, [])
+
+ const close = () => {
+ setVisible(false)
+ setTimeout(() => {
+ props.onClose()
+ }, 150)
+ }
+
+ const isProduction = import.meta.env.PROD
+ const isWSMainConnected = window.app.ws.mainSocketConnected
+ const WSMainOrigin = app.ws.sockets.main.io.uri
+
+ return close()}>
+
+
+
+
{config.app.siteName}
+ {config.author}
+
+
+
v{window.app.version ?? "experimental"}
+
+ {isProduction ? : }
+ {String(import.meta.env.MODE)}
+
+
+
+ }
+ >
+
+
+
Versions
+
+
eVite v{window.__eviteVersion ?? "experimental"}
+
v{React.version ?? "experimental"}
+
+
+
+
+
+}
+
+export function openModal() {
+ const component = document.createElement("div")
+ document.body.appendChild(component)
+
+ const onClose = () => {
+ ReactDOM.unmountComponentAtNode(component)
+ document.body.removeChild(component)
+ }
+
+ ReactDOM.render( , component)
+}
\ No newline at end of file
diff --git a/packages/app/src/components/AboutApp/index.less b/packages/app/src/components/AboutApp/index.less
new file mode 100644
index 00000000..689fedfa
--- /dev/null
+++ b/packages/app/src/components/AboutApp/index.less
@@ -0,0 +1,75 @@
+.aboutApp_wrapper {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ width: 100vw;
+ height: 100vh;
+}
+
+.aboutApp_card {
+ height: fit-content;
+ width: 80vw;
+
+ svg {
+ margin: 0;
+ }
+
+ .ant-tag {
+ display: inline-flex;
+ align-items: center;
+ }
+
+ .group {
+ width: 100%;
+ display: inline-flex;
+ flex-direction: column;
+ justify-content: center;
+
+ > div {
+ display: inline-flex;
+ margin-left: 10px;
+ }
+
+ margin-bottom: 10px;
+ }
+
+
+}
+
+.aboutApp_card_header {
+ .adm-card-header-title {
+ width: 100%;
+ }
+
+ .content {
+ width: 100%;
+
+ display: inline-flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+
+ h1,h2,h3 {
+ margin: 0;
+ }
+
+ .branding {
+ display: flex;
+ flex-direction: column;
+
+ h1,h2,h3 {
+ height: fit-content;
+ line-height: 24px;
+ }
+
+ span {
+ height: fit-content;
+ color: var(--background-color-contrast);
+ font-size: 10px;
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/ActionsBar/index.jsx b/packages/app/src/components/ActionsBar/index.jsx
new file mode 100644
index 00000000..e064d824
--- /dev/null
+++ b/packages/app/src/components/ActionsBar/index.jsx
@@ -0,0 +1,27 @@
+import React from "react"
+import classnames from "classnames"
+import "./index.less"
+
+export default (props) => {
+ const { children } = props
+
+ return
+}
\ No newline at end of file
diff --git a/packages/app/src/components/ActionsBar/index.less b/packages/app/src/components/ActionsBar/index.less
new file mode 100644
index 00000000..4612d359
--- /dev/null
+++ b/packages/app/src/components/ActionsBar/index.less
@@ -0,0 +1,100 @@
+@actionsBar_height: fit-content;
+
+.actionsBar {
+ --ignore-dragger: true;
+ display: inline-block;
+ white-space: nowrap;
+
+ overflow-x: overlay;
+
+ padding: 15px;
+
+ width: 100%;
+ height: @actionsBar_height;
+
+ border: 1px solid #e0e0e0;
+ border-radius: 8px;
+
+ background-color: #0c0c0c15;
+
+ backdrop-filter: blur(10px);
+ --webkit-backdrop-filter: blur(10px);
+
+ transition: all 200ms ease-in-out;
+
+ ::-webkit-scrollbar {
+ position: absolute;
+ display: none;
+
+ width: 0;
+ height: 0;
+ z-index: 0;
+ }
+
+ .wrapper {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+ height: 100%;
+ transition: all 200ms ease-in-out;
+
+ > div {
+ margin: 0 5px;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+ --ignore-dragger: true;
+
+ span {
+ height: fit-content;
+ }
+ }
+ }
+
+ &.float {
+ z-index: 1000;
+ position: sticky;
+ bottom: 0;
+ top: 0;
+ right: 0;
+ width: 100%;
+ }
+
+ &.fixedBottom {
+ z-index: 1000;
+ position: fixed;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ &.fixedTop {
+ z-index: 1000;
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ &.transparent {
+ background-color: transparent;
+ border: none;
+ backdrop-filter: none;
+ --webkit-backdrop-filter: none;
+ }
+
+ &.spaced {
+ .wrapper {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ }
+ }
+}
diff --git a/packages/app/src/components/AddableSelectList/index.jsx b/packages/app/src/components/AddableSelectList/index.jsx
new file mode 100644
index 00000000..4f664c4f
--- /dev/null
+++ b/packages/app/src/components/AddableSelectList/index.jsx
@@ -0,0 +1,258 @@
+import React from "react"
+import * as antd from "antd"
+import { PullToRefresh } from "antd-mobile"
+import { Icons } from "components/Icons"
+import { SelectableList, SwipeItem, Skeleton } from "components"
+import { debounce } from "lodash"
+import fuse from "fuse.js"
+
+import "./index.less"
+
+const statusRecord = {
+ pulling: "Slide down to refresh",
+ canRelease: "Release",
+ refreshing: ,
+ complete: ,
+}
+
+export const AddableSelectListSelector = (props = {}) => {
+ const [loading, setLoading] = React.useState(true)
+ const [data, setData] = React.useState([])
+ const [searchValue, setSearchValue] = React.useState(null)
+
+ React.useEffect(async () => {
+ await fetchData()
+ }, [])
+
+ const fetchData = async () => {
+ setLoading(true)
+
+ if (typeof props.loadData === "function") {
+ const result = await props.loadData()
+
+ setData(result)
+ }
+
+ setLoading(false)
+ }
+
+ const search = (value) => {
+ if (typeof value !== "string") {
+ if (typeof value.target?.value === "string") {
+ value = value.target.value
+ }
+ }
+
+ if (value === "") {
+ return setSearchValue(null)
+ }
+
+ const searcher = new fuse(data, {
+ includeScore: true,
+ keys: [...(props.searcherKeys ?? []), "_id", "name"],
+ })
+
+ const result = searcher.search(value)
+
+ return setSearchValue(result.map((entry) => {
+ return entry.item
+ }))
+ }
+
+ const debouncedSearch = debounce((value) => search(value), props.debounceSearchWait ?? 500)
+
+ const onSearch = (keyword) => {
+ if (typeof keyword !== "string") {
+ keyword = keyword.target.value
+ }
+
+ if (keyword === "" && searchValue) {
+ return setSearchValue(null)
+ }
+
+ debouncedSearch(keyword)
+ }
+
+ const isExcludedId = (id) => {
+ if (!props.excludedSelectedKeys) {
+ return false
+ }
+
+ if (props.excludedIds) {
+ return props.excludedIds.includes(id)
+ }
+
+ return false
+ }
+
+ const findData = (id) => {
+ return data.find((item) => {
+ return item._id === id
+ })
+ }
+
+ if (loading) {
+ return
+ }
+
+ return
+
+
{
+ return {statusRecord[status]}
+ }}
+ onRefresh={fetchData}
+ >
+
+ Done
+
+ ]}
+ events={{
+ onDone: (ctx, keys) => props.handleDone(keys, keys.map((key) => findData(key))),
+ }}
+ disabledKeys={props.excludedIds}
+ renderItem={(item) => {
+ return
+ }}
+ />
+
+
+}
+
+export const AddableSelectListItem = (props) => {
+ const { item, actions, onClick, onDelete } = props
+
+ const handleClick = () => {
+ if (typeof onClick === "function") {
+ onClick(item)
+ }
+ }
+
+ const handleDelete = () => {
+ if (typeof onDelete === "function") {
+ onDelete(item)
+ }
+ }
+
+ return
+
+ }
+ title={item.label}
+ />
+
+
+}
+
+//@evite-components#OperatorsAssignments*mobile/desktop
+export default class AddableSelectList extends React.Component {
+ state = {
+ selectedKeys: [],
+ selectedItems: [],
+ }
+
+ onClickAdd = async () => {
+ window.app.DrawerController.open("AddableSelectListSelector", AddableSelectListSelector, {
+ onDone: async (ctx, keys, data) => {
+ if (keys.length <= 0) {
+ ctx.close()
+ return false
+ }
+
+ let { selectedKeys, selectedItems } = this.state
+
+ selectedKeys = [...selectedKeys, ...keys]
+ selectedItems = [...selectedItems, ...data]
+
+ await this.setState({ selectedKeys: selectedKeys, selectedItems: selectedItems })
+
+ if (typeof this.props.onSelectItem === "function") {
+ await this.props.onSelectItem(keys)
+ }
+
+ ctx.close()
+ },
+ componentProps: {
+ loadData: this.props.loadData,
+ searcherKeys: this.props.searcherKeys,
+ debounceSearchWait: this.props.debounceSearchWait,
+ excludedIds: this.state.selectedKeys,
+ excludedSelectedKeys: this.props.excludedSelectedKeys,
+ },
+ })
+ }
+
+ onClickItem = async (item) => {
+ if (typeof this.props.onClickItem === "function") {
+ await this.props.onClickItem(item)
+ }
+ }
+
+ onDeleteItem = async (item) => {
+ if (typeof this.props.onDeleteItem === "function") {
+ await this.props.onDeleteItem(item)
+ }
+
+ const { selectedKeys, selectedItems } = this.state
+
+ const newSelectedKeys = selectedKeys.filter((key) => {
+ return key !== item._id
+ })
+
+ const newSelectedItems = selectedItems.filter((_item) => {
+ return _item._id !== item._id
+ })
+
+ this.setState({ selectedKeys: newSelectedKeys, selectedItems: newSelectedItems })
+ }
+
+ render() {
+ return
+
+
{
+ return this.onClickItem(item)}
+ onDelete={() => { this.onDeleteItem(item) }}
+ />
+ }}
+ />
+
+
+
+
}
+ shape="round"
+ onClick={this.onClickAdd}
+ >
+ Add
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/AddableSelectList/index.less b/packages/app/src/components/AddableSelectList/index.less
new file mode 100644
index 00000000..5d99bd48
--- /dev/null
+++ b/packages/app/src/components/AddableSelectList/index.less
@@ -0,0 +1,45 @@
+.addableSelectListSelector {
+ > div {
+ margin-bottom: 10px;
+ }
+
+ .item {
+ h1 {
+ margin: 0;
+ }
+
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ width: 100%;
+
+ > div {
+ margin-right: 10px;
+ }
+ }
+}
+
+.addableSelectList {
+ #delete {
+ border-radius: 4px;
+ }
+
+ .item {
+ background-color: var(--background-color-primary);
+ }
+
+ .actions {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+
+ > div {
+ margin-right: 6px;
+ }
+ }
+
+ > div {
+ margin-bottom: 10px;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/AdminTools/UserDataManager/index.jsx b/packages/app/src/components/AdminTools/UserDataManager/index.jsx
new file mode 100644
index 00000000..8371df59
--- /dev/null
+++ b/packages/app/src/components/AdminTools/UserDataManager/index.jsx
@@ -0,0 +1,204 @@
+import React from "react"
+import * as antd from "antd"
+import debounce from "lodash/debounce"
+import { Translation } from "react-i18next"
+
+import { ActionsBar } from "components"
+import { Icons } from "components/Icons"
+
+import "./index.less"
+
+export const EditAccountField = ({ id, component, props, header, handleChange, delay, defaultValue, allowEmpty }) => {
+ const [currentValue, setCurrentValue] = React.useState(defaultValue)
+ const [emittedValue, setEmittedValue] = React.useState(null)
+
+ const debouncedHandleChange = React.useCallback(
+ debounce((value) => handleChange({ id, value }), delay ?? 300),
+ [],
+ )
+
+ const handleDiscard = (event) => {
+ if (typeof event !== "undefined") {
+ event.target.blur()
+ }
+
+ setCurrentValue(defaultValue)
+ handleChange({ id, value: defaultValue })
+ }
+
+ React.useEffect(() => {
+ debouncedHandleChange(currentValue)
+ }, [emittedValue])
+
+ const onChange = (event) => {
+ event.persist()
+ let { value } = event.target
+
+ if (typeof value === "string") {
+ if (value.length === 0) {
+ // if is not allowed to be empty, discard modifications
+ if (!allowEmpty) {
+ return handleDiscard(event)
+ }
+ }
+ }
+
+ setCurrentValue(value)
+ setEmittedValue(value)
+ }
+
+ const handleKeyDown = (event) => {
+ if (event.keyCode === 27) {
+ // "escape" pressed, reset to default value
+ handleDiscard(event)
+ }
+ }
+
+ const RenderComponent = component
+
+ return (
+
+ {header ? header : null}
+
+
+ )
+}
+
+export default class UserDataManager extends React.Component {
+ state = {
+ data: this.props.user,
+ changes: [],
+ loading: false,
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ if (!this.props.user && this.props.userId) {
+ // TODO: Fetch from API
+ }
+ }
+
+ handleSave = async () => {
+ if (!Array.isArray(this.state.changes)) {
+ antd.message.error("Something went wrong")
+ console.error("Changes should be an array")
+ return false
+ }
+
+ await this.setState({ loading: true })
+ const update = {}
+
+ this.state.changes.forEach((change) => {
+ update[change.id] = change.value
+ })
+
+ const result = await this.api.post.updateUser({ _id: this.state.data._id, update }).catch((err) => {
+ antd.message.error(err.message)
+ console.error(err)
+ return false
+ })
+
+ await this.setState({ changes: [], loading: false })
+
+ if (typeof this.props.onSave === "function") {
+ await this.props.onSave(this.state.changes)
+ }
+
+ if (result) {
+ if (typeof this.props.handleDone === "function") {
+ this.props.handleDone(result)
+ }
+ }
+ }
+
+ handleChange = (event) => {
+ const { id, value } = event
+ let changes = [...this.state.changes]
+
+ changes = changes.filter((change) => change.id !== id)
+
+ if (this.state.data[id] !== value) {
+ changes.push({ id, value })
+ }
+
+ this.setState({ changes })
+ }
+
+ render() {
+ return (
+
+
+
+
+ Account information
+
+
+ Username
+
+ }
+ component={antd.Input}
+ props={{
+ placeholder: "Username",
+ disabled: true,
+ }}
+ handleChange={this.handleChange}
+ />
+
+ Name
+
+ }
+ component={antd.Input}
+ props={{
+ placeholder: "Your full name",
+ }}
+ handleChange={this.handleChange}
+ />
+
+ Email
+
+ }
+ component={antd.Input}
+ props={{
+ placeholder: "Your email address",
+ type: "email",
+ }}
+ handleChange={this.handleChange}
+ />
+
+
+
+
+ {this.state.changes.length}
+ {(t) => t("Changes")}
+
+
+
+
+
+ {(t) => t("Save")}
+
+
+
+
+
+ )
+ }
+}
diff --git a/packages/app/src/components/AdminTools/UserDataManager/index.less b/packages/app/src/components/AdminTools/UserDataManager/index.less
new file mode 100644
index 00000000..08713209
--- /dev/null
+++ b/packages/app/src/components/AdminTools/UserDataManager/index.less
@@ -0,0 +1,61 @@
+.edit_account{
+ overflow: hidden!important;
+ height: 100%;
+}
+
+.edit_account_wrapper{
+ overflow: scroll;
+ > div {
+ margin-bottom: 20px;
+ }
+}
+
+.edit_account_actions {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+
+ width: 100%;
+ padding: 20px 0 20px 0;
+ background-color: rgba(221, 221, 221, 0.5);
+ backdrop-filter: blur(2px);
+ --webkit-backdrop-filter: blur(2px);
+ border-radius: 18px 18px 0 0;
+
+ transition: all 0.3s ease-in-out;
+
+ display: none;
+ opacity: 0;
+
+ &.show {
+ display: flex;
+ opacity: 1;
+ }
+
+ > div {
+ margin-left: 20px;
+ }
+}
+
+.edit_account_actions_indicator{
+ position: fixed;
+ left: 0;
+ margin-left: 30px;
+}
+
+.edit_account_category{
+ > div {
+ margin-bottom: 20px;
+ margin-left: 20px;
+ }
+}
+
+.edit_account_field {
+ input:not(:focus){
+ color:rgba(105, 105, 105, 0.5)
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/AdminTools/UserRolesManager/index.jsx b/packages/app/src/components/AdminTools/UserRolesManager/index.jsx
new file mode 100644
index 00000000..5e411ccc
--- /dev/null
+++ b/packages/app/src/components/AdminTools/UserRolesManager/index.jsx
@@ -0,0 +1,140 @@
+import React from "react"
+import * as antd from "antd"
+
+import { ActionsBar, UserSelector, Skeleton } from "components"
+import { Icons } from "components/Icons"
+
+import "./index.less"
+
+export default class UserRolesManager extends React.Component {
+ state = {
+ users: null,
+ roles: null,
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ await this.fetchRoles()
+
+ if (typeof this.props.id !== "undefined") {
+ const ids = Array.isArray(this.props.id) ? this.props.id : [this.props.id]
+ await this.fetchUsersData(ids)
+ }
+ }
+
+ fetchRoles = async () => {
+ const result = await this.api.get.roles().catch((err) => {
+ antd.message.error(err)
+ console.error(err)
+ return false
+ })
+
+ if (result) {
+ this.setState({ roles: result })
+ }
+ }
+
+ fetchUsersData = async (users) => {
+ const result = await this.api.get.users(undefined, { _id: users }).catch((err) => {
+ antd.message.error(err)
+ console.error(err)
+ return false
+ })
+
+ if (result) {
+ this.setState({
+ users: result.map((data) => {
+ return {
+ _id: data._id,
+ username: data.username,
+ roles: data.roles,
+ }
+ })
+ })
+ }
+ }
+
+ handleSelectUser = async (users) => {
+ this.fetchUsersData(users)
+ }
+
+ handleRoleChange = (userId, role, to) => {
+ let updatedUsers = this.state.users.map((user) => {
+ if (user._id === userId) {
+ if (to == true) {
+ user.roles.push(role)
+ } else {
+ user.roles = user.roles.filter((r) => r !== role)
+ }
+ }
+
+ return user
+ })
+
+ this.setState({ users: updatedUsers })
+ }
+
+ handleSubmit = async () => {
+ const update = this.state.users.map((data) => {
+ return {
+ _id: data._id,
+ roles: data.roles,
+ }
+ })
+
+ const result = await this.api.post.updateUserRoles({ update }).catch((err) => {
+ antd.message.error(err)
+ console.error(err)
+ return false
+ })
+
+ if (result) {
+ this.props.handleDone(result)
+ if (typeof this.props.close === "function") {
+ this.props.close()
+ }
+ }
+ }
+
+ renderItem = (item) => {
+ return
+
+ {item.username}
+
+
+ {this.state.roles.map((role) => {
+ return
this.handleRoleChange(item._id, role.name, to.target.checked)}
+ >
+ {role.name}
+
+ })}
+
+
+ }
+
+ render() {
+ const { users } = this.state
+
+ if (!users) {
+ return
+ }
+
+ return
+ {users.map((data) => {
+ return this.renderItem(data)
+ })}
+
+
+
+
} onClick={() => this.handleSubmit()}>
+ Submit
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/AdminTools/UserRolesManager/index.less b/packages/app/src/components/AdminTools/UserRolesManager/index.less
new file mode 100644
index 00000000..bd373174
--- /dev/null
+++ b/packages/app/src/components/AdminTools/UserRolesManager/index.less
@@ -0,0 +1,19 @@
+.grantRoles_user {
+ display: flex;
+ flex-direction: column;
+
+ .roles {
+ display: inline-flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+
+ padding: 10px;
+ border-radius: 8px;
+
+ background-color: var(--background-color-accent);
+ }
+
+ > div {
+ margin-bottom: 10px;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/AdminTools/index.js b/packages/app/src/components/AdminTools/index.js
new file mode 100644
index 00000000..a570f549
--- /dev/null
+++ b/packages/app/src/components/AdminTools/index.js
@@ -0,0 +1,41 @@
+import UserDataManager from "./UserDataManager"
+import UserRolesManager from "./UserRolesManager"
+
+export { UserDataManager, UserRolesManager }
+
+export const open = {
+ dataManager: (user) => {
+ return new Promise((resolve, reject) => {
+ window.app.DrawerController.open("UserDataManager", UserDataManager, {
+ componentProps: {
+ user: user,
+ },
+ onDone: (ctx, value) => {
+ resolve(value)
+ ctx.close()
+ },
+ onFail: (ctx, value) => {
+ reject(value)
+ ctx.close()
+ }
+ })
+ })
+ },
+ rolesManager: (id) => {
+ return new Promise((resolve, reject) => {
+ window.app.DrawerController.open("UserRolesManager", UserRolesManager, {
+ componentProps: {
+ id: id,
+ },
+ onDone: (ctx, value) => {
+ resolve(value)
+ ctx.close()
+ },
+ onFail: (ctx, value) => {
+ reject(value)
+ ctx.close()
+ }
+ })
+ })
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/AppSearcher/index.jsx b/packages/app/src/components/AppSearcher/index.jsx
new file mode 100644
index 00000000..41a6eb39
--- /dev/null
+++ b/packages/app/src/components/AppSearcher/index.jsx
@@ -0,0 +1,61 @@
+import React from "react"
+import * as antd from "antd"
+import "./index.less"
+
+class Results extends React.Component {
+ state = {
+ results: this.props.results ?? []
+ }
+
+ renderResults = () => {
+ return this.state.results.map(result => {
+ return
+ {result.title}
+
+ })
+ }
+
+ render() {
+ return
+ {this.renderResults()}
+
+ }
+}
+
+export default class AppSearcher extends React.Component {
+ state = {
+ loading: false,
+ searchResult: null,
+ }
+
+ handleSearch = (value) => {
+ let results = []
+
+ // get results
+ results.push({ id: value, title: value })
+
+ // storage results
+ this.setState({ searchResult: results })
+
+ // open results onlayout drawer
+ this.openResults()
+ }
+
+ openResults = () => {
+ window.app.SidedrawerController.render(() => )
+ }
+
+ render() {
+ return (
+
+ )
+ }
+}
diff --git a/packages/app/src/components/AppSearcher/index.less b/packages/app/src/components/AppSearcher/index.less
new file mode 100644
index 00000000..45519141
--- /dev/null
+++ b/packages/app/src/components/AppSearcher/index.less
@@ -0,0 +1,34 @@
+@import "theme/index.less";
+
+.search_bar {
+ user-select: none;
+ --webkit-user-select: none;
+
+ height: fit-content;
+ border: 0;
+ border-radius: 7px !important;
+ vertical-align: middle !important;
+
+ .ant-input {
+ background-color: var(--background-color-accent) !important;
+ border-color: var(--background-color-accent) !important;
+ color: var(--background-color-contrast) !important;
+ }
+
+ .ant-input-group {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: fit-content;
+ }
+
+ .ant-input-group-addon {
+ width: fit-content;
+ background-color: transparent;
+ }
+
+ .ant-btn {
+ background-color: var(--background-color-primary) !important;
+ border: 0 !important;
+ }
+}
diff --git a/packages/app/src/components/Clock/index.jsx b/packages/app/src/components/Clock/index.jsx
new file mode 100644
index 00000000..dbb49d71
--- /dev/null
+++ b/packages/app/src/components/Clock/index.jsx
@@ -0,0 +1,17 @@
+import React from "react"
+
+import "./index.less"
+
+export default () => {
+ const [time, setTime] = React.useState(new Date())
+
+ React.useEffect(() => {
+ const interval = setInterval(() => {
+ setTime(new Date())
+ }, 1000)
+
+ return () => clearInterval(interval)
+ }, [])
+
+ return {time.toLocaleTimeString()}
+}
\ No newline at end of file
diff --git a/packages/comty/src/components/StreamingOverlay/statistics/audience/index.js b/packages/app/src/components/Clock/index.less
similarity index 100%
rename from packages/comty/src/components/StreamingOverlay/statistics/audience/index.js
rename to packages/app/src/components/Clock/index.less
diff --git a/packages/app/src/components/Crash/index.jsx b/packages/app/src/components/Crash/index.jsx
new file mode 100644
index 00000000..776c6118
--- /dev/null
+++ b/packages/app/src/components/Crash/index.jsx
@@ -0,0 +1,23 @@
+import React from "react"
+import { Result, Button } from "antd"
+
+export default (props) => {
+ const { crash } = props
+
+ return
+
window.location.reload()}>
+ Reload app
+
+ ]}
+ >
+
+ {crash.error}
+
+
+
+}
\ No newline at end of file
diff --git a/packages/app/src/components/DraggableDrawer/helpers.js b/packages/app/src/components/DraggableDrawer/helpers.js
new file mode 100644
index 00000000..22b65f42
--- /dev/null
+++ b/packages/app/src/components/DraggableDrawer/helpers.js
@@ -0,0 +1,15 @@
+export function isDirectionTop(direction) {
+ return direction === "top";
+}
+
+export function isDirectionBottom(direction) {
+ return direction === "bottom";
+}
+
+export function isDirectionLeft(direction) {
+ return direction === "left";
+}
+
+export function isDirectionRight(direction) {
+ return direction === "right";
+}
\ No newline at end of file
diff --git a/packages/app/src/components/DraggableDrawer/index.jsx b/packages/app/src/components/DraggableDrawer/index.jsx
new file mode 100644
index 00000000..3f3a8e01
--- /dev/null
+++ b/packages/app/src/components/DraggableDrawer/index.jsx
@@ -0,0 +1,442 @@
+// © Jack Hanford https://github.com/hanford/react-drag-drawer
+import React, { Component } from "react";
+import { Motion, spring, presets } from "react-motion";
+import PropTypes from "prop-types";
+import document from "global/document";
+import Observer from "react-intersection-observer";
+import { css } from "@emotion/css";
+import { createPortal } from "react-dom";
+
+import {
+ isDirectionBottom,
+ isDirectionTop,
+ isDirectionLeft,
+ isDirectionRight,
+} from "./helpers.js"
+
+export default class Drawer extends Component {
+ static propTypes = {
+ open: PropTypes.bool.isRequired,
+ children: PropTypes.oneOfType([
+ PropTypes.object,
+ PropTypes.array,
+ PropTypes.element
+ ]),
+ onRequestClose: PropTypes.func,
+ onDrag: PropTypes.func,
+ onOpen: PropTypes.func,
+ inViewportChange: PropTypes.func,
+ allowClose: PropTypes.bool,
+ notifyWillClose: PropTypes.func,
+ direction: PropTypes.string,
+ modalElementClass: PropTypes.oneOfType([
+ PropTypes.object,
+ PropTypes.string
+ ]),
+ containerOpacity: PropTypes.number,
+ containerElementClass: PropTypes.string,
+ getContainerRef: PropTypes.func,
+ getModalRef: PropTypes.func
+ }
+
+ static defaultProps = {
+ notifyWillClose: () => { },
+ onOpen: () => { },
+ onDrag: () => { },
+ inViewportChange: () => { },
+ onRequestClose: () => { },
+ getContainerRef: () => { },
+ getModalRef: () => { },
+ containerOpacity: 0.6,
+ direction: "bottom",
+ parentElement: document.body,
+ allowClose: true,
+ dontApplyListeners: false,
+ containerElementClass: "",
+ modalElementClass: ""
+ }
+
+ state = {
+ ignore: false,
+ onRange: false,
+ open: this.props.open,
+ thumb: 0,
+ start: 0,
+ position: 0,
+ touching: false,
+ listenersAttached: false
+ }
+
+ DRAGGER_HEIGHT_SIZE = 100
+ MAX_NEGATIVE_SCROLL = 5
+ SCROLL_TO_CLOSE = 475
+ ALLOW_DRAWER_TRANSFORM = true
+
+ componentDidUpdate(prevProps, nextState) {
+ // in the process of closing the drawer
+ if (!this.props.open && prevProps.open) {
+ this.removeListeners()
+
+ setTimeout(this.setState({ open: false }), 300)
+ }
+
+ if (this.drawer) {
+ this.getNegativeScroll(this.drawer)
+ }
+
+ // in the process of opening the drawer
+ if (this.props.open && !prevProps.open) {
+ this.props.onOpen()
+
+ this.setState({ open: true })
+ }
+ }
+
+ componentWillUnmount() {
+ this.removeListeners()
+ }
+
+ attachListeners = drawer => {
+ const { dontApplyListeners, getModalRef, direction } = this.props
+ const { listenersAttached } = this.state
+
+ // only attach listeners once as this function gets called every re-render
+ if (!drawer || listenersAttached || dontApplyListeners) return
+
+ this.drawer = drawer
+
+ getModalRef(drawer)
+
+ this.drawer.addEventListener("touchend", this.release)
+ this.drawer.addEventListener("touchmove", this.drag)
+ this.drawer.addEventListener("touchstart", this.tap)
+
+ let position = 0
+
+ if (isDirectionRight(direction)) {
+ position = drawer.scrollWidth
+ }
+
+ this.setState({ listenersAttached: true, position }, () => {
+ setTimeout(() => {
+ // trigger reflow so webkit browsers calculate height properly 😔
+ // https://bugs.webkit.org/show_bug.cgi?id=184905
+ this.drawer.style.display = "none"
+ void this.drawer.offsetHeight
+ this.drawer.style.display = ""
+ }, 300)
+ })
+ }
+
+ isThumbInDraggerRange = (event) => {
+ return (event.touches[0].clientY - this.drawer.getBoundingClientRect().top) < this.DRAGGER_HEIGHT_SIZE
+ }
+
+ removeListeners = () => {
+ if (!this.drawer) {
+ return false
+ }
+
+ this.drawer.removeEventListener("touchend", this.release)
+ this.drawer.removeEventListener("touchmove", this.drag)
+ this.drawer.removeEventListener("touchstart", this.tap)
+
+ this.setState({ listenersAttached: false })
+ }
+
+ tap = event => {
+ const { pageY, pageX } = event.touches[0]
+ const shouldIgnored = Boolean(event.target.getAttribute("ignore-dragger") || (window.getComputedStyle(event.target).getPropertyValue("--ignore-dragger") !== ""))
+
+ const start = isDirectionBottom(this.props.direction) || isDirectionTop(this.props.direction) ? pageY : pageX
+
+ // reset NEW_POSITION and MOVING_POSITION
+ this.NEW_POSITION = 0
+ this.MOVING_POSITION = 0
+
+ this.setState({ ignore: shouldIgnored, onRange: this.isThumbInDraggerRange(event), thumb: start, start: start, touching: true })
+ }
+
+ drag = event => {
+ if (this.state.ignore) {
+ return false
+ }
+
+ const { direction } = this.props
+ const { thumb, position } = this.state
+ const { pageY, pageX } = event.touches[0]
+
+ const movingPosition = isDirectionBottom(direction) || isDirectionTop(direction) ? pageY : pageX
+ const delta = movingPosition - thumb
+ const newPosition = isDirectionBottom(direction) ? position + delta : position - delta
+
+ if (newPosition > 0 && this.ALLOW_DRAWER_TRANSFORM) {
+ // stop android's pull to refresh behavior
+ event.preventDefault()
+
+ this.props.onDrag({ newPosition })
+
+ // we set this, so we can access it in shouldWeCloseDrawer. Since setState is async, we're not guranteed we'll have the
+ // value in time
+ this.MOVING_POSITION = movingPosition
+ this.NEW_POSITION = newPosition
+
+ let positionThreshold = 0
+
+ if (isDirectionRight(direction)) {
+ positionThreshold = this.drawer.scrollWidth
+ }
+
+ if (newPosition < positionThreshold && this.shouldWeCloseDrawer()) {
+ this.props.notifyWillClose(true)
+ } else {
+ this.props.notifyWillClose(false)
+ }
+
+ // not at the bottom
+ if (this.NEGATIVE_SCROLL < newPosition) {
+ this.setState({
+ thumb: movingPosition,
+ position:
+ positionThreshold > 0
+ ? Math.min(newPosition, positionThreshold)
+ : newPosition
+ })
+ }
+ }
+ }
+
+ release = (event) => {
+ const { direction } = this.props
+
+ this.setState({ touching: false })
+
+ if (this.shouldWeCloseDrawer() && this.state.onRange) {
+ this.props.onRequestClose(this)
+ } else {
+ let newPosition = 0
+
+ if (isDirectionRight(direction)) {
+ newPosition = this.drawer.scrollWidth
+ }
+
+ this.setState({ position: newPosition })
+ }
+ }
+
+ getNegativeScroll = (element) => {
+ const { direction } = this.props
+ const size = this.getElementSize()
+
+ if (isDirectionBottom(direction) || isDirectionTop(direction)) {
+ this.NEGATIVE_SCROLL = size - element.scrollHeight - this.MAX_NEGATIVE_SCROLL
+ } else {
+ this.NEGATIVE_SCROLL = size - element.scrollWidth - this.MAX_NEGATIVE_SCROLL
+ }
+ }
+
+ hideDrawer = () => {
+ const { allowClose, direction } = this.props
+
+ let defaultPosition = 0
+
+ if (isDirectionRight(direction)) {
+ defaultPosition = this.drawer.scrollWidth
+ }
+
+ if (allowClose === false) {
+ // if we aren't going to allow close, let's animate back to the default position
+ return this.setState({
+ position: defaultPosition,
+ thumb: 0,
+ touching: false
+ })
+ }
+
+ this.setState({
+ open: false,
+ position: defaultPosition,
+ touching: false
+ })
+
+ // cleanup
+ this.removeListeners()
+ }
+
+ shouldWeCloseDrawer = () => {
+ const { start: touchStart } = this.state
+ const { direction } = this.props
+
+ let initialPosition = 0
+
+ if (isDirectionRight(direction)) {
+ initialPosition = this.drawer.scrollWidth
+ }
+
+ if (this.MOVING_POSITION === initialPosition) return false
+
+ if (isDirectionRight(direction)) {
+ return (
+ this.NEW_POSITION < initialPosition &&
+ this.MOVING_POSITION - touchStart > this.SCROLL_TO_CLOSE
+ )
+ } else if (isDirectionLeft(direction)) {
+ return (
+ this.NEW_POSITION >= initialPosition &&
+ touchStart - this.MOVING_POSITION > this.SCROLL_TO_CLOSE
+ )
+ } else if (isDirectionTop(direction)) {
+ return (
+ this.NEW_POSITION >= initialPosition &&
+ touchStart - this.MOVING_POSITION > this.SCROLL_TO_CLOSE
+ )
+ } else {
+ return (
+ this.NEW_POSITION >= initialPosition &&
+ this.MOVING_POSITION - touchStart > this.SCROLL_TO_CLOSE
+ )
+ }
+ }
+
+ getDrawerTransform = (value) => {
+ const { direction } = this.props
+
+ if (isDirectionBottom(direction)) {
+ return { transform: `translate3d(0, ${value}px, 0)` }
+ } else if (isDirectionTop(direction)) {
+ return { transform: `translate3d(0, -${value}px, 0)` }
+ } else if (isDirectionLeft(direction)) {
+ return { transform: `translate3d(-${Math.abs(value)}px, 0, 0)` }
+ } else if (isDirectionRight(direction)) {
+ return { transform: `translate3d(${value}px, 0, 0)` }
+ }
+ }
+
+ getElementSize = () => {
+ return isDirectionBottom(this.props.direction) || isDirectionTop(this.props.direction) ? window.innerHeight : window.innerWidth
+ }
+
+ getPosition(hiddenPosition) {
+ const { position } = this.state
+ const { direction } = this.props
+
+ if (isDirectionRight(direction)) {
+ return hiddenPosition - position
+ } else {
+ return position
+ }
+ }
+
+ inViewportChange = (inView) => {
+ this.props.inViewportChange(inView)
+
+ this.ALLOW_DRAWER_TRANSFORM = inView
+ }
+
+ preventDefault = (event) => event.preventDefault()
+ stopPropagation = (event) => event.stopPropagation()
+
+ render() {
+ const {
+ containerElementClass,
+ containerOpacity,
+ dontApplyListeners,
+ id,
+ getContainerRef,
+ getModalRef,
+ direction
+ } = this.props
+
+ const open = this.state.open && this.props.open
+
+ // If drawer isn't open or in the process of opening/closing, then remove it from the DOM
+ // also, if we're not client side we need to return early because createPortal is only
+ // a clientside method
+
+ // if ((!this.state.open && !this.props.open)) {
+ // return null
+ // }
+
+ const { touching } = this.state
+
+ const springPreset = isDirectionLeft(direction) ? { damping: 17, stiffness: 120 } : { damping: 20, stiffness: 300 }
+ const animationSpring = touching ? springPreset : presets.stiff
+ const hiddenPosition = this.getElementSize()
+ const position = this.getPosition(hiddenPosition)
+
+ // Style object for the container element
+ let containerStyle = {
+ backgroundColor: `rgba(55, 56, 56, ${open ? containerOpacity : 0})`
+ }
+
+ // If direction is right, we set the overflowX property to 'hidden' to hide the x scrollbar during
+ // the sliding animation
+ if (isDirectionRight(direction)) {
+ containerStyle = {
+ ...containerStyle,
+ overflowX: "hidden"
+ }
+ }
+
+ return createPortal(
+
+ {({ translate }) => {
+ return (
+
+
+
+
+ {this.props.children}
+
+
+ )
+ }}
+ ,
+ this.props.parentElement
+ )
+ }
+}
+
+const Container = css`
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ flex-shrink: 0;
+ align-items: center;
+ z-index: 11;
+ transition: background-color 0.2s linear;
+ overflow-y: auto;
+ overscroll-behavior: none;
+`
+
+const HaveWeScrolled = css`
+ position: absolute;
+ top: 0;
+ height: 1px;
+ width: 100%;
+`
\ No newline at end of file
diff --git a/packages/app/src/components/Icons/index.jsx b/packages/app/src/components/Icons/index.jsx
new file mode 100644
index 00000000..0e09397e
--- /dev/null
+++ b/packages/app/src/components/Icons/index.jsx
@@ -0,0 +1,29 @@
+import React from "react"
+
+// import icons lib
+import * as lib1 from "feather-reactjs"
+import * as lib2 from "react-icons/md"
+import * as lib3 from "@ant-design/icons"
+
+const marginedStyle = { width: "1em", height: "1em", marginRight: "10px", verticalAlign: "-0.125em" }
+
+const customs = {
+ verifiedBadge: () => ,
+}
+
+export const Icons = {
+ ...customs,
+ ...lib1,
+ ...lib2,
+ ...lib3,
+}
+
+export function createIconRender(icon, props) {
+ if (typeof Icons[icon] !== "undefined") {
+ return React.createElement(Icons[icon], props)
+ }
+
+ return null
+}
+
+export default Icons
\ No newline at end of file
diff --git a/packages/app/src/components/ImageUploader/index.jsx b/packages/app/src/components/ImageUploader/index.jsx
new file mode 100644
index 00000000..663ac5a1
--- /dev/null
+++ b/packages/app/src/components/ImageUploader/index.jsx
@@ -0,0 +1,90 @@
+import React from "react"
+import { Icons } from "components/Icons"
+import * as antd from "antd"
+import { getBase64 } from "utils"
+
+export default class ImageUploader extends React.Component {
+ state = {
+ previewVisible: false,
+ previewImage: "",
+ previewTitle: "",
+ fileList: [],
+ urlList: [],
+ }
+
+ api = window.app.request
+
+ handleChange = ({ fileList }) => {
+ this.setState({ fileList })
+
+ if (typeof this.props.onChange === "function") {
+ this.props.onChange(fileList)
+ }
+ }
+
+ handleCancel = () => this.setState({ previewVisible: false })
+
+ handlePreview = async file => {
+ if (!file.url && !file.preview) {
+ file.preview = await getBase64(file.originFileObj)
+ }
+
+ this.setState({
+ previewImage: file.url || file.preview,
+ previewVisible: true,
+ previewTitle: file.name || file.url.substring(file.url.lastIndexOf("/") + 1),
+ })
+ }
+
+ handleUploadRequest = async (req) => {
+ if (typeof this.props.onUpload === "function") {
+ this.props.onUpload(req)
+ } else {
+ const payloadData = new FormData()
+ payloadData.append(req.file.name, req.file)
+
+ const result = await this.api.post.upload(payloadData).catch(() => {
+ req.onError("Error uploading image")
+ return false
+ })
+
+ if (result) {
+ req.onSuccess()
+ await this.setState({ urlList: [...this.state.urlList, ...result.urls] })
+ }
+
+ if (typeof this.props.onUploadDone === "function") {
+ await this.props.onUploadDone(this.state.urlList)
+ }
+
+ return result.urls
+ }
+ }
+
+ render() {
+ const uploadButton = ()
+
+ return
+
+ {this.state.fileList.length >= 8 ? null : uploadButton}
+
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/ImageViewer/index.jsx b/packages/app/src/components/ImageViewer/index.jsx
new file mode 100644
index 00000000..0c9bb35c
--- /dev/null
+++ b/packages/app/src/components/ImageViewer/index.jsx
@@ -0,0 +1,54 @@
+import React from "react"
+import { Swiper } from "antd-mobile"
+import { LazyLoadImage } from "react-lazy-load-image-component"
+import classnames from "classnames"
+
+import "react-lazy-load-image-component/src/effects/blur.css"
+import "./index.less"
+
+const ImageViewer = (props) => {
+ React.useEffect(() => {
+ if (!Array.isArray(props.src)) {
+ props.src = [props.src]
+ }
+ }, [])
+
+ const openViewer = () => {
+ if (props.extended) {
+ return false
+ }
+
+ window.app.DrawerController.open("ImageViewer", ImageViewer, {
+ componentProps: {
+ src: props.src,
+ extended: true
+ }
+ })
+ }
+
+ return
+
+ {props.src.map((image) => {
+ return {
+ openViewer(image)
+ }}
+ >
+ {
+ openViewer()
+ }}
+ onError={(e) => {
+ e.target.src = "/broken-image.svg"
+ }}
+ />
+
+ })}
+
+
+}
+
+export default ImageViewer
\ No newline at end of file
diff --git a/packages/app/src/components/ImageViewer/index.less b/packages/app/src/components/ImageViewer/index.less
new file mode 100644
index 00000000..cafc1f60
--- /dev/null
+++ b/packages/app/src/components/ImageViewer/index.less
@@ -0,0 +1,31 @@
+.ImageViewer {
+ --ignore-dragger: true;
+ width: 100%;
+
+ .image-wrapper {
+ width: 100%;
+
+ img {
+ border-radius: 8px;
+ --ignore-dragger: true;
+ width: 100%;
+ max-height: 25vh;
+ object-fit: cover;
+ border-radius: 5px;
+ }
+ }
+
+ &.extended {
+ height: 100%;
+ display: inline-flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ img {
+ max-height: 100vh;
+ height: 100%;
+ object-fit: fill;
+ }
+ }
+}
diff --git a/packages/app/src/components/LikeButton/index.jsx b/packages/app/src/components/LikeButton/index.jsx
new file mode 100644
index 00000000..79a0146c
--- /dev/null
+++ b/packages/app/src/components/LikeButton/index.jsx
@@ -0,0 +1,48 @@
+import React from "react"
+import classnames from "classnames"
+
+import "./index.less"
+
+export default (props) => {
+ const [liked, setLiked] = React.useState(props.defaultLiked ?? false)
+ const [clicked, setCliked] = React.useState(false)
+
+ const handleClick = async () => {
+ let to = !liked
+
+ setCliked(to)
+
+ if (typeof props.onClick === "function") {
+ const result = await props.onClick(to)
+ if (typeof result === "boolean") {
+ to = result
+ }
+ }
+
+ setLiked(to)
+ }
+
+ return
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/packages/app/src/components/LikeButton/index.less b/packages/app/src/components/LikeButton/index.less
new file mode 100644
index 00000000..fa9f9e08
--- /dev/null
+++ b/packages/app/src/components/LikeButton/index.less
@@ -0,0 +1,151 @@
+@color-heart : #EA442B;
+@likeAnimationDuration : .5s;
+@likeAnimationEasing : cubic-bezier(.7, 0, .3, 1);
+
+.likeButton {
+ display : flex;
+ align-items : center;
+ justify-content: center;
+
+ .ripple,
+ .ripple:before,
+ .ripple:after {
+ position : relative;
+ box-sizing: border-box;
+ }
+
+ font-size : 40px;
+ border : none;
+ border-radius: 50%;
+ width : 1em;
+ height : 1em;
+ padding : 0;
+ margin : 0;
+ outline : none;
+ z-index : 2;
+ transition : transform @likeAnimationDuration @likeAnimationEasing;
+ cursor : pointer;
+
+ background-color: transparent;
+
+ &:before {
+ z-index : -1;
+ content : '';
+ position : absolute;
+ top : 0;
+ left : 0;
+ width : 100%;
+ height : 100%;
+ border-radius: inherit;
+ transition : inherit;
+ }
+
+ &:after {
+ content : '';
+ position : absolute;
+ top : 0;
+ left : 0;
+ width : 100%;
+ height : 100%;
+ border-radius: inherit;
+ z-index : -1;
+ }
+
+ .heart {
+ position: relative;
+
+ >path {
+ stroke-width: 2;
+ transition : fill @likeAnimationDuration @likeAnimationEasing;
+ stroke : currentColor;
+ fill : transparent;
+ }
+
+ &.liked {
+ >path {
+ stroke: var(--primaryColor);
+ fill : var(--primaryColor);
+ }
+ }
+
+ &.clicked {
+ animation: heart-bounce @likeAnimationDuration @likeAnimationEasing;
+
+ @keyframes heart-bounce {
+ 40% {
+ transform: scale(0.7);
+ }
+
+ 0%,
+ 80%,
+ 100% {
+ transform: scale(1);
+ }
+ }
+ }
+
+ animation: none;
+ }
+
+ .ripple {
+ position : absolute;
+ height : 1em;
+ width : 1em;
+ border-radius: 50%;
+ overflow : hidden;
+ z-index : 1;
+
+ &:before {
+ content : '';
+ position : absolute;
+ top : 0;
+ left : 0;
+ width : 100%;
+ height : 100%;
+ border : .4em solid var(--primaryColor);
+ border-radius: inherit;
+ transform : scale(0);
+ }
+
+ &.clicked {
+ &:before {
+ animation: ripple-out @likeAnimationDuration @likeAnimationEasing;
+ }
+ }
+
+ }
+}
+
+@keyframes ripple-out {
+ from {
+ transform: scale(0);
+ }
+
+ to {
+ transform: scale(5);
+ }
+}
+
+@keyframes depress {
+
+ from,
+ to {
+ transform: none;
+ }
+
+ 50% {
+ transform: translateY(5%) scale(0.9);
+ }
+}
+
+@keyframes depress-shadow {
+
+ from,
+ to {
+ transform: none;
+ }
+
+ 50% {
+ transform: scale(0.5);
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/Navigation/index.jsx b/packages/app/src/components/Navigation/index.jsx
new file mode 100644
index 00000000..5ef45b63
--- /dev/null
+++ b/packages/app/src/components/Navigation/index.jsx
@@ -0,0 +1,76 @@
+import React from "react"
+import { Translation } from "react-i18next"
+
+import Items from "schemas/routes.json"
+import { Icons, createIconRender } from "components/Icons"
+
+import "./index.less"
+
+export default class NavigationMenu extends React.Component {
+ onClick = (id) => {
+ window.app.setLocation(`/${id}`)
+ this.props.close()
+ }
+
+ generateMenus = (items) => {
+ // group items it has children to a new array and the rest to a general array
+ items = items.reduce((acc, item) => {
+ if (item.children) {
+ acc.push(item)
+ } else {
+ acc[0].children.push(item)
+ }
+
+ return acc
+ }, [{
+ id: "general",
+ title: "General",
+ icon: "Home",
+ children: []
+ }])
+
+ return items.map((group) => {
+ return
+
+ {Icons[group.icon] && createIconRender(group.icon)}
+
+ {(t) => t(group.title)}
+
+
+
+ {
+ group.children.map((item) => {
+ return this.renderItem(item)
+ })
+ }
+
+
+ })
+ }
+
+ renderItem = (item, index) => {
+ return this.onClick(item.id)}
+ className="item"
+ >
+
+ {Icons[item.icon] && createIconRender(item.icon)}
+
+
+
+
+ {(t) => t(item.title ?? item.id)}
+
+
+
+
+ }
+
+ render() {
+ return
+ {this.generateMenus(Items)}
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/Navigation/index.less b/packages/app/src/components/Navigation/index.less
new file mode 100644
index 00000000..a2cd3498
--- /dev/null
+++ b/packages/app/src/components/Navigation/index.less
@@ -0,0 +1,81 @@
+@buttonSize: 26vw;
+@buttonBorderRadius: 8px;
+
+.navigation {
+ display: inline-flex;
+ flex-direction: column;
+
+ width: 100%;
+ overflow: hidden;
+
+ .group {
+ display: inline-flex;
+ flex-direction: column;
+
+ .items {
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ flex-wrap: wrap;
+
+ .item {
+ --ignore-dragger: true;
+
+ display: flex;
+ flex-direction: column;
+
+ align-items: center;
+ justify-content: center;
+
+ padding: 10px;
+ margin: 10px 0;
+
+ width: @buttonSize;
+ min-width: @buttonSize;
+ height: @buttonSize;
+ min-height: @buttonSize;
+
+ border-radius: @buttonBorderRadius;
+
+ background-color: var(--background-color-accent);
+ transition: all 80ms ease-in-out;
+
+ .icon {
+ svg {
+ margin: 0 !important;
+ font-size: 2rem;
+ }
+ }
+
+ .name {
+ width: 100%;
+
+ word-break: break-all;
+ text-overflow: ellipsis;
+ text-align: center;
+
+ color: var(--background-color-contrast);
+ padding-top: 10px;
+
+ h1 {
+ word-break: break-all;
+ width: 100%;
+
+ font-size: 1.1rem;
+ margin: 0!important;
+ }
+ }
+ }
+
+ .item:active {
+ background-color: var(--background-color-primary);
+ color: var(--background-color-contrast);
+ transform: scale(0.9);
+ }
+ }
+
+ > div {
+ margin-bottom: 20px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/Notifications/index.jsx b/packages/app/src/components/Notifications/index.jsx
new file mode 100644
index 00000000..8bcdbd94
--- /dev/null
+++ b/packages/app/src/components/Notifications/index.jsx
@@ -0,0 +1,8 @@
+import React from "react"
+import { notification } from "antd"
+
+export default {
+ error: (...context) => {
+ notification.error(context)
+ },
+}
diff --git a/packages/app/src/components/ObjectInspector/index.jsx b/packages/app/src/components/ObjectInspector/index.jsx
new file mode 100644
index 00000000..fa1ff017
--- /dev/null
+++ b/packages/app/src/components/ObjectInspector/index.jsx
@@ -0,0 +1,91 @@
+import React from "react"
+import * as antd from "antd"
+import { decycle } from "@corenode/utils"
+import { Icons } from "components/Icons"
+
+function parseTreeData(data, backKey) {
+ const keys = Object.keys(data)
+ let result = Array()
+
+ keys.forEach((key) => {
+ const value = data[key]
+ const valueType = typeof value
+ const obj = Object()
+
+ obj.key = backKey ? `${backKey}-${key}` : key
+ obj.title = key
+ obj.type = valueType
+
+ if (valueType === "object") {
+ obj.children = parseTreeData(value)
+ } else {
+ obj.children = [
+ {
+ key: `${obj.key}-value`,
+ title: "value",
+ icon: ,
+ children: [
+ {
+ key: `${obj.key}-value-indicator`,
+ title: String(value),
+ icon: ,
+ },
+ ],
+ },
+ {
+ key: `${obj.key}-type`,
+ title: "type",
+ children: [
+ {
+ key: `${obj.key}-type-indicator`,
+ title: valueType,
+ },
+ ],
+ },
+ ]
+ }
+
+ result.push(obj)
+ })
+
+ return result
+}
+
+export default class ObjectInspector extends React.Component {
+ state = {
+ data: null,
+ expandedKeys: [],
+ autoExpandParent: true,
+ }
+
+ componentDidMount() {
+ const raw = decycle(this.props.data)
+ const data = parseTreeData(raw)
+
+ this.setState({ raw, data })
+ }
+
+ onExpand = (expandedKeys) => {
+ this.setState({
+ expandedKeys,
+ autoExpandParent: false,
+ })
+ }
+
+ render() {
+ const { expandedKeys, autoExpandParent } = this.state
+ return (
+
+
}
+ onExpand={this.onExpand}
+ expandedKeys={expandedKeys}
+ autoExpandParent={autoExpandParent}
+ treeData={this.state.data}
+ />
+
+ )
+ }
+}
diff --git a/packages/app/src/components/PostCard/index.jsx b/packages/app/src/components/PostCard/index.jsx
new file mode 100644
index 00000000..7d6737f3
--- /dev/null
+++ b/packages/app/src/components/PostCard/index.jsx
@@ -0,0 +1,246 @@
+import React from "react"
+import * as antd from "antd"
+import { Icons } from "components/Icons"
+import { LikeButton } from "components"
+import moment from "moment"
+import classnames from "classnames"
+
+import { User } from "models"
+
+import CSSMotion from "rc-animate/lib/CSSMotion"
+import useLayoutEffect from "rc-util/lib/hooks/useLayoutEffect"
+
+import "./index.less"
+
+const getCurrentHeight = (node) => ({ height: node.offsetHeight })
+
+const getMaxHeight = (node) => {
+ return { height: node.scrollHeight }
+}
+
+const getCollapsedHeight = () => ({ height: 0, opacity: 0 })
+
+function PostHeader(props) {
+ const [timeAgo, setTimeAgo] = React.useState(0)
+
+ const goToProfile = () => {
+ window.app.goToAccount(props.postData.user?.username)
+ }
+
+ const updateTimeAgo = () => {
+ setTimeAgo(moment(props.postData.created_at ?? "").fromNow())
+ }
+
+ React.useEffect(() => {
+ updateTimeAgo()
+
+ const interval = setInterval(() => {
+ updateTimeAgo()
+ }, 10000)
+
+ return () => {
+ clearInterval(interval)
+ }
+ }, [props.postData.created_at])
+
+ return
+
+
+
+
+
+ {props.postData.user?.fullName ?? `@${props.postData.user?.username}`}
+ {props.postData.user?.verified && }
+
+
+
+
+ {timeAgo}
+
+
+
+
+
+
+
+
+ {props.comments}
+
+
+
+
+}
+
+function PostContent({ message }) {
+ return
+ {message}
+
+}
+
+function PostActions(props) {
+ return
+
+
+
+ {props.isSelf && }
+
+}
+
+export class PostCard extends React.Component {
+ state = {
+ loading: true,
+ selfId: null,
+ data: this.props.data,
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ const selfId = await User.selfUserId()
+
+ window.app.ws.listen(`like.post.${this.props.data._id}`, async (data) => {
+ await this.setState({ data })
+ })
+ window.app.ws.listen(`unlike.post.${this.props.data._id}`, async (data) => {
+ await this.setState({ data })
+ })
+
+ await this.setState({
+ selfId,
+ loading: false
+ })
+ }
+
+ onClickLike = async (to) => {
+ let result = false
+
+ if (to) {
+ const apiResult = await await this.api.put.like({ post_id: this.props.data._id })
+ result = apiResult.success
+ } else {
+ const apiResult = await await this.api.put.unlike({ post_id: this.props.data._id })
+ result = apiResult.success
+ }
+
+ return result
+ }
+
+ onClickSave = async () => {
+ // TODO: save post
+ }
+
+ hasLiked = () => {
+ return this.state.data.likes.some(user_id => user_id === this.state.selfId)
+ }
+
+ isSelf = () => {
+ return this.state.selfId === this.state.data.user._id
+ }
+
+ render() {
+ const hasLiked = this.hasLiked()
+
+ if (this.state.loading) {
+ return
+ }
+
+ return
+
+
this.onClickLike(false)}
+ onClickSave={this.onClickSave}
+ likes={this.state.data.likes.length}
+ comments={this.state.data.comments.length}
+ />
+
+
+
+
+
+ }
+}
+
+export const PostCardAnimated = ({
+ data,
+ onAppear,
+ motionAppear,
+}, ref,) => {
+ const motionRef = React.useRef(false)
+
+ useLayoutEffect(() => {
+ return () => {
+ if (motionRef.current) {
+ onAppear()
+ }
+ }
+ }, [])
+
+ return {
+ motionRef.current = true;
+ return getMaxHeight(node);
+ }}
+ onAppearEnd={onAppear}
+ onLeaveStart={getCurrentHeight}
+ onLeaveActive={getCollapsedHeight}
+ onLeaveEnd={() => {
+ onLeave(id)
+ }}
+ >
+ {(props, passedMotionRef) => {
+ return
+ }}
+
+}
+
+export const ForwardedPostCardAnimated = React.forwardRef(PostCardAnimated)
+
+export default ForwardedPostCardAnimated
\ No newline at end of file
diff --git a/packages/app/src/components/PostCard/index.less b/packages/app/src/components/PostCard/index.less
new file mode 100644
index 00000000..bcf0034b
--- /dev/null
+++ b/packages/app/src/components/PostCard/index.less
@@ -0,0 +1,295 @@
+.postCard {
+ display : inline-flex;
+ flex-direction: column;
+
+ width : 100%;
+ max-width: 600px;
+
+ filter: drop-shadow(3px 3px 2px var(--shadow-color));
+
+ background-color: var(--background-color-accent);
+ border-radius : 8px;
+
+ transition: all 0.2s ease-in-out;
+
+ outline-width: 1px;
+ outline-style: solid;
+ outline-color: transparent;
+
+ &.liked {
+ filter : drop-shadow(0px 0px 2px var(--primaryColor));
+ outline-color: var(--primaryColor);
+ }
+
+ .wrapper {
+ display : inline-flex;
+ flex-direction: column;
+ align-items : center;
+
+ width : 100%;
+ padding: 17px;
+
+ transition: all 0.2s ease-in-out;
+
+ .postHeader {
+ display : inline-flex;
+ flex-direction : row;
+ justify-content: space-between;
+
+ .userInfo {
+ display : inline-flex;
+ flex-direction: row;
+ align-items : center;
+
+ margin-bottom: 15px;
+
+ >div {
+ margin-right: 10px;
+ }
+
+ svg {
+ fill : var(--appColor);
+ margin-left: 6px;
+ }
+
+ .info {
+ display : inline-flex;
+ flex-direction : column;
+ align-items : center;
+ justify-content: start;
+
+ text-align: start;
+
+ width: fit-content;
+
+ color: var(--background-color-contrast);
+
+ h1 {
+ color : var(--background-color-contrast);
+ margin : 0;
+ font-family: "DM Mono", monospace;
+ align-self : start;
+ cursor : pointer;
+ }
+
+ >div {
+ align-self: start;
+ }
+ }
+ }
+
+ .postStadistics {
+ display : inline-flex;
+ flex-direction: column;
+ font-size : 16px;
+
+ color : var(--background-color-contrast);
+ height: fit-content;
+
+ .item {
+ display : inline-flex;
+ align-items : center;
+ justify-content: flex-end;
+ height : fit-content;
+
+ margin-left : 20px;
+ margin-bottom: 5px;
+
+ .icon {
+ &.filled {
+ color: var(--primaryColor);
+ fill : var(--primaryColor);
+ }
+ }
+
+ .value {
+ font-family: "DM Mono", monospace;
+ font-size : 14px;
+ }
+ }
+ }
+ }
+
+ .content {
+ display : inline-flex;
+ flex-direction: column;
+ align-items : flex-start;
+
+ //background-color: var(--background-color-primary);
+
+ padding : 0 10px 10px 10px;
+ border-radius: 8px;
+
+ font-size : 14px;
+ font-family: "Poppins", sans-serif;
+
+ color: var(--background-color-contrast);
+
+ overflow : hidden;
+ word-break : break-all;
+ user-select: text;
+ }
+
+ >div {
+ width: 100%;
+ }
+ }
+
+ .actionsIndicatorWrapper {
+ display : flex;
+ flex-direction : row;
+ align-items : center;
+ justify-content: center;
+
+ transition: all 0.2s ease-in-out;
+ }
+
+ .actionsIndicator {
+ display : flex;
+ flex-direction : row;
+ align-items : center;
+ justify-content: center;
+
+ width : 10vw;
+ padding: 2px;
+
+ border-radius : 8px 8px 0 0;
+ background-color: var(--background-color-primary);
+ color : var(--background-color-contrast);
+
+ font-size: 18px;
+
+ transition: all 0.2s ease-in-out;
+
+ svg {
+ margin: 0 !important;
+ }
+ }
+
+ .actionsWrapper {
+ display : flex;
+ flex-direction : row;
+ align-items : center;
+ justify-content: center;
+
+ position: absolute;
+ bottom : 0;
+ left : 0;
+
+ opacity: 0;
+
+ width : 100%;
+ height: 40px;
+
+ margin-top: 15px;
+ padding : 10px;
+
+ border-radius: 8px;
+ transition : all 0.2s ease-in-out;
+
+ background-color: var(--background-color-primary);
+ }
+
+ .actions {
+ display : inline-flex;
+ flex-direction : row;
+ align-items : center;
+ justify-content: space-between;
+
+ width: 80%;
+
+ transition: all 0.2s ease-in-out;
+
+ color: var(--background-color-contrast);
+
+ .action {
+ display : inline-flex;
+ flex-direction: column;
+
+ transition: all 0.2s ease-in-out;
+
+ .icon {
+ cursor : pointer;
+ transition: all 0.2s ease-in-out;
+
+ svg {
+ transition: all 0.2s ease-in-out;
+ }
+ }
+
+ .value {
+ position: absolute;
+ bottom : 0;
+
+ font-size : 14px;
+ font-family: "DM Mono", monospace;
+
+ transform : translate(0, 50%);
+ transition: all 0.2s ease-in-out;
+ }
+ }
+
+ .action:hover {
+ .icon {
+ svg {
+ color: var(--primaryColor) !important;
+ }
+ }
+ }
+
+ svg {
+ margin: 0 !important;
+ }
+
+ >div {
+ display : flex;
+ flex-direction : row;
+ align-items : center;
+ justify-content: center;
+
+ border-radius: 360px;
+ width : 55px;
+ height : 55px;
+
+ font-size: 20px;
+ padding : 2px;
+
+ background-color: var(--background-color-primary);
+ transform : translate(0, -15px);
+ }
+ }
+}
+
+.postCard:hover {
+ .wrapper {
+ margin-bottom: 25px;
+ }
+
+ .actionsWrapper {
+ opacity: 1;
+ }
+
+ // .actionsIndicator {
+ // opacity: 0;
+ // }
+}
+
+@keyframes fadeActionsIn {
+ from {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1;
+ }
+}
+
+@keyframes fadeActionOut {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/PostCreator/index.jsx b/packages/app/src/components/PostCreator/index.jsx
new file mode 100644
index 00000000..679e3a05
--- /dev/null
+++ b/packages/app/src/components/PostCreator/index.jsx
@@ -0,0 +1,98 @@
+import React from "react"
+import * as antd from "antd"
+import { Icons } from "components/Icons"
+import { User } from "models"
+import classnames from "classnames"
+
+import "./index.less"
+
+const maxMessageLength = 512
+
+const PostCreatorInput = (props) => {
+ const [value, setValue] = React.useState("")
+
+ const canPublish = () => {
+ return value.length !== 0 && value.length < maxMessageLength
+ }
+
+ const onChange = (e) => {
+ setValue(e.target.value)
+ }
+
+ const handleSubmit = () => {
+ if (canPublish()) {
+ if (typeof props.onSubmit === "function") {
+ props.onSubmit(value)
+ }
+
+ setValue("")
+ }
+ }
+
+ return
+
+
+
+
+
+
+}
+
+export default class PostCreator extends React.Component {
+ state = {
+ loading: false,
+ }
+ api = window.app.request
+
+ componentDidMount = async () => {
+ const userData = await User.data()
+
+ this.setState({
+ userData
+ })
+ }
+
+ onSubmit = async (value) => {
+ await this.setState({ loading: true })
+
+ const result = this.api.put.post({
+ message: value,
+ }).catch(error => {
+ console.error(error)
+ antd.message.error(error)
+
+ return false
+ })
+
+ this.setState({ loading: false })
+ }
+
+ render() {
+ return
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/PostCreator/index.less b/packages/app/src/components/PostCreator/index.less
new file mode 100644
index 00000000..9a5439fe
--- /dev/null
+++ b/packages/app/src/components/PostCreator/index.less
@@ -0,0 +1,81 @@
+.postCreator {
+ width : 100%;
+ padding : 15px;
+ background-color: var(--background-color-accent);
+
+ max-width : 600px;
+ border-radius: 7px;
+
+ .textInput {
+ display : flex;
+ width : 100%;
+ transition : height 150ms ease-in-out;
+ background-color: var(--background-color-accent);
+
+ svg {
+ margin: 0 !important;
+ }
+
+ .avatar {
+ width : fit-content;
+ height: 45px;
+
+ display: flex;
+
+ img {
+ width : 45px;
+ height : 45px;
+ border-radius: 12px;
+ }
+ }
+
+ .ant-input {
+ color: var(--background-color-contrast);
+ }
+
+ .textArea {
+ border-radius: 8px !important;
+ transition : all 150ms ease-in-out !important;
+
+ &.active {
+ background-color: var(--background-color-primary);
+ }
+ }
+
+ .ant-btn-primary {
+ z-index : 10;
+ position : relative;
+ border-radius : 0 10px 10px 0;
+ height : 100%;
+ vertical-align: bottom;
+ border : none;
+ box-shadow : none;
+ }
+
+ .ant-input {
+ background-color: var(--background-color-accent);
+
+ z-index : 10;
+ position : relative;
+ border-color : transparent !important;
+ box-shadow : none;
+ border-radius: 3px 0 0;
+ height : 100%;
+ padding : 5px 10px;
+ transition : height 150ms linear;
+ width : 100%;
+ }
+
+ .ant-btn-primary[disabled] {
+ background-color: var(--background-color-accent);
+ }
+
+ .ant-input:hover {
+ border-color: #1890ff;
+ }
+
+ .ant-input-affix-wrapper {
+ height: 100%;
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/PostsFeed/index.jsx b/packages/app/src/components/PostsFeed/index.jsx
new file mode 100644
index 00000000..5588b58a
--- /dev/null
+++ b/packages/app/src/components/PostsFeed/index.jsx
@@ -0,0 +1,100 @@
+import React from "react"
+import * as antd from "antd"
+import { PostCard } from "components"
+
+import List from "rc-virtual-list"
+
+import "./index.less"
+
+
+export default class PostsFeed extends React.Component {
+ state = {
+ initialLoading: true,
+ list: [],
+ animating: false,
+ }
+
+ api = window.app.request
+ listRef = React.createRef()
+
+ componentDidMount = async () => {
+ await this.loadPosts()
+
+ window.app.ws.listen(`new.post`, async (data) => {
+ this.onInsert(data)
+ })
+
+ await this.setState({
+ initialLoading: false,
+ })
+ }
+
+ loadPosts = async ({
+ startIndex,
+ stopIndex,
+ } = {}) => {
+ const result = await this.api.get.feed(undefined, {
+ startIndex,
+ stopIndex,
+ feedLength: this.props.feedLength,
+ user_id: this.props.fromUserId,
+ })
+
+ console.log(result)
+
+ if (result) {
+ this.setState({ list: result })
+ }
+ }
+
+ onAppear = (...args) => {
+ console.log('Appear:', args)
+ this.setState({ animating: false })
+ }
+
+ lockForAnimation = () => {
+ this.setState({ animating: true })
+ }
+
+ onInsert = async (data) => {
+ const updatedList = this.state.list
+
+ updatedList.unshift(data)
+
+ await this.setState({
+ list: updatedList,
+ })
+
+ this.lockForAnimation()
+ }
+
+ render() {
+ if (this.state.initialLoading) {
+ return
+ }
+
+ if (this.state.list.length === 0) {
+ return
+ }
+
+ return
+
+ {(item, index) => (
+
+ )}
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/PostsFeed/index.less b/packages/app/src/components/PostsFeed/index.less
new file mode 100644
index 00000000..10637656
--- /dev/null
+++ b/packages/app/src/components/PostsFeed/index.less
@@ -0,0 +1,41 @@
+.postsFeed {
+ display : flex;
+ flex-direction : column;
+ align-items : center;
+ justify-content: center;
+
+ width: 100%;
+
+ .content {
+ overflow: visible;
+
+ display : flex;
+ flex-direction : column;
+ align-items : center;
+ justify-content: center;
+
+ width : 100%;
+ max-width: 40vw;
+
+ .rc-virtual-list-holder {
+ overflow-y: visible !important;
+ width : 100%;
+
+ }
+
+ .rc-virtual-list-holder-inner {
+ width : 100%;
+ overflow: visible;
+
+ display : flex;
+ flex-direction : column;
+ align-items : center;
+ justify-content: center;
+
+ >div {
+ width : 100%;
+ margin-bottom: 15px;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/RenderError/index.jsx b/packages/app/src/components/RenderError/index.jsx
new file mode 100644
index 00000000..767e0753
--- /dev/null
+++ b/packages/app/src/components/RenderError/index.jsx
@@ -0,0 +1,73 @@
+import React from "react"
+import { Result, Button, Typography } from "antd"
+import { CloseCircleOutlined } from "@ant-design/icons"
+import config from "config"
+
+import "./index.less"
+
+const { Paragraph, Text } = Typography
+
+const ErrorEntry = (props) => {
+ const { error } = props
+
+ if (!error) {
+ return
+
+ Unhandled error
+
+ }
+
+ return
+
+ {error.info.toString()}
+
+}
+
+export default (props) => {
+ let errors = []
+
+ if (Array.isArray(props.error)) {
+ errors = props.error
+ } else {
+ errors.push(props.error)
+ }
+
+ const onClickGoMain = () => {
+ window.app.setLocation(config.app.mainPath ?? "/main")
+ }
+ const onClickReload = () => {
+ window.location.reload()
+ }
+
+ return (
+
+
+ Go Main
+ ,
+ Reload ,
+ ]}
+ >
+
+
+ We catch the following errors:
+
+
+ {errors.map((error, index) => {
+ return
+ })}
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/packages/app/src/components/RenderError/index.less b/packages/app/src/components/RenderError/index.less
new file mode 100644
index 00000000..3099168c
--- /dev/null
+++ b/packages/app/src/components/RenderError/index.less
@@ -0,0 +1,16 @@
+.errors {
+ margin-top: 12px;
+
+ .error {
+ margin-bottom: 10px;
+
+ svg {
+ color: red;
+ margin-right: 10px;
+ }
+ .stack {
+ margin-left: 24px;
+ word-wrap: break-word;
+ }
+ }
+}
diff --git a/packages/app/src/components/RenderWindow/index.jsx b/packages/app/src/components/RenderWindow/index.jsx
new file mode 100644
index 00000000..2f57c9f0
--- /dev/null
+++ b/packages/app/src/components/RenderWindow/index.jsx
@@ -0,0 +1,196 @@
+import React from "react"
+import ReactDOM from "react-dom"
+import { Rnd } from "react-rnd"
+import { Icons } from "components/Icons"
+
+import "./index.less"
+
+class DOMWindow {
+ constructor(props) {
+ this.props = { ...props }
+
+ this.id = this.props.id
+ this.key = 0
+
+ this.root = document.getElementById("app_windows")
+ this.element = document.getElementById(this.id)
+
+ // handle root container
+ if (!this.root) {
+ this.root = document.createElement("div")
+ this.root.setAttribute("id", "app_windows")
+
+ document.body.append(this.root)
+ }
+
+ // get all windows opened has container
+ const rootNodes = this.root.childNodes
+
+ // ensure this window has last key from rootNode
+ if (rootNodes.length > 0) {
+ const lastChild = rootNodes[rootNodes.length - 1]
+ const lastChildKey = Number(lastChild.getAttribute("key"))
+
+ this.key = lastChildKey + 1
+ }
+
+ this.element = document.createElement("div")
+ this.element.setAttribute("id", this.id)
+ this.element.setAttribute("key", this.key)
+
+ this.root.appendChild(this.element)
+ }
+
+ render = (fragment) => {
+ ReactDOM.render(
+ fragment,
+ this.element,
+ )
+
+ return this
+ }
+
+ create = () => {
+ // set render
+ this.render( )
+
+ return this
+ }
+
+ destroy = () => {
+ this.element.remove()
+ return this
+ }
+}
+
+class WindowRender extends React.Component {
+ state = {
+ actions: [],
+ dimensions: {
+ height: this.props.height ?? 600,
+ width: this.props.width ?? 400,
+ },
+ position: this.props.defaultPosition,
+ visible: false,
+ }
+
+ componentDidMount = () => {
+ this.setDefaultActions()
+
+ if (typeof this.props.actions !== "undefined") {
+ if (Array.isArray(this.props.actions)) {
+ const actions = this.state.actions ?? []
+
+ this.props.actions.forEach((action) => {
+ actions.push(action)
+ })
+
+ this.setState({ actions })
+ }
+ }
+
+ if (!this.state.position) {
+ this.setState({ position: this.getCenterPosition() })
+ }
+
+ this.toogleVisibility(true)
+ }
+
+ toogleVisibility = (to) => {
+ this.setState({ visible: to ?? !this.state.visible })
+ }
+
+ getCenterPosition = () => {
+ const dimensions = this.state?.dimensions ?? {}
+
+ const windowHeight = dimensions.height ?? 600
+ const windowWidth = dimensions.width ?? 400
+
+ return {
+ x: window.innerWidth / 2 - windowWidth / 2,
+ y: window.innerHeight / 2 - windowHeight / 2,
+ }
+ }
+
+ setDefaultActions = () => {
+ const { actions } = this.state
+
+ actions.push({
+ key: "close",
+ render: () => ,
+ onClick: () => {
+ this.props.destroy()
+ },
+ })
+
+ this.setState({ actions })
+ }
+
+ renderActions = () => {
+ const actions = this.state.actions
+
+ if (Array.isArray(actions)) {
+ return actions.map((action) => {
+ return (
+
+ {React.isValidElement(action.render) ? action.render : React.createElement(action.render)}
+
+ )
+ })
+ }
+
+ return null
+ }
+
+ getComponentRender = () => {
+ return React.isValidElement(this.props.children)
+ ? React.cloneElement(this.props.children, this.props.renderProps)
+ : React.createElement(this.props.children, this.props.renderProps)
+ }
+
+ render() {
+ const { position, dimensions, visible } = this.state
+
+ if (!visible) {
+ return null
+ }
+
+ return (
+ {
+ this.setState({
+ dimensions: {
+ width: ref.offsetWidth,
+ height: ref.offsetHeight,
+ },
+ position,
+ })
+ }}
+ dragHandleClassName="window_topbar"
+ minWidth={this.props.minWidth ?? "300px"}
+ minHeight={this.props.minHeight ?? "200px"}
+ >
+
+
+
{this.props.id}
+
{this.renderActions()}
+
+
+
{this.getComponentRender()}
+
+
+ )
+ }
+}
+
+export { DOMWindow, WindowRender }
\ No newline at end of file
diff --git a/packages/app/src/components/RenderWindow/index.less b/packages/app/src/components/RenderWindow/index.less
new file mode 100644
index 00000000..921e0306
--- /dev/null
+++ b/packages/app/src/components/RenderWindow/index.less
@@ -0,0 +1,93 @@
+@wrapper_background: rgba(255, 255, 255, 1);
+
+@topbar_height: 30px;
+@topbar_background: rgba(0, 0, 0, 0.4);
+
+.window_wrapper {
+ border-radius: 12px;
+
+ background-color: @wrapper_background;
+ border: 1px solid rgba(161, 133, 133, 0.2);
+ overflow: hidden;
+
+ &.translucid {
+ border: unset;
+ background-color: rgba(0, 0, 0, 0.2);
+
+ backdrop-filter: blur(10px);
+ --webkit-backdrop-filter: blur(10px);
+ filter: drop-shadow(8px 8px 10px rgba(0, 0, 0, 0.5));
+ }
+}
+
+.window_topbar {
+ position: sticky;
+ z-index: 51;
+ background-color: @topbar_background;
+
+ height: @topbar_height;
+ width: 100%;
+
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+
+ > div {
+ margin: 0 5px;
+ line-height: 0;
+ }
+
+ .title {
+ margin-left: 20px;
+
+ color: #fff - @topbar_background;
+
+ font-size: 13px;
+ font-style: italic;
+ font-family: "JetBrains Mono", monospace;
+ }
+
+ .actions {
+ display: flex;
+ flex-direction: row-reverse;
+ align-items: center;
+ justify-content: end;
+
+ color: #fff - @topbar_background;
+
+ > div {
+ transition: all 150ms ease-in-out;
+ margin-right: 10px;
+ cursor: pointer;
+
+ height: fit-content;
+ width: fit-content;
+ line-height: 0;
+
+ display: flex;
+ align-items: center;
+ justify-content: end;
+ }
+ > div:hover {
+ color: var(--primary-color);
+ }
+ }
+}
+
+.window_body {
+ z-index: 50;
+
+ padding: 10px 20px;
+ height: calc(100% - @topbar_height);
+ width: 100%;
+
+ overflow: overlay;
+ user-select: text !important;
+ --webkit-user-select: text !important;
+
+ > div {
+ user-select: text !important;
+ --webkit-user-select: text !important;
+ }
+}
diff --git a/packages/app/src/components/ScheduledProgress/index.jsx b/packages/app/src/components/ScheduledProgress/index.jsx
new file mode 100644
index 00000000..61e8293e
--- /dev/null
+++ b/packages/app/src/components/ScheduledProgress/index.jsx
@@ -0,0 +1,85 @@
+import React from "react"
+import moment from "moment"
+import * as antd from "antd"
+import classnames from "classnames"
+
+import "./index.less"
+
+const defaultDateFormat = "DD-MM-YYYY hh:mm"
+
+export default class ScheduledProgress extends React.Component {
+ isDateReached = (date) => {
+ const format = this.props.dateFormat ?? defaultDateFormat
+ const now = moment().format(format)
+ const result = moment(date, format).isSameOrBefore(moment(now, format))
+
+ console.debug(`[${date}] is before [${now}] => ${result}`)
+
+ return result
+ }
+
+ getDiffBetweenDates = (start, end) => {
+ // THIS IS NOT COUNTING WITH THE YEAR
+ const format = "DD-MM-YYYY"
+
+ const startDate = moment(start, format)
+ const endDate = moment(end, format)
+ const now = moment().format(format)
+
+ // count days will took to complete
+ const days = endDate.diff(startDate, "days")
+
+ const daysLeft = endDate.diff(moment(now, format), "days")
+ const daysPassed = moment(now, format).diff(startDate, "days")
+
+ let percentage = 0
+
+ switch (daysLeft) {
+ case 0: {
+ percentage = 99
+ break
+ }
+ case 1: {
+ percentage = 95
+ break
+ }
+ default: {
+ if (daysPassed > 0 && daysPassed < days) {
+ percentage = (daysPassed / days) * 100
+ }
+ break
+ }
+ }
+
+ if (daysPassed > days) {
+ percentage = 100
+ }
+
+ return { daysLeft, daysPassed, percentage }
+ }
+
+ render() {
+ const startReached = this.isDateReached(this.props.start)
+ const finishReached = this.isDateReached(this.props.finish)
+ const datesDiff = this.getDiffBetweenDates(this.props.start, this.props.finish)
+
+ return
+
+ {this.props.start}
+
+
+
+ {this.props.finish}
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/ScheduledProgress/index.less b/packages/app/src/components/ScheduledProgress/index.less
new file mode 100644
index 00000000..bb060934
--- /dev/null
+++ b/packages/app/src/components/ScheduledProgress/index.less
@@ -0,0 +1,68 @@
+.scheduled_progress {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+
+ .point {
+ height: 40px;
+ text-align: center;
+ align-items: end;
+ white-space: nowrap;
+ display: flex;
+ width: 72px;
+ justify-content: center;
+
+ &.right {
+ transform: translate(-50%, 0);
+ }
+
+ &.left {
+ transform: translate(50%, 0);
+ }
+
+ &.reached {
+ color: rgba(0, 0, 0, 0.45);
+ }
+ }
+
+ .ant-progress::before {
+ content: "";
+ width: 8px;
+ height: 8px;
+ border-radius: 24px;
+ transform: translateX(-10px);
+ background-color: rgb(128, 128, 128);
+ }
+
+ .ant-progress::after {
+ content: "";
+ width: 8px;
+ height: 8px;
+ border-radius: 24px;
+ transform: translateX(10px);
+ background-color: rgb(128, 128, 128);
+ }
+
+ .ant-progress {
+ font-size: 0;
+ display: flex;
+ align-items: center;
+ height: fit-content;
+
+ &.startReached {
+ &::before {
+ background-color: var(--primaryColor) !important;
+ }
+ }
+
+ &.finishReached {
+ &::after {
+ background-color: var(--primaryColor) !important;
+ }
+ }
+ }
+
+ .ant-progress-bg {
+ background-color: var(--primaryColor);
+ }
+}
diff --git a/packages/app/src/components/SearchButton/index.jsx b/packages/app/src/components/SearchButton/index.jsx
new file mode 100644
index 00000000..ab155ce2
--- /dev/null
+++ b/packages/app/src/components/SearchButton/index.jsx
@@ -0,0 +1,32 @@
+import React from "react"
+import { SearchBar } from "antd-mobile"
+import classnames from "classnames"
+
+import "./index.less"
+
+export default (props) => {
+ const searchBoxRef = React.useRef(null)
+ const [open, setOpen] = React.useState()
+
+ const openSearchBox = (to) => {
+ to = to ?? !open
+ setOpen(to)
+
+ if (to) {
+ searchBoxRef.current?.focus()
+ }
+ }
+
+ return openSearchBox(true)}
+ className="searchButton">
+ openSearchBox(true)}
+ onBlur={() => openSearchBox(false)}
+ />
+
+}
\ No newline at end of file
diff --git a/packages/app/src/components/SearchButton/index.less b/packages/app/src/components/SearchButton/index.less
new file mode 100644
index 00000000..6604101f
--- /dev/null
+++ b/packages/app/src/components/SearchButton/index.less
@@ -0,0 +1,18 @@
+.searchButton {
+ .searchBox {
+ .adm-search-bar-input {
+ transition: all 150ms ease-in-out;
+ width: 0px;
+ }
+
+ &.open {
+ .adm-search-bar-input {
+ width: 20vw;
+ }
+ }
+ }
+
+ svg {
+ margin: 0;
+ }
+}
diff --git a/packages/app/src/components/SelectableList/index.jsx b/packages/app/src/components/SelectableList/index.jsx
new file mode 100644
index 00000000..ecc118b5
--- /dev/null
+++ b/packages/app/src/components/SelectableList/index.jsx
@@ -0,0 +1,360 @@
+import React from "react"
+import * as antd from "antd"
+import { Button } from "antd"
+import classnames from "classnames"
+import _ from "lodash"
+import { Translation } from "react-i18next"
+
+import { Icons, createIconRender } from "components/Icons"
+import { ActionsBar, } from "components"
+import { useLongPress, Haptics } from "utils"
+
+import "./index.less"
+
+const ListItem = React.memo((props) => {
+ let { item } = props
+
+ if (!item.key) {
+ item.key = item._id ?? item.id
+ }
+
+ const doubleClickSpeed = 400
+ let delayedClick = null
+ let clickedOnce = null
+
+ const handleOnceClick = () => {
+ clickedOnce = null
+
+ if (typeof props.onClickItem === "function") {
+ return props.onClickItem(item.key)
+ }
+ }
+
+ const handleDoubleClick = () => {
+ if (typeof props.onDoubleClickItem === "function") {
+ return props.onDoubleClickItem(item.key)
+ }
+ }
+
+ const handleLongPress = () => {
+ if (typeof props.onLongPressItem === "function") {
+ return props.onLongPressItem(item.key)
+ }
+ }
+
+ const renderChildren = props.renderChildren(item)
+ const isDisabled = renderChildren.props.disabled
+
+ return React.createElement("div", {
+ id: item.key,
+ key: item.key,
+ disabled: isDisabled,
+ className: classnames("selectableList_item", {
+ ["selected"]: props.selected,
+ ["disabled"]: isDisabled,
+ }),
+ onDoubleClick: () => {
+ if (isDisabled) {
+ return false
+ }
+
+ handleDoubleClick()
+ },
+ ...useLongPress(
+ // onLongPress
+ () => {
+ if (isDisabled) {
+ return false
+ }
+
+ if (props.onlyClickSelection) {
+ return false
+ }
+
+ handleLongPress()
+ },
+ // onClick
+ () => {
+ if (isDisabled) {
+ return false
+ }
+
+ if (props.onlyClickSelection) {
+ return handleOnceClick()
+ }
+
+ if (!delayedClick) {
+ delayedClick = _.debounce(handleOnceClick, doubleClickSpeed)
+ }
+
+ if (clickedOnce) {
+ delayedClick.cancel()
+ clickedOnce = false
+ handleDoubleClick()
+ } else {
+ clickedOnce = true
+ delayedClick()
+ }
+ },
+ {
+ shouldPreventDefault: true,
+ delay: props.longPressDelay ?? 300,
+ }
+ ),
+ }, renderChildren)
+})
+
+export default class SelectableList extends React.Component {
+ state = {
+ selectedKeys: [],
+ selectionEnabled: false,
+ }
+
+ componentDidMount() {
+ if (typeof this.props.defaultSelected !== "undefined" && Array.isArray(this.props.defaultSelected)) {
+ this.setState({
+ selectedKeys: [...this.props.defaultSelected],
+ })
+ }
+ }
+
+ componentDidUpdate(prevProps, prevState) {
+ if (prevState.selectionEnabled !== this.state.selectionEnabled) {
+ if (this.state.selectionEnabled) {
+ this.handleFeedbackEvent("selectionStart")
+ } else {
+ this.handleFeedbackEvent("selectionEnd")
+ }
+ }
+ }
+
+ handleFeedbackEvent = (event) => {
+ if (typeof Haptics[event] === "function") {
+ return Haptics[event]()
+ }
+ }
+
+ isKeySelected = (key) => {
+ return this.state.selectedKeys.includes(key)
+ }
+
+ isAllSelected = () => {
+ return this.state.selectedKeys.length === this.props.items.length
+ }
+
+ selectAll = () => {
+ if (this.props.items.length > 0) {
+ let updatedSelectedKeys = [...this.props.items.map((item) => item.key ?? item.id ?? item._id)]
+
+ if (typeof this.props.disabledKeys !== "undefined") {
+ updatedSelectedKeys = updatedSelectedKeys.filter((key) => {
+ return !this.props.disabledKeys.includes(key)
+ })
+ }
+
+ this.handleFeedbackEvent("selectionChanged")
+
+ this.setState({
+ selectionEnabled: true,
+ selectedKeys: updatedSelectedKeys,
+ })
+ }
+ }
+
+ unselectAll = () => {
+ this.setState({
+ selectionEnabled: false,
+ selectedKeys: [],
+ })
+ }
+
+ selectKey = (key) => {
+ let list = this.state.selectedKeys ?? []
+ list.push(key)
+
+ this.handleFeedbackEvent("selectionChanged")
+
+ return this.setState({ selectedKeys: list })
+ }
+
+ unselectKey = (key) => {
+ let list = this.state.selectedKeys ?? []
+ list = list.filter((_key) => key !== _key)
+
+ this.handleFeedbackEvent("selectionChanged")
+
+ return this.setState({ selectedKeys: list })
+ }
+
+ onDone = () => {
+ if (typeof this.props.onDone === "function") {
+ this.props.onDone(this.state.selectedKeys)
+ }
+ this.unselectAll()
+ }
+
+ onDiscard = () => {
+ if (typeof this.props.onDiscard === "function") {
+ this.props.onDiscard(this.state.selectedKeys)
+ }
+ this.unselectAll()
+ }
+
+ onDoubleClickItem = (key) => {
+ if (typeof this.props.onDoubleClick === "function") {
+ this.props.onDoubleClick(key)
+ }
+ }
+
+ onClickItem = (key) => {
+ if (this.props.overrideSelectionEnabled || this.state.selectionEnabled) {
+ if (this.isKeySelected(key)) {
+ this.unselectKey(key)
+ } else {
+ this.selectKey(key)
+ }
+ } else {
+ if (typeof this.props.onClickItem === "function") {
+ this.props.onClickItem(key)
+ }
+ }
+ }
+
+ onLongPressItem = (key) => {
+ if (this.props.overrideSelectionEnabled) {
+ return false
+ }
+
+ if (!this.state.selectionEnabled) {
+ this.selectKey(key)
+ this.setState({ selectionEnabled: true })
+ }
+ }
+
+ renderProvidedActions = () => {
+ return this.props.actions.map((action) => {
+ return (
+
+ {
+ if (typeof this.props.events === "undefined") {
+ console.error("No events provided to SelectableList")
+ return false
+ }
+
+ if (typeof action.onClick === "function") {
+ action.onClick(this.state.selectedKeys)
+ }
+
+ if (typeof this.props.events[action.props.call] === "function") {
+ this.props.events[action.props.call]({
+ onDone: this.onDone,
+ onDiscard: this.onDiscard,
+ onCancel: this.onCancel,
+ selectKey: this.selectKey,
+ unselectKey: this.unselectKey,
+ selectAll: this.selectAll,
+ unselectAll: this.unselectAll,
+ isKeySelected: this.isKeySelected,
+ isAllSelected: this.isAllSelected,
+ }, this.state.selectedKeys)
+ }
+ }}
+ >
+ {action}
+
+
+ )
+ })
+ }
+
+ getLongPressDelay = () => {
+ return window.app.settings.get("selection_longPress_timeout")
+ }
+
+ renderItems = (data) => {
+ return data.length > 0 ? data.map((item, index) => {
+ item.key = item.key ?? item.id ?? item._id
+
+ if (item.children && Array.isArray(item.children)) {
+ return
+
+ {React.isValidElement(item.icon) ? item.icon : Icons[item.icon] && createIconRender(item.icon)}
+
+ {t => t(item.label)}
+
+
+
+
+ {this.renderItems(item.children)}
+
+
+ }
+
+ let selected = this.isKeySelected(item.key)
+
+ return
+ }) :
+ }
+
+ render() {
+ if (!this.props.overrideSelectionEnabled && this.state.selectionEnabled && this.state.selectedKeys.length === 0) {
+ this.setState({ selectionEnabled: false })
+ this.unselectAll()
+ }
+
+ const isAllSelected = this.isAllSelected()
+ let items = this.renderItems(this.props.items)
+
+ return
+
+ {items}
+
+ {this.props.items.length > 0 && (this.props.overrideSelectionEnabled || this.state.selectionEnabled) && !this.props.actionsDisabled &&
+
+
+
+ {this.props.onDiscardRender ?? }
+
+ {(t) => t("Discard")}
+
+
+
+ {this.props.bulkSelectionAction &&
+
+ isAllSelected ? this.unselectAll() : this.selectAll()}
+ >
+
+ {(t) => t(isAllSelected ? "Unselect all" : "Select all")}
+
+
+
}
+ {Array.isArray(this.props.actions) && this.renderProvidedActions()}
+
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/SelectableList/index.less b/packages/app/src/components/SelectableList/index.less
new file mode 100644
index 00000000..c2320be6
--- /dev/null
+++ b/packages/app/src/components/SelectableList/index.less
@@ -0,0 +1,82 @@
+@selectableList_item_borderColor_active: rgba(51, 51, 51, 1);
+@selectableList_item_borderColor_normal: rgba(51, 51, 51, 0.3);
+
+.selectableList {
+ .selectableList_content {
+ .selectableList_item {
+ --ignore-dragger: true;
+ display: inline-flex;
+ overflow-x: overlay;
+
+ align-items: center;
+
+ user-select: none;
+ --webkit-user-select: none;
+
+ width: 100%;
+ height: fit-content;
+
+ border: @selectableList_item_borderColor_normal 1px solid;
+ border-radius: 4px;
+
+ margin-bottom: 6px;
+ padding: 7px;
+
+ transition: all 150ms ease-in-out;
+
+ &.selected {
+ background-color: #f5f5f5;
+ transform: scale(0.98);
+ margin-bottom: 3px;
+ }
+
+ &.disabled {
+ opacity: 0.5;
+ pointer-events: none;
+ }
+
+ ::-webkit-scrollbar {
+ position: absolute;
+ display: none;
+
+ width: 0;
+ height: 0;
+ z-index: 0;
+ }
+ }
+
+ .selectableList_item:active {
+ background-color: #f5f5f5;
+ transform: scale(0.98);
+ margin-bottom: 3px;
+ }
+ }
+
+ &.selectionEnabled {
+ .selectableList_content {
+ .selectableList_item {
+ cursor: pointer;
+
+ border: rgba(51, 51, 51, 0.3) 1px solid;
+ border-radius: 8px;
+ margin-bottom: 12px;
+
+ h1, h3 {
+ user-select: none;
+ --webkit-user-select: none;
+ }
+ }
+ }
+ }
+}
+
+.selectableList_group {
+ display: flex;
+ flex-direction: column;
+
+ .selectableList_subItems {
+ margin-left: 10px;
+ }
+
+ margin-bottom: 10px;
+}
diff --git a/packages/app/src/components/ServerStatus/index.jsx b/packages/app/src/components/ServerStatus/index.jsx
new file mode 100644
index 00000000..b36cdccb
--- /dev/null
+++ b/packages/app/src/components/ServerStatus/index.jsx
@@ -0,0 +1,31 @@
+import React from "react"
+import * as antd from "antd"
+import { Icons } from "components/Icons"
+
+export default () => {
+ const [connected, setConnected] = React.useState(window.app.ws.mainSocketConnected ?? false)
+
+ window.app.eventBus.on("websocket_connected", (status) => {
+ setConnected(true)
+ })
+
+ window.app.eventBus.on("websocket_disconnected", (status) => {
+ setConnected(false)
+ })
+
+ const getColor = () => {
+ if (!connected) {
+ return "red"
+ }
+
+ return "blue"
+ }
+
+ return
+
+
+ {connected ? "Connected" : "Disconnected"}
+
+
+
+}
\ No newline at end of file
diff --git a/packages/app/src/components/Settings/index.jsx b/packages/app/src/components/Settings/index.jsx
new file mode 100644
index 00000000..7f84d294
--- /dev/null
+++ b/packages/app/src/components/Settings/index.jsx
@@ -0,0 +1,402 @@
+import React from "react"
+import * as antd from "antd"
+import { SliderPicker } from "react-color"
+import { Translation } from "react-i18next"
+import classnames from "classnames"
+
+import config from "config"
+import { Icons, createIconRender } from "components/Icons"
+
+import AppSettings from "schemas/settings/app"
+import AccountSettings from "schemas/settings/account"
+
+import groupsDecorator from "schemas/settingsGroupsDecorator.json"
+
+import { AboutApp } from ".."
+
+import "./index.less"
+
+const ItemTypes = {
+ Button: antd.Button,
+ Switch: antd.Switch,
+ Slider: antd.Slider,
+ Checkbox: antd.Checkbox,
+ Input: antd.Input,
+ InputNumber: antd.InputNumber,
+ Select: antd.Select,
+ SliderColorPicker: SliderPicker,
+}
+
+const SettingItem = (props) => {
+ let { item } = props
+ const [loading, setLoading] = React.useState(true)
+ const [value, setValue] = React.useState(item.defaultValue ?? false)
+ const [delayedValue, setDelayedValue] = React.useState(null)
+
+ if (!item.type) {
+ console.error(`Item [${item.id}] has no an type!`)
+ return null
+ }
+ if (typeof ItemTypes[item.type] === "undefined") {
+ console.error(`Item [${item.id}] has an invalid type: ${item.type}`)
+ return null
+ }
+
+ if (typeof item.props === "undefined") {
+ item.props = {}
+ }
+
+ const dispatchUpdate = async (updateValue) => {
+ if (typeof item.onUpdate === "function") {
+ const result = await item.onUpdate(updateValue).catch((error) => {
+ console.error(error)
+ antd.message.error(error.message)
+ return false
+ })
+
+ if (!result) {
+ return false
+ }
+ updateValue = result
+ } else {
+ const storagedValue = await window.app.settings.get(item.id)
+
+ if (typeof updateValue === "undefined") {
+ updateValue = !storagedValue
+ }
+ }
+
+ if (typeof item.emitEvent === "string") {
+ let emissionPayload = updateValue
+
+ if (typeof item.emissionValueUpdate === "function") {
+ emissionPayload = item.emissionValueUpdate(emissionPayload)
+ }
+
+ window.app.eventBus.emit(item.emitEvent, emissionPayload)
+ }
+
+ if (item.noUpdate) {
+ return false
+ }
+
+ if (item.storaged) {
+ await window.app.settings.set(item.id, updateValue)
+ }
+
+ if (item.debounced) {
+ setDelayedValue(null)
+ }
+
+ setValue(updateValue)
+ }
+
+ const onUpdateItem = async (updateValue) => {
+ setValue(updateValue)
+
+ if (!item.debounced) {
+ await dispatchUpdate(updateValue)
+ } else {
+ setDelayedValue(updateValue)
+ }
+ }
+
+ const settingInitialization = async () => {
+ if (item.storaged) {
+ const storagedValue = window.app.settings.get(item.id)
+ setValue(storagedValue)
+ }
+
+ if (typeof item.defaultValue === "function") {
+ setValue(await item.defaultValue())
+ }
+
+ if (typeof item.dependsOn === "object") {
+ const dependsOptionsKeys = Object.keys(item.dependsOn)
+
+ item.props.disabled = !Boolean(dependsOptionsKeys.every((key) => {
+ const storagedValue = window.app.settings.get(key)
+
+ if (typeof item.dependsOn[key] === "function") {
+ return item.dependsOn[key](storagedValue)
+ }
+
+ return storagedValue === item.dependsOn[key]
+ }))
+ }
+
+ if (typeof item.listenUpdateValue === "string") {
+ window.app.eventBus.on(`setting.update.${item.listenUpdateValue}`, (value) => setValue(value))
+ }
+
+ if (item.reloadValueOnUpdateEvent) {
+ window.app.eventBus.on(item.reloadValueOnUpdateEvent, () => {
+ console.log(`Reloading value for item [${item.id}]`)
+ settingInitialization()
+ })
+ }
+
+ setLoading(false)
+ }
+
+ React.useEffect(() => {
+ settingInitialization()
+ }, [])
+
+ switch (item.type.toLowerCase()) {
+ case "slidercolorpicker": {
+ item.props.onChange = (color) => {
+ item.props.color = color.hex
+ }
+ item.props.onChangeComplete = (color) => {
+ onUpdateItem(color.hex)
+ }
+
+ item.props.color = value
+
+ break
+ }
+ case "input": {
+ item.props.defaultValue = value
+ item.props.onPressEnter = (event) => dispatchUpdate(event.target.value)
+ item.props.onChange = (event) => onUpdateItem(event.target.value)
+ break
+ }
+ case "switch": {
+ item.props.checked = value
+ item.props.onClick = (event) => onUpdateItem(event)
+ break
+ }
+ case "select": {
+ item.props.onChange = (value) => onUpdateItem(value)
+ item.props.defaultValue = value
+ break
+ }
+ case "slider": {
+ item.props.defaultValue = value
+ item.props.onAfterChange = (value) => onUpdateItem(value)
+ break
+ }
+ default: {
+ if (!item.props.children) {
+ item.props.children = item.title ?? item.id
+ }
+ item.props.value = item.defaultValue
+ item.props.onClick = (event) => onUpdateItem(event)
+ break
+ }
+ }
+
+ return
+
+
+
+
+ {Icons[item.icon] ? React.createElement(Icons[item.icon]) : null}
+ {
+ t => t(item.title ?? item.id)
+ }
+
+
{
+ t => t(item.description)
+ }
+
+
+ {item.experimental &&
Experimental }
+
+
+ {item.extraActions &&
+
+ {item.extraActions.map((action, index) => {
+ return
+ })}
+
+ }
+
+
+
+ {loading ?
Loading...
: React.createElement(ItemTypes[item.type], item.props)}
+
+
+ {delayedValue &&
+
}
+ onClick={async () => await dispatchUpdate(value)}
+ >
+ Save
+
+
}
+
+
+}
+
+export default class SettingsMenu extends React.PureComponent {
+ state = {
+ transitionActive: false,
+ activeKey: "app"
+ }
+
+ componentDidMount() {
+ if (typeof this.props.close === "function") {
+ // register escape key to close settings menu
+ window.addEventListener("keydown", this.handleKeyDown)
+ }
+ }
+
+ componentWillUnmount() {
+ if (typeof this.props.close === "function") {
+ window.removeEventListener("keydown", this.handleKeyDown)
+ }
+ }
+
+ handleKeyDown = (event) => {
+ if (event.key === "Escape") {
+ this.props.close()
+ }
+ }
+
+ handlePageTransition = (key) => {
+ this.setState({
+ transitionActive: true,
+ })
+
+ setTimeout(() => {
+ this.setState({
+ activeKey: key
+ })
+
+ setTimeout(() => {
+ this.setState({
+ transitionActive: false,
+ })
+ }, 100)
+ }, 100)
+ }
+
+ renderSettings = (key, group) => {
+ const fromDecoratorIcon = groupsDecorator[key]?.icon
+ const fromDecoratorTitle = groupsDecorator[key]?.title
+
+ return
+
+
+ {fromDecoratorIcon ? React.createElement(Icons[fromDecoratorIcon]) : null}
+ {
+ t => t(fromDecoratorTitle ?? key)
+ }
+
+
+ {group.map((item) => )}
+
+
+
+ }
+
+ generateSettingsGroups = (data) => {
+ let groups = {}
+
+ data.forEach((item) => {
+ if (!groups[item.group]) {
+ groups[item.group] = []
+ }
+
+ groups[item.group].push(item)
+ })
+
+ return Object.keys(groups).map((groupKey) => {
+ return this.renderSettings(groupKey, groups[groupKey])
+ })
+ }
+
+ render() {
+ const isDevMode = window.__evite?.env?.NODE_ENV !== "production"
+
+ return (
+
+
+
+
+ App
+
+ }
+ >
+ {this.generateSettingsGroups(AppSettings)}
+
+
+
{config.app?.siteName}
+
+
+ v{window.app.version}
+
+
+
+
+ {isDevMode ? : }
+ {isDevMode ? "development" : "stable"}
+
+
+
+
+
AboutApp.openModal()}>
+
+ {t => t("about")}
+
+
+
+
+
+
+
+ Account
+
+ }
+ >
+ {this.generateSettingsGroups(AccountSettings)}
+
+
+
+ Security
+
+ }
+ >
+
+
+
+ Privacy
+
+ }
+ >
+
+
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/Settings/index.less b/packages/app/src/components/Settings/index.less
new file mode 100644
index 00000000..b9bf23b9
--- /dev/null
+++ b/packages/app/src/components/Settings/index.less
@@ -0,0 +1,138 @@
+.settings {
+ display : flex;
+ flex-direction: column;
+
+ >div {
+ margin-bottom: 25px;
+ }
+
+ .group {
+ display : flex;
+ flex-direction: column;
+ color : var(--background-color-contrast);
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ color: var(--background-color-contrast);
+ }
+
+ .content {
+ >div {
+ margin-bottom: 25px;
+ }
+ }
+ }
+
+ .settingItem {
+ padding: 0 20px;
+
+ >div {
+ margin-bottom: 10px;
+ }
+
+ .header {
+ display : inline-flex;
+ flex-direction: row;
+ align-items : center;
+ justify-content: space-between;
+ width: 100%;
+
+ .title {
+ display : flex;
+ align-items: center;
+ color : var(--background-color-contrast);
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ margin: 0;
+ color : var(--background-color-contrast);
+ }
+
+ p {
+ font-size: 11px;
+ color : var(--background-color-contrast);
+ margin : 0;
+ }
+
+ >div {
+ margin-right: 10px;
+ }
+ }
+
+ .extraActions {
+ display: inline-flex;
+ align-items: center;
+
+ > div {
+ margin-right: 10px;
+ }
+ }
+ }
+
+ .component {
+ display : flex;
+ flex-direction: column;
+
+ --ignore-dragger: true;
+ padding : 0 20px;
+
+ span {
+ color: var(--background-color-contrast);
+ }
+
+ > div {
+ margin-bottom: 10px;
+ }
+ }
+ }
+
+ .footer {
+ position: relative;
+ width : 100%;
+
+ padding-top : 20px;
+ padding-bottom: 20px;
+
+ display : flex;
+ flex-direction: column;
+
+ justify-content: center;
+ align-items : center;
+
+ >div {
+ margin-bottom: 10px;
+
+ font-family: "Space Mono", monospace;
+ font-size : 10px;
+
+ display : flex;
+ flex-direction: row;
+
+ align-items : center;
+ justify-content: center;
+
+ .ant-tag {
+ height : 18px;
+ line-height: 18px;
+ font-size : 10px;
+ }
+
+ >div {
+ padding: 0 7px;
+ }
+ }
+ }
+
+ .ant-tabs-nav-list {
+ width : 100%;
+ justify-content: space-evenly;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/Skeleton/index.jsx b/packages/app/src/components/Skeleton/index.jsx
new file mode 100644
index 00000000..3b720728
--- /dev/null
+++ b/packages/app/src/components/Skeleton/index.jsx
@@ -0,0 +1,15 @@
+import React from "react"
+import { Skeleton } from "antd"
+import { LoadingOutlined } from "@ant-design/icons"
+
+import "./index.less"
+
+export default () => {
+ return
+}
\ No newline at end of file
diff --git a/packages/app/src/components/Skeleton/index.less b/packages/app/src/components/Skeleton/index.less
new file mode 100644
index 00000000..87f3cea4
--- /dev/null
+++ b/packages/app/src/components/Skeleton/index.less
@@ -0,0 +1,22 @@
+.skeleton {
+ svg {
+ margin: 0 !important;
+ }
+
+ h3 {
+ margin: 0;
+ margin-left: 10px;
+ color: var(--background-color-contrast);
+ }
+
+ .indicator {
+ color: var(--background-color-contrast);
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ }
+
+ background-color: var(--background-color-accent);
+ border-radius: 8px;
+ padding: 10px;
+}
diff --git a/packages/app/src/components/StepsForm/index.jsx b/packages/app/src/components/StepsForm/index.jsx
new file mode 100644
index 00000000..4bde7439
--- /dev/null
+++ b/packages/app/src/components/StepsForm/index.jsx
@@ -0,0 +1,244 @@
+import React from "react"
+import * as antd from "antd"
+import loadable from "@loadable/component"
+import { Translation } from "react-i18next"
+
+import { Icons, createIconRender } from "components/Icons"
+import { ActionsBar } from "components"
+
+import "./index.less"
+
+export default class StepsForm extends React.Component {
+ state = {
+ steps: [...(this.props.steps ?? []), ...(this.props.children ?? [])],
+
+ step: 0,
+ values: {},
+ canNext: true,
+ renderStep: null,
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ if (this.props.defaultValues) {
+ await this.setState({ values: this.props.defaultValues })
+ }
+
+ await this.handleNext(0)
+ }
+
+ next = (to) => {
+ if (!this.state.canNext) {
+ return antd.message.error("Please complete the step.")
+ }
+
+ return this.handleNext(to)
+ }
+
+ prev = () => this.handlePrev()
+
+ handleNext = (to) => {
+ const index = to ?? (this.state.step + 1)
+
+ this.setState({ step: index, renderStep: this.renderStep(index) })
+ }
+
+ handlePrev = () => {
+ this.handleNext(this.state.step - 1)
+ }
+
+ handleError = (error) => {
+ this.setState({ submitting: false, submittingError: error })
+ }
+
+ handleUpdate = (key, value) => {
+ this.setState({ values: { ...this.state.values, [key]: value } }, () => {
+ if (typeof this.props.onChange === "function") {
+ this.props.onChange(this.state.values)
+ }
+ })
+ }
+
+ handleValidation = (result) => {
+ this.setState({ canNext: result })
+ }
+
+ canSubmit = () => {
+ if (typeof this.props.canSubmit === "function") {
+ return this.props.canSubmit(this.state.values)
+ }
+
+ return true
+ }
+
+ onSubmit = async () => {
+ if (!this.state.canNext) {
+ console.warn("Cannot submit form, validation failed")
+ return false
+ }
+
+ if (typeof this.props.onSubmit === "function") {
+ this.setState({ submitting: true, submittingError: null })
+
+ await this.props.onSubmit(this.state.values).catch((error) => {
+ console.error(error)
+ this.handleError(error)
+ })
+ }
+ }
+
+ renderStep = (stepIndex) => {
+ const step = this.state.steps[stepIndex]
+
+ let content = step.content
+ let value = this.state.values[step.key]
+
+ if (typeof step.key === "undefined") {
+ console.error("[StepsForm] step.key is required")
+ return null
+ }
+
+ if (typeof step.required !== "undefined" && step.required) {
+ this.handleValidation(Boolean(value && value.length > 0))
+ } else {
+ this.setState({ canNext: true })
+ }
+
+ if (typeof step.stateValidation === "function") {
+ const validationResult = step.stateValidation(value)
+ this.handleValidation(validationResult)
+ }
+
+ const componentProps = {
+ handleUpdate: (to) => {
+ value = to
+
+ if (typeof step.onUpdateValue === "function") {
+ value = step.onUpdateValue(value, to)
+ }
+
+ let validationResult = true
+
+ if (typeof step.stateValidation === "function") {
+ validationResult = step.stateValidation(to)
+ }
+
+ if (typeof step.required !== "undefined" && step.required) {
+ validationResult = Boolean(to && to.length > 0)
+ }
+
+ this.handleUpdate(step.key, to)
+ this.handleValidation(validationResult)
+ },
+ handleError: (error) => {
+ if (typeof props.handleError === "function") {
+ this.handleError(error)
+ }
+ },
+ onPressEnter: () => this.next(),
+ value: value,
+ }
+
+ if (typeof step.content === "function") {
+ content = loadable(async () => {
+ try {
+ const component = React.createElement(step.content, componentProps)
+ return () => component
+ } catch (error) {
+ console.log(error)
+
+ antd.notification.error({
+ message: "Error",
+ description: "Error loading step content",
+ })
+
+ return () =>
+ Error
+
+ }
+ }, {
+ fallback: Loading...
,
+ })
+ }
+
+ return React.createElement(React.memo(content), componentProps)
+ }
+
+ render() {
+ if (this.state.steps.length === 0) {
+ return null
+ }
+
+ const steps = this.state.steps
+ const current = steps[this.state.step]
+
+ return (
+
+
+
+ {steps.map(item => (
+
+ ))}
+
+
+
+
+
{current.icon && createIconRender(current.icon)}
+
+ {t => t(current.title)}
+
+
+
+
+ {t => t(current.required ? "Required" : "Optional")}
+
+
+
+ {current.description &&
+
+ {t => t(current.description)}
+
+
}
+ {this.state.renderStep}
+
+
+
+ {this.state.submittingError && (
+
+
+ {t => t(String(this.state.submittingError))}
+
+
+ )}
+
+
+ {this.state.step > 0 && (
+ this.prev()}>
+
+
+ {t => t("Previous")}
+
+
+ )}
+ {this.state.step < steps.length - 1 && (
+ this.next()}>
+
+
+ {t => t("Next")}
+
+
+ )}
+ {this.state.step === steps.length - 1 && (
+
+ {this.state.submitting && }
+
+ {t => t("Done")}
+
+
+ )}
+
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/StepsForm/index.less b/packages/app/src/components/StepsForm/index.less
new file mode 100644
index 00000000..1a0c1723
--- /dev/null
+++ b/packages/app/src/components/StepsForm/index.less
@@ -0,0 +1,91 @@
+.steps_form {
+ .ant-steps-icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ width: 100%;
+ height: 100%;
+
+ svg {
+ margin: 0;
+ }
+ }
+
+ .steps {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+
+ .header {
+ //position: fixed;
+ width: 100%;
+ height: fit-content;
+ flex-direction: row;
+ }
+
+ .ant-select {
+ width: 100%;
+ }
+
+ .step {
+ padding: 0 10px;
+ display: inline-flex;
+ flex-direction: column;
+
+ width: 100%;
+ height: 100%;
+
+ align-items: flex-start;
+
+ h1 {
+ margin: 0;
+ }
+
+ .title {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ width: 100%;
+ }
+
+ .description {
+ color: var(--background-color-contrast);
+ }
+
+ .content {
+ padding: 10px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ width: 100%;
+
+ .ant-list {
+ width: 100%;
+ }
+ }
+
+ .actions {
+ display: inline-flex;
+ flex-direction: row;
+
+ align-items: center;
+ justify-content: center;
+
+ > div {
+ margin-right: 10px;
+ }
+ }
+
+ > div {
+ margin-bottom: 0;
+ }
+ }
+
+ > div {
+ margin-bottom: 20px;
+ }
+ }
+}
diff --git a/packages/app/src/components/SwipeItem/index.jsx b/packages/app/src/components/SwipeItem/index.jsx
new file mode 100644
index 00000000..4c2890bd
--- /dev/null
+++ b/packages/app/src/components/SwipeItem/index.jsx
@@ -0,0 +1,176 @@
+import React from "react"
+import PropTypes from "prop-types"
+import { cursorPosition } from "utils"
+import { Container, Delete, Content } from "./styles"
+
+class SwipeToDelete extends React.Component {
+ state = {
+ touching: null,
+ translate: 0,
+ deleting: false,
+ }
+
+ componentDidMount() {
+ // to get ref dimensions
+ this.forceUpdate()
+ }
+
+ onMouseDown = (e) => {
+ if (this.props.disabled) return
+ if (this.state.touching) return
+
+ this.startTouchPosition = cursorPosition(e)
+ this.initTranslate = this.state.translate
+
+ this.setState({ touching: true }, () => {
+ this.addEventListenerToMoveAndUp()
+ })
+ }
+
+ addEventListenerToMoveAndUp = (remove = false) => {
+ if (remove) {
+ window.removeEventListener("mousemove", this.onMouseMove)
+ window.removeEventListener("touchmove", this.onMouseMove)
+ window.removeEventListener("mouseup", this.onMouseUp)
+ window.removeEventListener("touchend", this.onMouseUp)
+ } else {
+ window.addEventListener("mousemove", this.onMouseMove)
+ window.addEventListener("touchmove", this.onMouseMove)
+ window.addEventListener("mouseup", this.onMouseUp)
+ window.addEventListener("touchend", this.onMouseUp)
+ }
+ }
+
+ onMouseMove = (e) => {
+ const { rtl } = this.props
+
+ if (!this.state.touching) {
+ return cursorPosition(e)
+ }
+
+ if (
+ (!rtl && cursorPosition(e) > this.startTouchPosition - this.initTranslate)
+ || (rtl && cursorPosition(e) < this.startTouchPosition - this.initTranslate)
+ ) {
+ this.setState({ translate: 0 })
+ return
+ }
+
+ this.setState({ translate: cursorPosition(e) - this.startTouchPosition + this.initTranslate })
+ }
+
+ onMouseUp = () => {
+ this.startTouchPosition = null
+
+ const { deleteWidth, rtl } = this.props
+ const newState = {
+ touching: false
+ }
+
+ const acceptableMove = -deleteWidth * 0.7
+ const showDelete = (rtl ? -1 : 1) * this.state.translate < acceptableMove
+ const notShowDelete = (rtl ? -1 : 1) * this.state.translate >= acceptableMove
+ const deleteWithoutConfirm = (rtl ? 1 : -1) * this.state.translate >= this.deleteWithoutConfirmThreshold
+
+ if (deleteWithoutConfirm) {
+ newState.translate = -this.containerWidth
+ }
+ if (notShowDelete) {
+ newState.translate = 0
+ }
+ if (showDelete && !deleteWithoutConfirm) {
+ newState.translate = (rtl ? 1 : -1) * deleteWidth
+ }
+
+ this.setState(newState, () => {
+ if (deleteWithoutConfirm) {
+ this.onDeleteClick()
+ }
+ })
+
+ this.addEventListenerToMoveAndUp(true)
+ }
+
+ onDeleteClick = () => {
+ const { transitionDuration, onDelete } = this.props
+
+ this.setState({ deleting: true }, () => {
+ window.setTimeout(() => {
+ onDelete()
+ }, transitionDuration)
+ })
+ }
+
+ componentWillUnmount() {
+ this.addEventListenerToMoveAndUp(true)
+ }
+
+ render() {
+ const { translate, touching, deleting } = this.state
+ const { deleteWidth, transitionDuration, deleteText, deleteComponent, deleteColor, height, rtl } = this.props
+
+ const cssParams = { deleteWidth, transitionDuration, deleteColor, heightProp: height, rtl }
+ const shiftDelete = -translate >= this.deleteWithoutConfirmThreshold
+
+ return (
+ {
+ if (c) {
+ this.container = c
+ this.containerWidth = c.getBoundingClientRect().width
+ this.deleteWithoutConfirmThreshold = this.containerWidth * 0.75
+ }
+ }}
+ >
+
+ {deleteComponent ? deleteComponent : deleteText}
+
+
+ {this.props.children}
+
+
+ )
+ }
+}
+
+SwipeToDelete.propTypes = {
+ onDelete: PropTypes.func.isRequired,
+ height: PropTypes.number.isRequired,
+ transitionDuration: PropTypes.number,
+ deleteWidth: PropTypes.number,
+ deleteColor: PropTypes.string,
+ deleteText: PropTypes.string,
+ deleteComponent: PropTypes.node,
+ disabled: PropTypes.bool,
+ rtl: PropTypes.bool,
+}
+
+SwipeToDelete.defaultProps = {
+ transitionDuration: 250,
+ deleteWidth: 75,
+ deleteColor: "rgba(252, 58, 48, 1.00)",
+ deleteText: "Delete",
+ disabled: false,
+ rtl: false,
+}
+
+export default SwipeToDelete
\ No newline at end of file
diff --git a/packages/app/src/components/SwipeItem/styles.js b/packages/app/src/components/SwipeItem/styles.js
new file mode 100644
index 00000000..bd62c4d0
--- /dev/null
+++ b/packages/app/src/components/SwipeItem/styles.js
@@ -0,0 +1,55 @@
+import styled, { css } from "styled-components"
+
+export const deletingCss = css`
+ transition: all ${({ transitionDuration }) => transitionDuration}ms ease-out;
+ max-height: 0;
+ * {
+ outline: none;
+ }
+`
+
+export const Container = styled.div`
+ height: ${({ heightProp }) => heightProp}px;
+ max-height: ${({ heightProp }) => heightProp + 10}px;
+ width: auto;
+ position: relative;
+ box-sizing: border-box;
+ ${props => props.deleting && deletingCss}
+ *, *:before, *:after {
+ box-sizing: border-box;
+ }
+ overflow: hidden;
+`
+
+export const Content = styled.div`
+ height: 100%;
+ width: auto;
+ position: relative;
+ transform: ${props => props.deleting && 'scale(0)'} translateX(${({ translate, rtl }) => (rtl ? 1 : 1) * translate}px);
+ ${props => props.transition && `transition: transform ${props.transitionDuration}ms ease-out`}
+`
+
+export const Delete = styled.div`
+ position: absolute;
+ right: 0;
+ height: 100%;
+ width: 100%;
+ top: 0;
+ background: ${({ deleteColor }) => deleteColor};
+ font-weight: 400;
+ display: inline-flex;
+ justify-content: flex-start;
+ align-items: center;
+ button {
+ width: ${({ deleteWidth }) => deleteWidth}px;
+ transition: margin ${({ transitionDuration }) => transitionDuration}ms ease-in-out;
+ ${({ buttonMargin, rtl }) => `margin-${rtl ? 'right' : 'left'}: ${buttonMargin}px`};
+ text-align: center;
+ height: 100%;
+ background: transparent;
+ border: none;
+ color: white;
+ font-size: 1rem;
+ cursor: pointer;
+ }
+`
\ No newline at end of file
diff --git a/packages/app/src/components/UserRegister/index.jsx b/packages/app/src/components/UserRegister/index.jsx
new file mode 100644
index 00000000..a582f827
--- /dev/null
+++ b/packages/app/src/components/UserRegister/index.jsx
@@ -0,0 +1,86 @@
+import React from "react"
+import * as antd from "antd"
+import { StepsForm } from "components"
+
+import "./index.less"
+
+const steps = [
+ {
+ key: "username",
+ title: "Step 1",
+ icon: "User",
+ description: "Enter the username for the account",
+ required: true,
+ content: (props) => {
+ return
+
{
+ props.handleUpdate(e.target.value)
+ }}
+ />
+
+ },
+ },
+ {
+ key: "password",
+ title: "Step 2",
+ icon: "Key",
+ description: "Enter a password for the account",
+ required: true,
+ content: (props) => {
+ return
+
{
+ props.handleUpdate(e.target.value)
+ }}
+ />
+
+ },
+ },
+ {
+ key: "email",
+ title: "Step 3",
+ icon: "Mail",
+ description: "Enter a email for the account",
+ required: true,
+ content: (props) => {
+ return
+
{
+ props.handleUpdate(e.target.value)
+ }}
+ />
+
+ },
+ },
+]
+
+export default (props) => {
+ const api = window.app.request
+
+ const onSubmit = async (values) => {
+ const result = await api.post.register(values).catch((err) => {
+ console.log(err)
+ return false
+ })
+
+ if (result) {
+ props.close()
+ }
+ }
+
+ return
+}
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/globals/index.js b/packages/app/src/components/UserRegister/index.less
similarity index 100%
rename from packages/comty/src/core/libs/globals/index.js
rename to packages/app/src/components/UserRegister/index.less
diff --git a/packages/app/src/components/UserSelector/index.jsx b/packages/app/src/components/UserSelector/index.jsx
new file mode 100644
index 00000000..71c2f77b
--- /dev/null
+++ b/packages/app/src/components/UserSelector/index.jsx
@@ -0,0 +1,122 @@
+import React from "react"
+import * as antd from "antd"
+import { Translation } from "react-i18next"
+import { SelectableList, Skeleton } from "components"
+import { debounce } from "lodash"
+import fuse from "fuse.js"
+
+import "./index.less"
+
+export default class UserSelector extends React.Component {
+ state = {
+ loading: true,
+ data: [],
+ searchValue: null,
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ this.toogleLoading(true)
+ await this.fetchUsers()
+ }
+
+ toogleLoading = (to) => {
+ this.setState({ loading: to ?? !this.state.loading })
+ }
+
+ fetchUsers = async () => {
+ const data = await this.api.get.users(undefined, { select: this.props.select }).catch((err) => {
+ console.error(err)
+ antd.message.error("Error fetching operators")
+ })
+
+ this.setState({ data: data, loading: false })
+ }
+
+ isExcludedId = (id) => {
+ if (this.props.excludedIds) {
+ return this.props.excludedIds.includes(id)
+ }
+
+ return false
+ }
+
+ renderItem = (item) => {
+ return
+
+
{item.fullName ?? item.username}
+
+ }
+
+ search = (value) => {
+ if (typeof value !== "string") {
+ if (typeof value.target?.value === "string") {
+ value = value.target.value
+ }
+ }
+
+ if (value === "") {
+ return this.setState({ searchValue: null })
+ }
+
+ const searcher = new fuse(this.state.data, {
+ includeScore: true,
+ keys: ["username", "fullName"],
+ })
+
+ const result = searcher.search(value)
+
+ this.setState({
+ searchValue: result.map((entry) => {
+ return entry.item
+ }),
+ })
+ }
+
+ debouncedSearch = debounce((value) => this.search(value), 500)
+
+ onSearch = (event) => {
+ if (event === "" && this.state.searchValue) {
+ return this.setState({ searchValue: null })
+ }
+
+ this.debouncedSearch(event.target.value)
+ }
+
+ render() {
+ if (this.state.loading) {
+ return
+ }
+
+ return
+
+
+
+ {t => t("Done")}
+
+
+ ]}
+ events={{
+ onDone: (ctx, keys) => this.props.handleDone(keys),
+ }}
+ />
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/UserSelector/index.less b/packages/app/src/components/UserSelector/index.less
new file mode 100644
index 00000000..7d714b89
--- /dev/null
+++ b/packages/app/src/components/UserSelector/index.less
@@ -0,0 +1,19 @@
+.users_selector {
+ .header {
+ margin-bottom: 10px;
+ }
+
+ .user {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+ h1 {
+ margin: 0;
+ }
+
+ > div {
+ margin-right: 8px;
+ }
+ }
+}
diff --git a/packages/app/src/components/formGenerator/index.jsx b/packages/app/src/components/formGenerator/index.jsx
new file mode 100644
index 00000000..0ac704f6
--- /dev/null
+++ b/packages/app/src/components/formGenerator/index.jsx
@@ -0,0 +1,395 @@
+import React from "react"
+import { Icons } from "components/Icons"
+import {
+ Form,
+ Input,
+ Button,
+ Checkbox,
+ Select,
+ Dropdown,
+ Slider,
+ InputNumber,
+ DatePicker,
+ AutoComplete,
+ Divider,
+ Switch,
+} from "antd"
+import HeadShake from "react-reveal/HeadShake"
+
+const allComponents = {
+ Input,
+ Button,
+ Checkbox,
+ Select,
+ Dropdown,
+ Slider,
+ InputNumber,
+ DatePicker,
+ AutoComplete,
+ Divider,
+ Switch,
+}
+
+export default class FormGenerator extends React.Component {
+ ref = React.createRef()
+
+ fieldsReferences = {}
+ unsetValues = {}
+ discardedValues = []
+
+ state = {
+ validating: false,
+ shakeItem: false,
+ failed: {},
+ }
+
+ ctx = {
+ clearErrors: () => {
+ this.setState({ failed: {} })
+ },
+ clearForm: () => {
+ this.ctx.clearErrors()
+ this.ctx.toogleValidation(false)
+ this.ref.current.resetFields()
+ },
+ finish: () => this.ref.current.submit(),
+ error: (id, error) => {
+ this.handleFormError(id, error)
+ },
+ shake: (id) => {
+ this.formItemShake(id)
+ },
+ toogleValidation: (to) => {
+ if (typeof to !== "undefined") {
+ return this.setState({ validating: to })
+ }
+ this.setState({ validating: !this.state.validating })
+
+ return this.state.validating
+ },
+ formRef: this.ref,
+ }
+
+ handleFinish(payload) {
+ if (typeof this.props.onFinish !== "function") {
+ console.error(`onFinish is not an function`)
+ return false
+ }
+
+ // try to read unset values
+ Object.keys(this.fieldsReferences).forEach((key) => {
+ const ref = this.fieldsReferences[key].current
+
+ if (typeof ref.state !== "undefined") {
+ this.unsetValues[key] = ref.state?.value || ref.state?.checked
+ }
+ })
+
+ // filter discarded values
+ try {
+ const keys = Object.keys(payload)
+ this.discardedValues.forEach((id) => {
+ if (keys.includes(id)) {
+ delete payload[id]
+ }
+ })
+ } catch (error) {
+ // terrible
+ }
+
+ // fulfil unset values
+ payload = { ...payload, ...this.unsetValues }
+
+ return this.props.onFinish(payload, this.ctx)
+ }
+
+ formItemShake(id) {
+ this.setState({ shakeItem: id })
+ setTimeout(() => {
+ this.setState({ shakeItem: false })
+ }, 50)
+ }
+
+ handleFormError(item, error) {
+ let fails = this.state.failed
+
+ fails[item] = error ?? true
+
+ this.setState({ failed: fails })
+ this.formItemShake(item)
+ }
+
+ handleFailChange(event) {
+ const itemID = event.target.id
+ if (itemID) {
+ let fails = this.state.failed
+
+ if (fails["all"]) {
+ fails["all"] = false
+ this.setState({ failed: fails })
+ }
+
+ if (fails[itemID]) {
+ // try deactivate failed statement
+ fails[itemID] = false
+ this.setState({ failed: fails })
+ }
+ }
+ }
+
+ shouldShakeItem(id) {
+ try {
+ const mutation = false
+ if (this.state.shakeItem === "all") {
+ return mutation
+ }
+ if (this.state.shakeItem == id) {
+ return mutation
+ }
+ } catch (error) {
+ // not returning
+ }
+ }
+
+ discardValueFromId = (id) => {
+ let ids = []
+
+ if (Array.isArray(id)) {
+ ids = id
+ } else {
+ ids.push(id)
+ }
+
+ ids.forEach((_id) => {
+ const value = this.discardedValues ?? []
+ value.push(_id)
+ this.discardedValues = value
+ })
+ }
+
+ renderValidationIcon() {
+ if (this.props.renderLoadingIcon && this.state.validating) {
+ return
+ }
+ return null
+ }
+
+ renderElementPrefix = (element) => {
+ if (element.icon) {
+ let renderIcon = null
+
+ const iconType = typeof element.icon
+ switch (iconType) {
+ case "string": {
+ if (typeof Icons[element.icon] !== "undefined") {
+ renderIcon = React.createElement(Icons[element.icon])
+ } else {
+ console.warn("provided icon is not available on icons libs")
+ }
+ break
+ }
+ case "object": {
+ renderIcon = element.icon
+ break
+ }
+ default: {
+ console.warn(`cannot mutate icon cause type (${iconType}) is not handled`)
+ break
+ }
+ }
+ if (renderIcon) {
+ // try to generate icon with props
+ return React.cloneElement(renderIcon, element.iconProps ? { ...element.iconProps } : null)
+ }
+ } else {
+ return element.prefix ?? null
+ }
+ }
+
+ renderItems(elements) {
+ if (Array.isArray(elements)) {
+ try {
+ return elements.map((field) => {
+ let { item, element } = field
+
+ // if item has no id, return an uncontrolled field
+ if (typeof field.id === "undefined") {
+ return React.createElement(allComponents[element.component], element.props)
+ }
+
+ // fulfill
+ if (typeof item === "undefined") {
+ item = {}
+ }
+ if (typeof element === "undefined") {
+ element = {}
+ }
+
+ // check if component is available on library
+ if (typeof allComponents[element.component] === "undefined") {
+ console.warn(`[${element.component}] is not an valid component`)
+ return null
+ }
+
+ // handle groups
+ if (typeof field.group !== "undefined") {
+ return (
+
+ {this.renderItems(field.group)}
+
+ )
+ }
+
+ //* RENDER
+ const failStatement = this.state.failed["all"] ?? this.state.failed[field.id]
+
+ const rules = item.rules
+ const hasFeedback = item.hasFeedback ?? false
+
+ let elementProps = {
+ disabled: this.state.validating,
+ ...element.props,
+ }
+ let itemProps = {
+ ...item.props,
+ }
+
+ switch (element.component) {
+ case "Checkbox": {
+ elementProps.onChange = (e) => {
+ this.unsetValues[field.id] = e.target.checked
+ elementProps.checked = e.target.checked
+ elementProps.value = e.target.checked
+ }
+ break
+ }
+ case "Button": {
+ this.discardValueFromId(field.id)
+ if (field.withValidation) {
+ elementProps.icon = this.state.validating ? (
+
+ ) : null
+ }
+ break
+ }
+ case "Input": {
+ itemProps = {
+ ...itemProps,
+ hasFeedback,
+ rules,
+ onChange: (e) => this.handleFailChange(e),
+ help: failStatement ? failStatement : null,
+ validateStatus: failStatement ? "error" : null,
+ }
+ elementProps = {
+ ...elementProps,
+ id: field.id,
+ prefix: this.renderElementPrefix(element) ?? null,
+ placeholder: element.placeholder,
+ }
+ break
+ }
+ case "Select": {
+ if (typeof element.renderItem !== "undefined") {
+ elementProps.children = element.renderItem
+ }
+ if (typeof element.options !== "undefined" && !element.renderItem) {
+ if (!Array.isArray(element.options)) {
+ console.warn(
+ `Invalid options data type, expecting Array > received ${typeof element.options}`,
+ )
+ return null
+ }
+ elementProps.children = element.options.map((option) => {
+ return (
+
+ {option.name ?? null}
+
+ )
+ })
+ }
+ itemProps = {
+ ...itemProps,
+ hasFeedback,
+ rules,
+ validateStatus: failStatement ? "error" : null,
+ help: failStatement ? failStatement : null,
+ }
+ break
+ }
+ default: {
+ itemProps = {
+ ...itemProps,
+ hasFeedback,
+ rules,
+ validateStatus: failStatement ? "error" : null,
+ help: failStatement ? failStatement : null,
+ }
+ break
+ }
+ }
+
+ // set reference
+ this.fieldsReferences[field.id] = elementProps.ref = React.createRef()
+
+ // return field
+ return (
+
+ {field.title ?? null}
+
+
+ {React.createElement(allComponents[element.component], elementProps)}
+
+
+
+ )
+ })
+ } catch (error) {
+ console.log(error)
+ return null
+ }
+ }
+ }
+
+ componentDidMount() {
+ if (!this.props.items) {
+ console.warn(`items not provided, nothing to render`)
+ return null
+ }
+
+ // handle discardedValues
+ if (Array.isArray(this.props.items)) {
+ this.props.items.forEach((item) => {
+ if (item.ignoreValue) {
+ this.discardValueFromId(item.id)
+ }
+ })
+ }
+ }
+
+ render() {
+ const helpStatus = this.state.failed["all"] ?? this.state.failed["result"]
+ const validateStatus = this.state.failed["all"] || this.state.failed["result"] ? "error" : null
+
+ if (!this.props.items) {
+ console.warn(`Nothing to render`)
+ return null
+ }
+
+ return (
+
+
+
+ {this.renderValidationIcon()}
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/index.js b/packages/app/src/components/index.js
new file mode 100644
index 00000000..3cf28c69
--- /dev/null
+++ b/packages/app/src/components/index.js
@@ -0,0 +1,32 @@
+export { default as FormGenerator } from "./FormGenerator"
+export { default as Settings } from "./Settings"
+export { default as NotFound } from "./NotFound"
+export { default as AppSearcher } from "./AppSearcher"
+export { default as RenderError } from "./RenderError"
+export { default as ActionsBar } from "./ActionsBar"
+export { default as SelectableList } from "./SelectableList"
+export { default as ObjectInspector } from "./ObjectInspector"
+export { default as ServerStatus } from "./ServerStatus"
+export { default as ModifierTag } from "./ModifierTag"
+export { default as UserSelector } from "./UserSelector"
+export { default as Clock } from "./Clock"
+export { default as StepsForm } from "./StepsForm"
+export { default as DraggableDrawer } from "./DraggableDrawer"
+export { default as AddableSelectList } from "./AddableSelectList"
+export { default as SwipeItem } from "./SwipeItem"
+export { default as Crash } from "./Crash"
+export { default as SearchButton } from "./SearchButton"
+export { default as UserRegister } from "./UserRegister"
+export { default as Skeleton } from "./Skeleton"
+export { default as Navigation } from "./Navigation"
+export { default as ImageUploader } from "./ImageUploader"
+export { default as ImageViewer } from "./ImageViewer"
+
+export { default as PostsFeed } from "./PostsFeed"
+export { default as LikeButton } from "./LikeButton"
+export { default as PostCard } from "./PostCard"
+export { default as PostCreator } from "./PostCreator"
+
+export * as AdminTools from "./AdminTools"
+export * as AboutApp from "./AboutApp"
+export * as Window from "./RenderWindow"
\ No newline at end of file
diff --git a/packages/app/src/components/modifierTag/index.jsx b/packages/app/src/components/modifierTag/index.jsx
new file mode 100644
index 00000000..222a2019
--- /dev/null
+++ b/packages/app/src/components/modifierTag/index.jsx
@@ -0,0 +1,76 @@
+import React from "react"
+import * as antd from "antd"
+import { Icons, createIconRender } from "components/Icons"
+
+export default (props) => {
+ const [loading, setLoading] = React.useState(false)
+ const [options, setOptions] = React.useState([])
+ const [value, setValue] = React.useState(null)
+
+ const onChangeProperties = async (update) => {
+ if (props.eventDisable) {
+ return false
+ }
+
+ setLoading(true)
+
+ await props.onChangeProperties(update)
+ .then((data) => {
+ return setValue(update.join("-"))
+ })
+ .catch((error) => {
+ return
+ })
+
+ setLoading(false)
+ }
+
+ const getTagColor = () => {
+ if (props.colors) {
+ return props.colors[value]
+ }
+
+ return "default"
+ }
+
+ const handleOptionsLoad = async (fn) => {
+ setLoading(true)
+
+ const result = await fn()
+ setOptions(result)
+
+ setLoading(false)
+ }
+
+ const handleDefaultValueLoad = async (fn) => {
+ const result = await fn()
+ setValue(result)
+ }
+
+ React.useEffect(() => {
+ if (typeof props.options === "function") {
+ handleOptionsLoad(props.options)
+ } else {
+ setOptions(props.options)
+ }
+
+ if (typeof props.defaultValue === "function") {
+ handleDefaultValueLoad(props.defaultValue)
+ } else {
+ setValue(props.defaultValue)
+ }
+ }, [])
+
+ return onChangeProperties(update)} >
+
+ {loading ? :
+ <>
+ {Icons[props.icon] && createIconRender(props.icon)}
+
+ {value}
+
+ >
+ }
+
+
+}
\ No newline at end of file
diff --git a/packages/app/src/components/notFound/index.jsx b/packages/app/src/components/notFound/index.jsx
new file mode 100644
index 00000000..7e176c38
--- /dev/null
+++ b/packages/app/src/components/notFound/index.jsx
@@ -0,0 +1,12 @@
+import React from "react"
+import { Result } from "antd"
+
+export default () => {
+ return (
+
+ )
+}
diff --git a/packages/app/src/debugComponents/index.js b/packages/app/src/debugComponents/index.js
new file mode 100644
index 00000000..0d8cdebd
--- /dev/null
+++ b/packages/app/src/debugComponents/index.js
@@ -0,0 +1 @@
+export { default as ThemeDebug } from "./theme"
\ No newline at end of file
diff --git a/packages/app/src/debugComponents/theme/index.jsx b/packages/app/src/debugComponents/theme/index.jsx
new file mode 100644
index 00000000..4eac7da2
--- /dev/null
+++ b/packages/app/src/debugComponents/theme/index.jsx
@@ -0,0 +1,56 @@
+import React from "react"
+import * as antd from "antd"
+import ReactJSON from "react-json-view"
+
+import { Theme } from "extensions"
+
+import "./index.less"
+
+export default class ThemeDebug extends React.Component {
+ state = {
+ currentVariant: null,
+ rootVariables: null,
+ }
+
+ componentDidMount = async () => {
+ await this.setValues()
+ }
+
+ setValues = async () => {
+ const currentVariant = document.documentElement.style.getPropertyValue("--themeVariant")
+ const rootVariables = window.app.ThemeController.getRootVariables()
+
+ this.setState({ currentVariant, rootVariables })
+ }
+
+ editValues = async (values) => {
+ console.log(values)
+ await window.app.ThemeController.update({ [values.name]: values.new_value })
+ await this.setState({ rootVariables: values.updated_src })
+ }
+
+ setDefaults = async () => {
+ await window.app.ThemeController.resetDefault()
+ await this.setValues()
+ }
+
+ render() {
+ return
+
+
+ Current variant:
{this.state.currentVariant}
+
+
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/debugComponents/theme/index.less b/packages/app/src/debugComponents/theme/index.less
new file mode 100644
index 00000000..599dbb7a
--- /dev/null
+++ b/packages/app/src/debugComponents/theme/index.less
@@ -0,0 +1,8 @@
+.themeDebugger {
+ display: flex;
+ flex-direction: column;
+
+ > div {
+ margin-bottom: 20px;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/api/index.js b/packages/app/src/extensions/api/index.js
new file mode 100644
index 00000000..edf77814
--- /dev/null
+++ b/packages/app/src/extensions/api/index.js
@@ -0,0 +1,187 @@
+import config from "config"
+import { Bridge } from "linebridge/dist/client"
+import { Session } from "models"
+import io from "socket.io-client"
+
+class WSInterface {
+ constructor(params = {}) {
+ this.params = params
+ this.manager = new io.Manager(this.params.origin, {
+ autoConnect: true,
+ transports: ["websocket"],
+ ...this.params.managerOptions,
+ })
+ this.sockets = {}
+
+ this.register("/", "main")
+ }
+
+ register = (socket, as) => {
+ if (typeof socket !== "string") {
+ console.error("socket must be string")
+ return false
+ }
+
+ socket = this.manager.socket(socket)
+ return this.sockets[as ?? socket] = socket
+ }
+}
+
+export default {
+ key: "apiBridge",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ app.apiBridge = await app.createApiBridge()
+
+ app.WSInterface = app.apiBridge.wsInterface
+ app.WSInterface.request = app.WSRequest
+ app.WSInterface.listen = app.handleWSListener
+ app.WSSockets = app.WSInterface.sockets
+ app.WSInterface.mainSocketConnected = false
+
+ app.WSSockets.main.on("authenticated", () => {
+ console.debug("[WS] Authenticated")
+ })
+ app.WSSockets.main.on("authenticateFailed", (error) => {
+ console.error("[WS] Authenticate Failed", error)
+ })
+
+ app.WSSockets.main.on("connect", () => {
+ window.app.eventBus.emit("websocket_connected")
+ app.WSInterface.mainSocketConnected = true
+ })
+
+ app.WSSockets.main.on("disconnect", (...context) => {
+ window.app.eventBus.emit("websocket_disconnected", ...context)
+ app.WSInterface.mainSocketConnected = false
+ })
+
+ app.WSSockets.main.on("connect_error", (...context) => {
+ window.app.eventBus.emit("websocket_connection_error", ...context)
+ app.WSInterface.mainSocketConnected = false
+ })
+
+ window.app.api = app.apiBridge
+ window.app.ws = app.WSInterface
+
+ window.app.request = app.apiBridge.endpoints
+ window.app.wsRequest = app.apiBridge.wsEndpoints
+ },
+ ],
+ mutateContext: {
+ async attachWSConnection() {
+ if (!this.WSInterface.sockets.main.connected) {
+ await this.WSInterface.sockets.main.connect()
+ }
+
+ let startTime = null
+ let latency = null
+ let latencyWarning = false
+
+ let pingInterval = setInterval(() => {
+ if (!this.WSInterface.mainSocketConnected) {
+ return clearTimeout(pingInterval)
+ }
+
+ startTime = Date.now()
+ this.WSInterface.sockets.main.emit("ping")
+ }, 2000)
+
+ this.WSInterface.sockets.main.on("pong", () => {
+ latency = Date.now() - startTime
+
+ if (latency > 800 && this.WSInterface.mainSocketConnected) {
+ latencyWarning = true
+ console.error("[WS] Latency is too high > 800ms", latency)
+ window.app.eventBus.emit("websocket_latency_too_high", latency)
+ } else if (latencyWarning && this.WSInterface.mainSocketConnected) {
+ latencyWarning = false
+ window.app.eventBus.emit("websocket_latency_normal", latency)
+ }
+ })
+ },
+ async attachAPIConnection() {
+ await this.apiBridge.initialize()
+ },
+ handleWSListener: (to, fn) => {
+ if (typeof to === "undefined") {
+ console.error("handleWSListener: to must be defined")
+ return false
+ }
+ if (typeof fn !== "function") {
+ console.error("handleWSListener: fn must be function")
+ return false
+ }
+
+ let ns = "main"
+ let event = null
+
+ if (typeof to === "string") {
+ event = to
+ } else if (typeof to === "object") {
+ ns = to.ns
+ event = to.event
+ }
+
+ return window.app.ws.sockets[ns].on(event, async (...context) => {
+ return await fn(...context)
+ })
+ },
+ createApiBridge: async () => {
+ const getSessionContext = async () => {
+ const obj = {}
+ const token = await Session.token
+
+ if (token) {
+ // append token to context
+ obj.headers = {
+ Authorization: `Bearer ${token ?? null}`,
+ }
+ }
+
+ return obj
+ }
+
+ const handleResponse = async (data) => {
+ if (data.headers?.regenerated_token) {
+ Session.token = data.headers.regenerated_token
+ console.debug("[REGENERATION] New token generated")
+ }
+
+ if (data instanceof Error) {
+ if (data.response.status === 401) {
+ window.app.eventBus.emit("invalid_session")
+ }
+ }
+ }
+
+ const bridge = new Bridge({
+ origin: config.api.address,
+ wsOrigin: config.ws.address,
+ wsOptions: {
+ autoConnect: false,
+ },
+ onRequest: getSessionContext,
+ onResponse: handleResponse,
+ })
+
+ return bridge
+ },
+ WSRequest: (socket = "main", channel, ...args) => {
+ return new Promise(async (resolve, reject) => {
+ const request = await window.app.ws.sockets[socket].emit(channel, ...args)
+
+ request.on("responseError", (...errors) => {
+ return reject(...errors)
+ })
+ request.on("response", (...responses) => {
+ return resolve(...responses)
+ })
+ })
+ }
+ },
+ },
+ ],
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/debug/index.jsx b/packages/app/src/extensions/debug/index.jsx
new file mode 100644
index 00000000..5f19a237
--- /dev/null
+++ b/packages/app/src/extensions/debug/index.jsx
@@ -0,0 +1,135 @@
+import React from "react"
+import { Window } from "components"
+import { Skeleton, Tabs } from "antd"
+
+class DebuggerUI extends React.Component {
+ state = {
+ loading: true,
+ error: null,
+ debuggers: null,
+ active: null,
+ }
+
+ toogleLoading = (to = !this.state.loading ?? false) => {
+ this.setState({ loading: to })
+ }
+
+ loadDebuggers = async () => {
+ this.toogleLoading(true)
+
+ const debuggers = await import(`~/debugComponents`)
+ let renders = {}
+
+ Object.keys(debuggers).forEach((key) => {
+ renders[key] = debuggers[key]
+ })
+
+ this.setState({ debuggers: renders }, () => {
+ this.toogleLoading(false)
+ })
+ }
+
+ componentDidMount = async () => {
+ await this.loadDebuggers()
+ }
+
+ componentDidCatch = (error, info) => {
+ this.setState({ error })
+ }
+
+ onChangeTab = (key) => {
+ console.debug(`Changing tab to ${key}`)
+ this.setState({ active: key, error: null })
+ }
+
+ renderError = (key, error) => {
+ return (
+
+
Debugger Error
+
+
+ Catch on [{key} ]
+
+
+ `{error.message}
`
+
+ {error.stack}
+
+ )
+ }
+
+ renderTabs = () => {
+ return Object.keys(this.state.debuggers).map((key) => {
+ return
+ })
+ }
+
+ renderDebugger = (_debugger) => {
+ try {
+ return React.createElement(window.app.bindContexts(_debugger))
+ } catch (error) {
+ return this.renderError(key, error)
+ }
+ }
+
+ render() {
+ const { loading, error } = this.state
+
+ if (loading) {
+ return
+ }
+
+ return (
+
+
+ {this.renderTabs()}
+
+ {error && this.renderError(this.state.active, error)}
+ {!this.state.active ? (
+
Select an debugger to start
+ ) : (
+ this.renderDebugger(this.state.debuggers[this.state.active])
+ )}
+
+ )
+ }
+}
+
+class Debugger {
+ constructor(mainContext, params = {}) {
+ this.mainContext = mainContext
+ this.params = { ...params }
+
+ this.bindings = {}
+ }
+
+ openWindow = () => {
+ new Window.DOMWindow({ id: "debugger", children: window.app.bindContexts(DebuggerUI) }).create()
+ }
+
+ bind = (id, binding) => {
+ this.bindings[id] = binding
+
+ return binding
+ }
+
+ unbind = (id) => {
+ delete this.bindings[id]
+ }
+}
+
+export default {
+ key: "visualDebugger",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ main.setToWindowContext("debug", new Debugger(main))
+ },
+ ],
+ },
+ ],
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/haptics/index.js b/packages/app/src/extensions/haptics/index.js
new file mode 100644
index 00000000..f9a6b5b6
--- /dev/null
+++ b/packages/app/src/extensions/haptics/index.js
@@ -0,0 +1,68 @@
+import Evite from "evite"
+
+import { Haptics, ImpactStyle } from "@capacitor/haptics"
+
+// This is a temporal workaround to make the extension work with the new evite extension system.
+export default class HapticExtensionV2 extends Evite.Extension {
+ static id = "hapticsEngine"
+
+ static compatible = ["mobile"]
+
+ static extendsWith = ["SettingsController"]
+
+ statement = {
+ test: "macarronie",
+ }
+
+ initialization = [
+ async (app, main) => {
+ console.log(this.statement.test)
+ }
+ ]
+
+ debug = {
+ testVibrate: () => {
+
+ },
+ testSelectionStart: () => {
+
+ },
+ testSelectionChanged: () => {
+
+ },
+ testSelectionEnd: () => {
+
+ },
+ }
+
+ public = {
+ vibrate: async function () {
+ const enabled = this.extended.SettingsController.get("haptic_feedback")
+
+ if (enabled) {
+ await Haptics.vibrate()
+ }
+ },
+ selectionStart: async function () {
+ const enabled = this.extended.SettingsController.get("haptic_feedback")
+
+ if (enabled) {
+ await Haptics.selectionStart()
+ }
+ },
+ selectionChanged: async function () {
+ const enabled = this.extended.SettingsController.get("haptic_feedback")
+
+ if (enabled) {
+ await Haptics.selectionChanged()
+ }
+ },
+ selectionEnd: async function () {
+ const enabled = this.extended.SettingsController.get("haptic_feedback")
+
+ if (enabled) {
+ await Haptics.selectionEnd()
+ }
+ },
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/i18n/index.js b/packages/app/src/extensions/i18n/index.js
new file mode 100644
index 00000000..41e9c530
--- /dev/null
+++ b/packages/app/src/extensions/i18n/index.js
@@ -0,0 +1,78 @@
+import config from "config"
+import i18n from "i18next"
+import { initReactI18next } from "react-i18next"
+
+export const SUPPORTED_LANGUAGES = config.i18n?.languages ?? {}
+export const SUPPORTED_LOCALES = SUPPORTED_LANGUAGES.map((l) => l.locale)
+export const DEFAULT_LOCALE = config.i18n?.defaultLocale
+
+export function extractLocaleFromPath(path = "") {
+ const [_, maybeLocale] = path.split("/")
+ return SUPPORTED_LOCALES.includes(maybeLocale) ? maybeLocale : DEFAULT_LOCALE
+}
+
+const messageImports = import.meta.glob("./translations/*.json")
+
+export const extension = {
+ key: "i18n",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ let locale = app.settingsController.get("language") ?? DEFAULT_LOCALE
+
+ if (!SUPPORTED_LOCALES.includes(locale)) {
+ locale = DEFAULT_LOCALE
+ }
+
+ const messages = await app.importLocale(locale)
+
+ i18n
+ .use(initReactI18next) // passes i18n down to react-i18next
+ .init({
+ // debug: true,
+ resources: {
+ [locale]: { translation: messages.default || messages },
+ },
+ lng: locale,
+ //fallbackLng: DEFAULT_LOCALE,
+ interpolation: {
+ escapeValue: false, // react already safes from xss
+ },
+ })
+
+ main.eventBus.on("changeLanguage", (locale) => {
+ app.loadAsyncLanguage(locale)
+ })
+ },
+ ],
+ mutateContext: {
+ importLocale: async (locale) => {
+ const [, importLocale] =
+ Object.entries(messageImports).find(([key]) =>
+ key.includes(`/${locale}.`)
+ ) || []
+
+ return importLocale && importLocale()
+ },
+ loadAsyncLanguage: async function (locale) {
+ locale = locale ?? DEFAULT_LOCALE
+
+ try {
+ const result = await this.importLocale(locale)
+
+ if (result) {
+ i18n.addResourceBundle(locale, "translation", result.default || result)
+ i18n.changeLanguage(locale)
+ }
+ } catch (error) {
+ console.error(error)
+ }
+ }
+ },
+
+ },
+ ],
+}
+
+export default extension
\ No newline at end of file
diff --git a/packages/app/src/extensions/i18n/translations/en.json b/packages/app/src/extensions/i18n/translations/en.json
new file mode 100644
index 00000000..3303008f
--- /dev/null
+++ b/packages/app/src/extensions/i18n/translations/en.json
@@ -0,0 +1,103 @@
+{
+ "main_welcome": "Welcome back,",
+ "assigned_for_you": "Assigned for you",
+ "no_assigned_workorders": "No assigned workorders",
+ "new": "New",
+ "close": "Close",
+ "done": "Done",
+ "edit": "Edit",
+ "save": "Save",
+ "cancel": "Cancel",
+ "delete": "Delete",
+ "import": "Import",
+ "export": "Export",
+ "refresh": "Refresh",
+ "reload": "Reload",
+ "search": "Search",
+ "status": "Status",
+ "type": "Type",
+ "about": "About",
+ "current": "Current",
+ "statistics": "Statistics",
+ "name": "Name",
+ "username": "Username",
+ "email": "Email",
+ "password": "Password",
+ "sessions": "Sessions",
+ "compact_view": "Compact view",
+ "sign_in": "Sign in",
+ "sign_out": "Sign out",
+ "sign_up": "Sign up",
+ "all_sessions": "All sessions",
+ "destroy_all_sessions": "Destroy all sessions",
+ "account_info": "Account info",
+ "password_confirmation": "Password confirmation",
+ "new_product": "New product",
+ "description": "Description",
+ "describe_something": "Describe something",
+ "operations": "Operations",
+ "select_operation": "Select operation",
+ "select_operations": "Select operations",
+ "tasks": "Tasks",
+ "select_task": "Select task",
+ "select_tasks": "Select tasks",
+ "add_task": "Add task",
+ "add_tasks": "Add tasks",
+ "location": "Location",
+ "select_location": "Select location",
+ "select_locations": "Select locations",
+ "add_location": "Add location",
+ "add_locations": "Add locations",
+ "materials": "Materials",
+ "select_material": "Select material",
+ "select_materials": "Select materials",
+ "add_material": "Add material",
+ "add_materials": "Add materials",
+ "quantity": "Quantity",
+ "select_quantity": "Select quantity",
+ "select_quantities": "Select quantities",
+ "add_quantity": "Add quantity",
+ "add_quantities": "Add quantities",
+ "units": "Units",
+ "select_unit": "Select unit",
+ "select_units": "Select units",
+ "add_unit": "Add unit",
+ "add_units": "Add units",
+ "suppliers": "Suppliers",
+ "select_supplier": "Select supplier",
+ "select_suppliers": "Select suppliers",
+ "add_supplier": "Add supplier",
+ "add_suppliers": "Add suppliers",
+ "customers": "Customers",
+ "select_customer": "Select customer",
+ "select_customers": "Select customers",
+ "add_customer": "Add customer",
+ "add_customers": "Add customers",
+ "employees": "Employees",
+ "select_employee": "Select employee",
+ "select_employees": "Select employees",
+ "add_employee": "Add employee",
+ "add_employees": "Add employees",
+ "equipment": "Equipment",
+ "select_equipment": "Select equipment",
+ "select": "Select",
+ "variants": "Variants",
+ "select_variant": "Select variant",
+ "select_variants": "Select variants",
+
+ "settins_group_general": "General",
+ "settings_general_language": "Language",
+ "settings_general_language_description": "Choose language for using in application.",
+ "settings_general_sidebarAutoCollapse": "Sidebar auto collapse",
+ "settings_general_sidebarAutoCollapse_description": "Collapse sidebar when loose focus.",
+
+ "settings_group_aspect": "Aspect",
+ "settings_aspect_reduceAnimations": "Reduce animations",
+ "settings_aspect_reduceAnimations_description": "Reduce animation of the application.",
+ "settings_aspect_darkMode": "Dark mode",
+ "settings_aspect_darkMode_description": "Enable dark mode for the application.",
+ "settings_aspect_primaryColor": "Primary color",
+ "settings_aspect_primaryColor_description": "Change primary color of the application.",
+ "settings_aspect_resetTheme": "Reset theme",
+ "settings_aspect_resetTheme_description": "Reset theme to default."
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/i18n/translations/es.json b/packages/app/src/extensions/i18n/translations/es.json
new file mode 100644
index 00000000..d6cfe304
--- /dev/null
+++ b/packages/app/src/extensions/i18n/translations/es.json
@@ -0,0 +1,214 @@
+{
+ "Dashboard": "Inicio",
+ "main_welcome": "Bienvenido,",
+ "assigned_for_you": "Asignado para usted",
+ "no_assigned_workorders": "No hay trabajos asignados",
+ "Start": "Iniciar",
+ "End": "Finalizar",
+ "Stop": "Parar",
+ "Started": "Iniciado",
+ "started": "iniciado",
+ "Ended": "Finalizado",
+ "ended": "finalizado",
+ "Expired": "Expirado",
+ "expired": "expirado",
+ "Stopped": "Parado",
+ "stopped": "parado",
+ "Pending": "Pendiente",
+ "pending": "pendiente",
+ "Finished": "Finalizado",
+ "finished": "terminado",
+ "Cancelled": "Cancelado",
+ "cancelled": "cancelado",
+ "Assigned": "Asignado",
+ "assigned": "asignado",
+ "Ready": "Listo",
+ "ready": "listo",
+ "No description": "Sin descripción",
+ "All": "Todos",
+ "all": "todos",
+ "or": "o",
+ "Browse": "Buscar",
+ "Create new": "Crear nuevo",
+ "New": "Nuevo",
+ "Close": "Cerrar",
+ "Done": "Listo",
+ "Next": "Siguiente",
+ "Previous": "Anterior",
+ "Schedule": "Plazo",
+ "Edit": "Modificar",
+ "Save": "Guardar",
+ "Cancel": "Cancelar",
+ "Delete": "Eliminar",
+ "State": "Estado",
+ "Modify": "Modificar",
+ "modify": "modificar",
+ "Notifications": "Notificaciones",
+ "Notification": "Notificación",
+ "Haptic": "Vibración",
+ "Haptic Feedback": "Vibración de respuesta",
+ "Enable haptic feedback on touch events.": "Habilitar vibración de respuesta cuando exista un evento de toque.",
+ "Selection press delay": "Retraso de presión de selección",
+ "Set the delay before the selection trigger is activated.": "Establecer el retraso antes de que el disparador de selección sea activado.",
+ "Force Mobile Mode": "Forzar modo móvil",
+ "Force the application to run in mobile mode.": "Forzar la aplicación a ejecutarse en modo móvil.",
+ "Manage operators": "Administrar operadores",
+ "Manage users": "Administrar usuarios",
+ "Manage groups": "Administrar grupos",
+ "Manage workflows": "Administrar flujos de trabajo",
+ "Manage roles": "Administrar roles",
+ "Manage permissions": "Administrar permisos",
+ "Disable": "Deshabilitar",
+ "Disabled": "Deshabilitado",
+ "Discard": "Descartar",
+ "Unselect all": "Deseleccionar todo",
+ "Select all": "Seleccionar todo",
+ "Add commit": "Añadir registro",
+ "Commit": "Registrar",
+ "Commits": "Registros",
+ "Assistant mode": "Modo asistente",
+ "View finished": "Ver terminados",
+ "View pending": "Ver pendientes",
+ "View assigned": "Ver asignados",
+ "View ready": "Ver listos",
+ "View cancelled": "Ver cancelados",
+ "View all": "Ver todos",
+ "View": "Ver",
+ "Mark produced quantity": "Marcar cantidad producida",
+ "Mark remaining amount": "Marcar cantidad restante",
+ "Quantity": "Cantidad",
+ "Quantity produced": "Cantidad producida",
+ "Quantity left": "Cantidad restante",
+ "Production target": "Objectivo de producción",
+ "Section": "Sección",
+ "Sections": "Secciones",
+ "Workshift": "Turno",
+ "workshift": "turno",
+ "Workshifts": "Turnos",
+ "workshifts": "turnos",
+ "Operation": "Operación",
+ "Operations": "Operaciones",
+ "Stock Target": "Stock objetivo",
+ "Vault item": "Artículo de bóveda",
+ "Stock item": "Artículo de stock",
+ "Vault": "Bóveda",
+ "Phase": "Fase",
+ "Variants": "Variantes",
+ "Variant": "Variante",
+ "Description": "Descripción",
+ "Task": "Tarea",
+ "Tasks": "Tareas",
+ "Product": "Producto",
+ "Products": "Productos",
+ "Operator": "Operador",
+ "Operators": "Operadores",
+ "Workload": "Carga de trabajo",
+ "workload": "carga de trabajo",
+ "Workloads": "Cargas de trabajo",
+ "workloads": "cargas de trabajo",
+ "Workorder": "Orden de trabajo",
+ "workorder": "orden de trabajo",
+ "Workorders": "Ordenes de trabajo",
+ "workorders": "ordenes de trabajo",
+ "Workpart": "Parte de trabajo",
+ "workpart": "parte de trabajo",
+ "Workparts": "Partes de trabajo",
+ "workparts": "parte de trabajo",
+ "Payload": "Carga",
+ "payload": "carga",
+ "Payloads": "Cargas",
+ "payloads": "carga",
+ "Commit all": "Registrar todo",
+ "Mark quantity": "Marcar cantidad",
+ "Mark": "Marcar",
+ "Marked": "Marcado",
+ "Marked quantity": "Cantidad marcada",
+ "Marked amount": "Cantidad marcada",
+ "Marked amount left": "Cantidad restante marcada",
+ "Marked amount produced": "Cantidad producida marcada",
+ "Marked amount remaining": "Cantidad restante marcada",
+ "Marked amount target": "Cantidad objetivo marcada",
+ "Marked amount stock": "Cantidad stock marcada",
+ "Notifications Sound": "Sonido de notificación",
+ "Play a sound when a notification is received.": "Reproducir un sonido cuando se recibe una notificación.",
+ "Vibration": "Vibración",
+ "Vibrate the device when a notification is received.": "Vibrar el dispositivo cuando se recibe una notificación.",
+ "Sound Volume": "Volumen de sonido",
+ "Set the volume of the sound when a notification is received.": "Establecer el volumen del sonido cuando se recibe una notificación.",
+ "Workorder Notifications": "Notificaciones de orden de trabajo",
+ "Display in-app notifications for workorders updates.": "Mostrar notificaciones para las actualizaciones de las ordenes de trabajo.",
+ "Accounts": "Cuentas",
+ "Import": "Importar",
+ "Export": "Exportar",
+ "Refresh": "Actualizar",
+ "Reload": "Recargar",
+ "Required": "Requerido",
+ "Optional": "Opcional",
+ "Search": "Buscar",
+ "Status": "Estado",
+ "Type": "Tipo",
+ "About": "Acerca de",
+ "Current": "Actual",
+ "Statistics": "Estadísticas",
+ "Name": "Nombre",
+ "Users": "Usuarios",
+ "Username": "Nombre de usuario",
+ "Settings": "Configuración",
+ "Email": "Correo electrónico",
+ "Password": "Contraseña",
+ "Sessions": "Sesiones",
+ "Compact view": "Vista compacta",
+ "Add to catalog": "Añadir al catálogo",
+ "Fabric": "Fabric",
+ "Press and hold for 2 seconds to toogle running": "Pulse y mantenga pulsado durante 2 segundos para alternar el funcionamiento",
+ "Production quantity already has been reached": "La cantidad de producción ya ha sido alcanzada",
+ "Production quantity is not enough": "La cantidad de producción no es suficiente",
+ "Are you sure you want to commit for this workpart?": "¿Está seguro de que desea consolidar esta parte de trabajo?",
+ "Are you sure you want to commit all quantity left?": "¿Está seguro de que desea consolidar toda la cantidad restante?",
+ "This will commit all quantity left and finish the production for this workload.": "Esto consolidará toda la cantidad restante y terminará la producción para esta carga de trabajo.",
+ "Are you sure you want to commit for this workorder?": "¿Está seguro de que desea consolidar esta orden de trabajo?",
+ "Enter the name or a reference for the workorder.": "Introduzca el nombre o una referencia para la orden de trabajo.",
+ "Select the section where the workorder will be deployed.": "Seleccione la sección donde se desplegará la orden de trabajo.",
+ "Select the schedule for the workorder.": "Seleccione el plazo para la orden de trabajo.",
+ "Assign the operators for the workorder.": "Asigne los operadores para la orden de trabajo.",
+ "Define the payloads for the workorder.": "Defina las cargas para la orden de trabajo.",
+ "Define the workloads for the workorder.": "Defina las cargas de trabajo para la orden de trabajo.",
+ "Leaving process running on background, dont forget to stop it when you are done": "Dejando el proceso en ejecución en segundo plano, no olvide detenerlo cuando haya terminado",
+ "Task remains opened, dont forget to stop it when you are done": "La tarea permanece abierta, no olvide detenerla cuando haya terminado",
+ "Select a option": "Seleccione una opción",
+ "Set the quantity produced": "Marque la cantidad producida",
+ "Experimental": "Experimental",
+ "New workorder assigned": "Nueva orden de trabajo asignada",
+ "Check the new list of workorder": "Compruebe la nueva lista de ordenes de trabajo",
+ "Do you want to delete these items?": "¿Desea eliminar estos elementos?",
+ "This action cannot be undone, and will permanently delete the selected items.": "Esta acción no se puede deshacer, y eliminará permanentemente los elementos seleccionados.",
+ "Assigned operators": "Operadores asignados",
+ "Assigments": "Asignaciones",
+ "Working Tasks": "Tareas en ejecución",
+ "You are not working on any task": "No estás trabajando en ninguna tarea",
+ "Update": "Actualizar",
+ "Update status": "Actualizar estado",
+ "Archived": "Archivado",
+ "archived": "archivado",
+ "Archive": "Archivar",
+ "archive": "archivar",
+ "General": "General",
+ "Sidebar": "Barra lateral",
+ "Aspect": "Aspecto",
+ "Language": "Idioma",
+ "Choose a language for the application": "Elige un idioma para la aplicación.",
+ "Edit Sidebar": "Editar barra lateral",
+ "Auto Collapse": "Auto colapsar",
+ "Collapse the sidebar when loose focus": "Colapsar la barra lateral cuando pierda el foco.",
+ "Reduce animation": "Reducir animación",
+ "Primary color": "Color primario",
+ "Change primary color of the application.": "Cambia el color primario de la aplicación.",
+ "Dark mode": "Modo oscuro",
+ "Images": "Imágenes",
+ "Add others": "Añadir otros",
+ "Export tokens": "Exportar bonos de trabajo",
+ "Description of the task. It should be a general description of the product. Do not include information that may vary. e.g. 'The product is a white shirt with a elastic red collar, size M'": "Descripción de la tarea. Debe ser una descripción general del producto. No incluya información que pueda variar. Por ejemplo, 'El producto es una camisa blanca con un collar de color rojo, tamaño M'",
+ "Define variants for this item. Only the types of variations that may exist of a product should be included. e.g. Size, Color, Material, etc.": "Defina las variantes para este artículo. Sólo deben incluirse los tipos de variaciones que pueden existir de un producto. Por ejemplo, Tamaño, Color, Material, etc.",
+ "Append some images to describe this item.": "Agregue algunas imágenes para describir este artículo."
+
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/index.js b/packages/app/src/extensions/index.js
new file mode 100644
index 00000000..93efe2eb
--- /dev/null
+++ b/packages/app/src/extensions/index.js
@@ -0,0 +1,11 @@
+export * as Render from "./render"
+export * as Splash from "./splash"
+export * as Sound from "./sound"
+export * as Theme from "./theme"
+export * as i18n from "./i18n"
+export * as Notifications from "./notifications"
+
+export { default as SettingsController } from "./settings"
+export { default as API } from "./api"
+export { default as Debug } from "./debug"
+export { default as Shortcuts } from "./shortcuts"
\ No newline at end of file
diff --git a/packages/app/src/extensions/notifications/index.jsx b/packages/app/src/extensions/notifications/index.jsx
new file mode 100644
index 00000000..fafb75e9
--- /dev/null
+++ b/packages/app/src/extensions/notifications/index.jsx
@@ -0,0 +1,86 @@
+import React from "react"
+import { notification as Notf } from "antd"
+import { Icons, createIconRender } from "components/Icons"
+import { Translation } from "react-i18next"
+import { Haptics } from "@capacitor/haptics"
+
+class NotificationController {
+ getSoundVolume = () => {
+ return (window.app.settings.get("notifications_sound_volume") ?? 50) / 100
+ }
+
+ new = (notification, options = {}) => {
+ this.notify(notification, options)
+ this.playHaptic(options)
+ this.playAudio(options)
+ }
+
+ notify = (notification, options = {}) => {
+ if (typeof notification === "string") {
+ notification = {
+ title: "New notification",
+ description: notification
+ }
+ }
+
+ Notf.open({
+ message:
+ {(t) => t(notification.title)}
+ ,
+ description:
+ {(t) => t(notification.description)}
+ ,
+ duration: notification.duration ?? 4,
+ icon: React.isValidElement(notification.icon) ? notification.icon : (createIconRender(notification.icon) ?? ),
+ })
+ }
+
+ playHaptic = async (options = {}) => {
+ const vibrationEnabled = options.vibrationEnabled ?? window.app.settings.get("notifications_vibrate")
+
+ if (vibrationEnabled) {
+ await Haptics.vibrate()
+ }
+ }
+
+ playAudio = (options = {}) => {
+ const soundEnabled = options.soundEnabled ?? window.app.settings.get("notifications_sound")
+ const soundVolume = options.soundVolume ? options.soundVolume / 100 : this.getSoundVolume()
+
+ if (soundEnabled) {
+ window.app.SoundEngine.play("notification", {
+ volume: soundVolume,
+ })
+ }
+ }
+}
+
+const extension = {
+ key: "notification",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ app.NotificationController = new NotificationController()
+
+ main.eventBus.on("changeNotificationsSoundVolume", (value) => {
+ app.NotificationController.playAudio({ soundVolume: value })
+ })
+ main.eventBus.on("changeNotificationsVibrate", (value) => {
+ app.NotificationController.playHaptic({
+ vibrationEnabled: value,
+ })
+ })
+ main.setToWindowContext("notifications", app.NotificationController)
+ },
+ ],
+ },
+ ],
+}
+
+export {
+ extension,
+ NotificationController,
+}
+
+export default extension
\ No newline at end of file
diff --git a/packages/app/src/extensions/render/index.jsx b/packages/app/src/extensions/render/index.jsx
new file mode 100644
index 00000000..0ad09810
--- /dev/null
+++ b/packages/app/src/extensions/render/index.jsx
@@ -0,0 +1,225 @@
+import React from "react"
+import { EvitePureComponent } from "evite"
+import routes from "virtual:generated-pages"
+import progressBar from "nprogress"
+
+import NotFoundRender from "./statics/404"
+import CrashRender from "./statics/crash"
+
+export const ConnectWithApp = (component) => {
+ return window.app.bindContexts(component)
+}
+
+export function GetRoutesMap() {
+ return routes.map((route) => {
+ const { path } = route
+ route.name =
+ path
+ .replace(/^\//, "")
+ .replace(/:/, "")
+ .replace(/\//, "-")
+ .replace("all(.*)", "not-found") || "home"
+
+ route.path = route.path.includes("*") ? "*" : route.path
+
+ return route
+ })
+}
+
+export function GetRoutesComponentMap() {
+ return routes.reduce((acc, route) => {
+ const { path, component } = route
+
+ acc[path] = component
+
+ return acc
+ }, {})
+}
+
+// class PageStatement {
+// constructor() {
+// this.state = {}
+
+// }
+
+// getProxy() {
+
+// }
+// }
+
+export class RouteRender extends EvitePureComponent {
+ state = {
+ renderInitialization: true,
+ renderComponent: null,
+ renderError: null,
+ //pageStatement: new PageStatement(),
+ routes: GetRoutesComponentMap() ?? {},
+ crash: null,
+ }
+
+ handleBusEvents = {
+ "render_initialization": () => {
+ this.setState({ renderInitialization: true })
+ },
+ "render_initialization_done": () => {
+ this.setState({ renderInitialization: false })
+ },
+ "crash": (message, error) => {
+ this.setState({ crash: { message, error } })
+ },
+ "locationChange": (event) => {
+ this.loadRender()
+ },
+ }
+
+ componentDidMount() {
+ this._ismounted = true
+ this._loadBusEvents()
+ this.loadRender()
+ }
+
+ componentWillUnmount() {
+ this._ismounted = false
+ this._unloadBusEvents()
+ }
+
+ loadRender = (path) => {
+ if (!this._ismounted) {
+ console.warn("RouteRender is not mounted, skipping render load")
+ return false
+ }
+
+ let componentModule = this.state.routes[path ?? this.props.path ?? window.location.pathname] ?? this.props.staticRenders?.NotFound ?? NotFoundRender
+
+ // TODO: in a future use, we can use `pageStatement` class for managing statement
+ window.app.pageStatement = Object.freeze(componentModule.pageStatement) ?? Object.freeze({})
+
+ return this.setState({ renderComponent: componentModule })
+ }
+
+ componentDidCatch(info, stack) {
+ this.setState({ renderError: { info, stack } })
+ }
+
+ render() {
+ if (this.state.crash) {
+ const StaticCrashRender = this.props.staticRenders?.Crash ?? CrashRender
+
+ return
+ }
+
+ if (this.state.renderError) {
+ if (this.props.staticRenders?.RenderError) {
+ return React.createElement(this.props.staticRenders?.RenderError, { error: this.state.renderError })
+ }
+
+ return JSON.stringify(this.state.renderError)
+ }
+
+ if (this.state.renderInitialization) {
+ const StaticInitializationRender = this.props.staticRenders?.initialization ?? null
+
+ return
+ }
+
+ if (!this.state.renderComponent) {
+ return null
+ }
+
+ return React.createElement(ConnectWithApp(this.state.renderComponent), this.props)
+ }
+}
+
+export const extension = {
+ key: "customRender",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ app.bindContexts = (component) => {
+ let contexts = {
+ main: {},
+ app: {},
+ }
+
+ if (typeof component.bindApp === "string") {
+ if (component.bindApp === "all") {
+ Object.keys(app).forEach((key) => {
+ contexts.app[key] = app[key]
+ })
+ }
+ } else {
+ if (Array.isArray(component.bindApp)) {
+ component.bindApp.forEach((key) => {
+ contexts.app[key] = app[key]
+ })
+ }
+ }
+
+ if (typeof component.bindMain === "string") {
+ if (component.bindMain === "all") {
+ Object.keys(main).forEach((key) => {
+ contexts.main[key] = main[key]
+ })
+ }
+ } else {
+ if (Array.isArray(component.bindMain)) {
+ component.bindMain.forEach((key) => {
+ contexts.main[key] = main[key]
+ })
+ }
+ }
+
+ return (props) => React.createElement(component, { ...props, contexts })
+ }
+
+ main.setToWindowContext("bindContexts", app.bindContexts)
+ },
+ async (app, main) => {
+ const defaultTransitionDelay = 150
+
+ main.progressBar = progressBar.configure({ parent: "html", showSpinner: false })
+
+ main.history.listen((event) => {
+ main.eventBus.emit("transitionDone", event)
+ main.eventBus.emit("locationChange", event)
+ main.progressBar.done()
+ })
+
+ main.history.setLocation = (to, state, delay) => {
+ const lastLocation = main.history.lastLocation
+
+ if (typeof lastLocation !== "undefined" && lastLocation?.pathname === to && lastLocation?.state === state) {
+ return false
+ }
+
+ main.progressBar.start()
+ main.eventBus.emit("transitionStart", delay)
+
+ setTimeout(() => {
+ main.history.push({
+ pathname: to,
+ }, state)
+ main.history.lastLocation = main.history.location
+ }, delay ?? defaultTransitionDelay)
+ }
+
+ main.setToWindowContext("setLocation", main.history.setLocation)
+ },
+ ],
+ mutateContext: {
+ validateLocationSlash: (location) => {
+ let key = location ?? window.location.pathname
+
+ while (key[0] === "/") {
+ key = key.slice(1, key.length)
+ }
+
+ return key
+ },
+ },
+ },
+ ],
+}
+
+export default extension
\ No newline at end of file
diff --git a/packages/app/src/extensions/render/statics/404/index.jsx b/packages/app/src/extensions/render/statics/404/index.jsx
new file mode 100644
index 00000000..c349d3a2
--- /dev/null
+++ b/packages/app/src/extensions/render/statics/404/index.jsx
@@ -0,0 +1,7 @@
+import React from 'react'
+
+export default () => {
+ return
+ Not Found
+
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/render/statics/crash/index.jsx b/packages/app/src/extensions/render/statics/crash/index.jsx
new file mode 100644
index 00000000..dd35336f
--- /dev/null
+++ b/packages/app/src/extensions/render/statics/crash/index.jsx
@@ -0,0 +1,15 @@
+import React from "react"
+import "./index.less"
+
+export default (props) => {
+ return
+
+
Crash
+
+
{props.crash.message}
+
{props.crash.error}
+
+ window.location.reload()}>Reload
+
+
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/render/statics/crash/index.less b/packages/app/src/extensions/render/statics/crash/index.less
new file mode 100644
index 00000000..dd65293b
--- /dev/null
+++ b/packages/app/src/extensions/render/statics/crash/index.less
@@ -0,0 +1,27 @@
+.app_crash {
+ position: absolute;
+ z-index: 9999;
+
+ top: 0;
+ right: 0;
+
+ width: 100vw;
+ height: 100vh;
+
+ display: flex;
+ flex-direction: column;
+
+ justify-content: center;
+ align-items: center;
+
+ .header {
+ display: flex;
+ text-align: center;
+ flex-direction: column;
+ justify-content: center;
+ svg {
+ width: 100px;
+ height: 100px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/settings/index.js b/packages/app/src/extensions/settings/index.js
new file mode 100644
index 00000000..b40df8c2
--- /dev/null
+++ b/packages/app/src/extensions/settings/index.js
@@ -0,0 +1,66 @@
+import store from "store"
+import defaultSettings from "schemas/defaultSettings.json"
+
+class SettingsController {
+ constructor() {
+ this.storeKey = "app_settings"
+ this.settings = store.get(this.storeKey) ?? {}
+
+ this._setDefaultUndefined()
+ }
+
+ _setDefaultUndefined = () => {
+ Object.keys(defaultSettings).forEach((key) => {
+ const value = defaultSettings[key]
+
+ // Only set default if value is undefined
+ if (typeof this.settings[key] === "undefined") {
+ this.settings[key] = value
+ }
+ })
+ }
+
+ defaults = (key) => {
+ if (typeof key === "undefined") {
+ return defaultSettings
+ }
+
+ return defaultSettings[key]
+ }
+
+ is = (key, value) => {
+ return this.settings[key] === value
+ }
+
+ set = (key, value) => {
+ this.settings[key] = value
+ store.set(this.storeKey, this.settings)
+
+ window.app.eventBus.emit("setting.update", { key, value })
+ window.app.eventBus.emit(`setting.update.${key}`, value)
+
+ return this.settings
+ }
+
+ get = (key) => {
+ if (typeof key === "undefined") {
+ return this.settings
+ }
+
+ return this.settings[key]
+ }
+}
+
+export default {
+ key: "settings",
+ expose: [
+ {
+ initialization: [
+ (app, main) => {
+ app.settingsController = new SettingsController()
+ window.app.settings = app.settingsController
+ }
+ ]
+ },
+ ]
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/shortcuts/index.js b/packages/app/src/extensions/shortcuts/index.js
new file mode 100644
index 00000000..f3814e9f
--- /dev/null
+++ b/packages/app/src/extensions/shortcuts/index.js
@@ -0,0 +1,76 @@
+export class ShortcutsController {
+ constructor() {
+ this.shortcuts = {}
+
+ document.addEventListener("keydown", (event) => {
+ const key = event.key.toLowerCase()
+
+ const shortcut = this.shortcuts[key]
+
+ if (shortcut) {
+ event.preventDefault()
+
+ if (typeof shortcut.ctrl === "boolean" && event.ctrlKey !== shortcut.ctrl) {
+ return
+ }
+
+ if (typeof shortcut.shift === "boolean" && event.shiftKey !== shortcut.shift) {
+ return
+ }
+
+ if (typeof shortcut.alt === "boolean" && event.altKey !== shortcut.alt) {
+ return
+ }
+
+ if (typeof shortcut.meta === "boolean" && event.metaKey !== shortcut.meta) {
+ return
+ }
+
+ if (typeof shortcut.fn === "function") {
+ shortcut.fn()
+ }
+ }
+ })
+ }
+
+ register = (keybind = {}, fn) => {
+ if (typeof keybind === "string") {
+ keybind = {
+ key: keybind,
+ }
+ }
+
+
+ this.shortcuts[keybind.key] = {
+ ...keybind,
+ fn,
+ }
+ }
+
+ remove = (array) => {
+ if (typeof array === "string") {
+ array = [array]
+ }
+
+ array.forEach(key => {
+ delete this.shortcuts[key]
+ })
+ }
+}
+
+export const extension = {
+ key: "shortcuts",
+ expose: [
+ {
+ initialization: [
+ (app, main) => {
+ app.ShortcutsController = new ShortcutsController()
+
+ main.setToWindowContext("ShortcutsController", app.ShortcutsController)
+ }
+ ],
+ },
+ ]
+}
+
+export default extension
\ No newline at end of file
diff --git a/packages/app/src/extensions/sound/index.js b/packages/app/src/extensions/sound/index.js
new file mode 100644
index 00000000..bc950e0a
--- /dev/null
+++ b/packages/app/src/extensions/sound/index.js
@@ -0,0 +1,53 @@
+import { Howl } from "howler"
+import config from "config"
+
+export class SoundEngine {
+ constructor() {
+ this.sounds = {}
+ }
+
+ initialize = async () => {
+ this.sounds = await this.getSounds()
+ }
+
+ getSounds = async () => {
+ // TODO: Load custom soundpacks manifests
+ let soundPack = config.defaultSoundPack ?? {}
+
+ Object.keys(soundPack).forEach((key) => {
+ const src = soundPack[key]
+
+ soundPack[key] = (options) => new Howl({
+ volume: window.app.settings.get("generalAudioVolume") ?? 0.5,
+ ...options,
+ src: [src],
+ })
+ })
+
+ return soundPack
+ }
+
+ play = (name, options) => {
+ if (this.sounds[name]) {
+ return this.sounds[name](options).play()
+ } else {
+ console.error(`Sound ${name} not found.`)
+ return false
+ }
+ }
+}
+
+export const extension = {
+ key: "soundEngine",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ app.SoundEngine = new SoundEngine()
+ main.setToWindowContext("SoundEngine", app.SoundEngine)
+ await app.SoundEngine.initialize()
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/splash/index.jsx b/packages/app/src/extensions/splash/index.jsx
new file mode 100644
index 00000000..e5200e48
--- /dev/null
+++ b/packages/app/src/extensions/splash/index.jsx
@@ -0,0 +1,57 @@
+import React from "react"
+import ReactDOM from "react-dom"
+
+import "./index.less"
+
+export const SplashComponent = ({ props = {}, logo }) => {
+ return (
+
+
+
+
+
+ )
+}
+
+export const extension = (params = {}) => {
+ return {
+ key: "splash",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ const fadeOutVelocity = params.velocity ?? 1000 //on milliseconds
+ const splashElement = document.createElement("div")
+
+ splashElement.style = `
+ position: absolute;
+ top: 0;
+ left: 0;
+
+ width: 100vw;
+ height: 100vh;
+ `
+
+ const show = () => {
+ document.body.appendChild(splashElement)
+ ReactDOM.render( , splashElement)
+ }
+
+ const removeSplash = () => {
+ splashElement.style.animation = `${params.preset ?? "fadeOut"} ${fadeOutVelocity}ms`
+
+ setTimeout(() => {
+ splashElement.remove()
+ }, fadeOutVelocity)
+ }
+
+ main.eventBus.on("splash_show", show)
+ main.eventBus.on("splash_close", removeSplash)
+ },
+ ],
+ },
+ ],
+ }
+}
+
+export default extension
\ No newline at end of file
diff --git a/packages/app/src/extensions/splash/index.less b/packages/app/src/extensions/splash/index.less
new file mode 100644
index 00000000..d6d2e6a3
--- /dev/null
+++ b/packages/app/src/extensions/splash/index.less
@@ -0,0 +1,44 @@
+.splash_wrapper {
+ overflow: hidden;
+
+ //background-color: rgba(240, 242, 245, 0.8);
+ backdrop-filter: blur(10px);
+ --webkit-backdrop-filter: blur(10px);
+
+ width: 100%;
+ height: 100%;
+ z-index: 1000;
+
+ display: flex;
+ flex-direction: column;
+
+ align-items: center;
+ justify-content: center;
+}
+
+.splash_logo {
+ width: 100%;
+ height: 100%;
+
+ display: flex;
+ flex-direction: column;
+
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: fit-content;
+ max-width: 50%;
+ max-height: 50%;
+ filter: drop-shadow(14px 10px 10px rgba(128, 128, 128, 0.5));
+ }
+}
+
+@keyframes fadeOut {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/extensions/theme/index.jsx b/packages/app/src/extensions/theme/index.jsx
new file mode 100644
index 00000000..46cfc6f9
--- /dev/null
+++ b/packages/app/src/extensions/theme/index.jsx
@@ -0,0 +1,165 @@
+import config from "config"
+import store from "store"
+import { ConfigProvider } from "antd"
+
+export class ThemeController {
+ constructor(params) {
+ this.params = { ...params }
+
+ this.themeManifestStorageKey = "theme"
+ this.modificationStorageKey = "themeModifications"
+ this.variantStorageKey = "themeVariation"
+
+ this.theme = null
+
+ this.mutation = null
+ this.currentVariant = null
+
+ this.init()
+
+ return this
+ }
+
+ static get currentVariant() {
+ return document.documentElement.style.getPropertyValue("--themeVariant")
+ }
+
+ init = () => {
+ let theme = this.getStoragedTheme()
+ const modifications = this.getStoragedModifications()
+ const variantKey = this.getStoragedVariant()
+
+ if (!theme) {
+ // load default theme
+ theme = this.getDefaultTheme()
+ } else {
+ // load URL and initialize theme
+ }
+
+ // set global theme
+ this.theme = theme
+
+ // override with static vars
+ if (theme.staticVars) {
+ this.update(theme.staticVars)
+ }
+
+ // override theme with modifications
+ if (modifications) {
+ this.update(modifications)
+ }
+
+ // apply variation
+ this.applyVariant(variantKey)
+ }
+
+ getRootVariables = () => {
+ let attributes = document.documentElement.getAttribute("style").trim().split(";")
+ attributes = attributes.slice(0, (attributes.length - 1))
+ attributes = attributes.map((variable) => {
+ let [key, value] = variable.split(":")
+ key = key.split("--")[1]
+
+ return [key, value]
+ })
+
+ return Object.fromEntries(attributes)
+ }
+
+ getDefaultTheme = () => {
+ // TODO: Use evite CONSTANTS_API
+ return config.defaultTheme
+ }
+
+ getStoragedTheme = () => {
+ return store.get(this.themeManifestStorageKey)
+ }
+
+ getStoragedModifications = () => {
+ return store.get(this.modificationStorageKey)
+ }
+
+ getStoragedVariant = () => {
+ return store.get(this.variantStorageKey)
+ }
+
+ setVariant = (variationKey) => {
+ return store.set(this.variantStorageKey, variationKey)
+ }
+
+ setModifications = (modifications) => {
+ return store.set(this.modificationStorageKey, modifications)
+ }
+
+ resetDefault = () => {
+ store.remove(this.themeManifestStorageKey)
+ store.remove(this.modificationStorageKey)
+
+ window.app.settings.set("primaryColor", this.theme.staticVars.primaryColor)
+
+ return this.init()
+ }
+
+ update = (update) => {
+ if (typeof update !== "object") {
+ return false
+ }
+
+ this.mutation = {
+ ...this.theme.staticVars,
+ ...this.mutation,
+ ...update
+ }
+
+ Object.keys(this.mutation).forEach(key => {
+ document.documentElement.style.setProperty(`--${key}`, this.mutation[key])
+ })
+
+ document.documentElement.className = `theme-${this.currentVariant}`
+ document.documentElement.style.setProperty(`--themeVariant`, this.currentVariant)
+
+ ConfigProvider.config({ theme: this.mutation })
+ }
+
+ applyVariant = (variant = (this.theme.defaultVariant ?? "light")) => {
+ const values = this.theme.variants[variant]
+
+ if (values) {
+ this.currentVariant = variant
+ this.update(values)
+ this.setVariant(variant)
+ }
+ }
+}
+
+export const extension = {
+ key: "theme",
+ expose: [
+ {
+ initialization: [
+ async (app, main) => {
+ app.ThemeController = new ThemeController()
+
+ main.eventBus.on("darkMode", (value) => {
+ if (value) {
+ app.ThemeController.applyVariant("dark")
+ } else {
+ app.ThemeController.applyVariant("light")
+ }
+ })
+ main.eventBus.on("modifyTheme", (value) => {
+ app.ThemeController.update(value)
+ app.ThemeController.setModifications(app.ThemeController.mutation)
+ })
+ main.eventBus.on("resetTheme", () => {
+ app.ThemeController.resetDefault()
+ })
+
+ main.setToWindowContext("ThemeController", app.ThemeController)
+ },
+ ],
+ },
+ ],
+}
+
+export default extension
\ No newline at end of file
diff --git a/packages/app/src/layout/bottombar/index.jsx b/packages/app/src/layout/bottombar/index.jsx
new file mode 100644
index 00000000..c3cf963e
--- /dev/null
+++ b/packages/app/src/layout/bottombar/index.jsx
@@ -0,0 +1,169 @@
+import React from "react"
+import { Motion, spring } from "react-motion"
+import { EviteComponent } from "evite"
+import * as antd from "antd"
+import { createIconRender } from "components/Icons"
+import classnames from "classnames"
+
+import "./index.less"
+
+export default class BottomBar extends EviteComponent {
+ state = {
+ allowed: true,
+ show: false,
+ visible: false,
+ creatorActionsVisible: false,
+ render: null,
+ isManager: false,
+ }
+
+ handleBusEvents = {
+ "render_initialization": () => {
+ this.toogle(false)
+ },
+ "render_initialization_done": () => {
+ if (this.isAllowed()) {
+ this.toogle(true)
+ }
+ },
+ "crash": () => {
+ this.toogle(false)
+ },
+ "locationChange": () => {
+ this.toogle(this.isAllowed())
+ }
+ }
+
+ componentDidMount = () => {
+ this._loadBusEvents()
+
+ window.app.BottomBarController = {
+ toogleVisible: this.toogle,
+ isVisible: () => this.state.visible,
+ render: (fragment) => {
+ this.setState({ render: fragment })
+ },
+ clear: () => {
+ this.setState({ render: null })
+ },
+ }
+ }
+
+ componentWillUnmount = () => {
+ this._unloadBusEvents()
+ delete window.app.BottomBarController
+ }
+
+ isAllowed() {
+ return app.pageStatement?.bottomBarAllowed !== "undefined" && app.pageStatement?.bottomBarAllowed !== false
+ }
+
+ toogle = (to) => {
+ if (!window.isMobile) {
+ to = false
+ } else {
+ to = to ?? !this.state.visible
+ }
+
+ if (!to) {
+ this.setState({ show: to }, () => {
+ setTimeout(() => {
+ this.setState({ visible: to })
+ }, 500)
+ })
+ } else {
+ this.setState({ visible: to }, () => {
+ this.setState({ show: to })
+ })
+ }
+ }
+
+ onClickItemId = (id) => {
+ window.app.setLocation(`/${id}`)
+ }
+
+ render() {
+ if (this.state.render) {
+ return
+ {this.state.render}
+
+ }
+
+ if (!this.state.visible) {
+ return null
+ }
+
+ return
+ {({ y }) =>
+
+
+
window.app.goMain()}
+ >
+
+ {createIconRender("Home")}
+
+
+
window.app.openNavigationMenu()}
+ >
+
+ {createIconRender("Navigation")}
+
+
+
window.app.openCreateNew()}
+ >
+
+ {createIconRender("PlusCircle")}
+
+
+
window.app.openSettings()}
+ >
+
+ {createIconRender("Settings")}
+
+
+ {this.props.user ?
window.app.goToAccount()}
+ >
+
+
:
this.onClickItemId("login")}
+ className="item"
+ >
+
+ {createIconRender("LogIn")}
+
+
}
+
+
}
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/bottombar/index.less b/packages/app/src/layout/bottombar/index.less
new file mode 100644
index 00000000..c61b0ddc
--- /dev/null
+++ b/packages/app/src/layout/bottombar/index.less
@@ -0,0 +1,91 @@
+@bottomBar_height: 80px;
+@bottomBar_iconSize: 24px;
+
+.bottomBar {
+ position: sticky;
+ z-index: 9999;
+
+ left: 0;
+ bottom: 0;
+
+ width: 100vw;
+ min-width: 100vw;
+ max-width: 100vw;
+
+ overflow: hidden;
+
+ display: flex;
+ flex-direction: row;
+
+ align-items: center;
+ justify-content: center;
+
+ background-color: var(--background-color-accent);
+ border-radius: 12px 12px 0 0;
+
+ height: @bottomBar_height;
+
+ padding: 10px;
+
+ .items {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ //white-space: nowrap;
+ //overflow-x: overlay;
+
+ height: 100%;
+ width: 100vw;
+
+ .item {
+ display: inline-flex;
+
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+
+ transition: all 150ms ease-in;
+
+ width: 20vw;
+ min-width: 20vw;
+ max-width: 20vw;
+
+ .icon {
+ border-radius: 360px;
+ height: 100%;
+ width: fit-content;
+
+ display: flex;
+ flex-direction: column;
+
+ align-items: center;
+ justify-content: center;
+
+ color: var(--background-color-contrast);
+ font-size: 2rem;
+
+ padding: 12px;
+ transition: all 70ms ease-in-out;
+
+ svg{
+ margin: 0!important;
+ }
+ }
+
+ &.primary {
+ .icon {
+ color: var(--background-color-primary);
+ background-color: var(--primaryColor);
+ }
+ }
+ }
+
+ .item:active {
+ .icon {
+ background-color: var(--background-color-primary);
+ color: var(--background-color-contrast);
+ transform: scale(0.9);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/drawer/index.jsx b/packages/app/src/layout/drawer/index.jsx
new file mode 100644
index 00000000..1599fe4b
--- /dev/null
+++ b/packages/app/src/layout/drawer/index.jsx
@@ -0,0 +1,172 @@
+import React from "react"
+import { DraggableDrawer } from "components"
+import EventEmitter from "@foxify/events"
+
+import "./index.less"
+
+export default class DrawerController extends React.Component {
+ constructor(props) {
+ super(props)
+ this.state = {
+ addresses: {},
+ refs: {},
+ drawers: [],
+ }
+
+ this.DrawerController = {
+ open: this.open,
+ close: this.close,
+ closeAll: this.closeAll,
+ }
+
+ window.app["DrawerController"] = this.DrawerController
+ }
+
+ sendEvent = (id, ...context) => {
+ const ref = this.state.refs[id]?.current
+ return ref.events.emit(...context)
+ }
+
+ open = (id, component, options) => {
+ const refs = this.state.refs ?? {}
+ const drawers = this.state.drawers ?? []
+ const addresses = this.state.addresses ?? {}
+
+ const instance = {
+ id,
+ key: id,
+ ref: React.createRef(),
+ children: component,
+ options,
+ controller: this,
+ }
+
+ if (typeof addresses[id] === "undefined") {
+ drawers.push( )
+ addresses[id] = drawers.length - 1
+ refs[id] = instance.ref
+ } else {
+ const ref = refs[id].current
+ const isLocked = ref.state.locked
+
+ if (!isLocked) {
+ drawers[addresses[id]] =
+ refs[id] = instance.ref
+ } else {
+ console.warn("Cannot update an locked drawer.")
+ }
+ }
+
+ this.setState({ refs, addresses, drawers })
+ }
+
+ destroy = (id) => {
+ let { addresses, drawers, refs } = this.state
+ const index = addresses[id]
+
+ if (typeof drawers[index] !== "undefined") {
+ drawers = drawers.filter((value, i) => i !== index)
+ }
+ delete addresses[id]
+ delete refs[id]
+
+ this.setState({ addresses, drawers })
+ }
+
+ close = (id) => {
+ const ref = this.state.refs[id]?.current
+
+ if (typeof ref !== "undefined") {
+ if (ref.state.locked && ref.state.visible) {
+ return console.warn("This drawer is locked and cannot be closed")
+ } else {
+ return ref.close()
+ }
+ } else {
+ return console.warn("This drawer not exists")
+ }
+ }
+
+ closeAll = () => {
+ this.state.drawers.forEach((drawer) => {
+ drawer.ref.current.close()
+ })
+ }
+
+ render() {
+ return this.state.drawers
+ }
+}
+
+export class Drawer extends React.Component {
+ options = this.props.options ?? {}
+ events = new EventEmitter()
+ state = {
+ visible: true,
+ }
+
+ componentDidMount = async () => {
+ if (typeof this.props.controller === "undefined") {
+ throw new Error(`Cannot mount an drawer without an controller`)
+ }
+ if (typeof this.props.children === "undefined") {
+ throw new Error(`Empty component`)
+ }
+ }
+
+ toogleVisibility = (to) => {
+ this.setState({ visible: to ?? !this.state.visible })
+ }
+
+ close = () => {
+ this.toogleVisibility(false)
+ this.events.emit("beforeClose")
+
+ setTimeout(() => {
+ if (typeof this.options.onClose === "function") {
+ this.options.onClose()
+ }
+
+ this.props.controller.destroy(this.props.id)
+ }, 500)
+ }
+
+ sendEvent = (...context) => {
+ return this.props.controller.sendEvent(this.props.id, ...context)
+ }
+
+ handleDone = (...context) => {
+ if (typeof this.options.onDone === "function") {
+ this.options.onDone(this, ...context)
+ }
+ }
+
+ handleFail = (...context) => {
+ if (typeof this.options.onFail === "function") {
+ this.options.onFail(this, ...context)
+ }
+ }
+
+ render() {
+ const drawerProps = {
+ ...this.options.props,
+ ref: this.props.ref,
+ key: this.props.id,
+ onRequestClose: this.close,
+ open: this.state.visible,
+ containerElementClass: "drawer",
+ modalElementClass: "body",
+ }
+ const componentProps = {
+ ...this.options.componentProps,
+ events: this.events,
+ close: this.close,
+ handleDone: this.handleDone,
+ handleFail: this.handleFail,
+ }
+
+ return
+ {React.createElement(this.props.children, componentProps)}
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/drawer/index.less b/packages/app/src/layout/drawer/index.less
new file mode 100644
index 00000000..591016b7
--- /dev/null
+++ b/packages/app/src/layout/drawer/index.less
@@ -0,0 +1,26 @@
+.drawer {
+ .body {
+ position: absolute;
+ top: 50px;
+
+ padding: 30px 10px 10px 10px;
+ background-color: var(--background-color-primary);
+ width: 100%;
+ max-width: 700px;
+ min-height: 100%;
+ border-top-left-radius: 8px;
+ border-top-right-radius: 8px;
+ }
+
+ .body::before{
+ content: "";
+ background-color: var(--background-color-contrast);
+ width: 100px;
+ height: 8px;
+ position: absolute;
+ top: 10px;
+ left: 50%;
+ transform: translateX(-50%);
+ border-radius: 8px;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/header/index.jsx b/packages/app/src/layout/header/index.jsx
new file mode 100644
index 00000000..760c4373
--- /dev/null
+++ b/packages/app/src/layout/header/index.jsx
@@ -0,0 +1,49 @@
+import React from "react"
+import * as antd from "antd"
+import { Icons } from "components/Icons"
+import { AppSearcher } from "components"
+import classnames from "classnames"
+
+import "./index.less"
+
+export default class Header extends React.Component {
+ constructor(props) {
+ super(props)
+
+ this.state = {
+ visible: true,
+ }
+
+ this.HeaderController = {
+ toogleVisible: (to) => {
+ if (window.isMobile) {
+ to = true
+ }
+
+ this.setState({ visible: to ?? !this.state.visible })
+ },
+ isVisible: () => this.state.visible,
+ }
+
+ window.app["HeaderController"] = this.HeaderController
+ }
+
+ render() {
+ return (
+
+
+ {!window.isMobile &&
+ }
+
+ )
+ }
+}
diff --git a/packages/app/src/layout/header/index.less b/packages/app/src/layout/header/index.less
new file mode 100644
index 00000000..aa967eb6
--- /dev/null
+++ b/packages/app/src/layout/header/index.less
@@ -0,0 +1,31 @@
+@import "theme/index.less";
+
+.app_header {
+ user-select : none;
+ --webkit-user-select: none;
+
+ display : flex;
+ flex-direction: row;
+ align-items : center;
+ z-index : 100;
+
+ height : @app_header_height !important;
+ padding: 10px;
+
+ transition: all ease-in-out 150ms;
+
+ background : var(--background-color-primary) !important;
+ background-color: var(--background-color-primary) !important;
+
+ border-bottom: 1px var(--border-color) solid;
+
+ >div {
+ margin-right: 16px;
+ }
+
+ &.hidden {
+ opacity: 0;
+ height : 0 !important;
+ padding: 0 !important;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/index.jsx b/packages/app/src/layout/index.jsx
new file mode 100644
index 00000000..a3bd56ef
--- /dev/null
+++ b/packages/app/src/layout/index.jsx
@@ -0,0 +1,96 @@
+import React from "react"
+import classnames from "classnames"
+import * as antd from "antd"
+
+import Sidebar from "./sidebar"
+import Header from "./header"
+import Drawer from "./drawer"
+import Sidedrawer from "./sidedrawer"
+import BottomBar from "./bottomBar"
+
+const LayoutRenders = {
+ mobile: (props) => {
+ return
+
+
+
+ {props.children}
+
+
+
+
+
+
+ },
+ default: (props) => {
+ return
+
+
+
+
+
+
+ {props.children}
+
+
+
+
+
+ }
+}
+
+export default class Layout extends React.Component {
+ state = {
+ layoutType: "default",
+ isOnTransition: false,
+ }
+
+ setLayout = (layout) => {
+ if (typeof LayoutRenders[layout] === "function") {
+ return this.setState({
+ layoutType: layout,
+ })
+ }
+
+ return console.error("Layout type not found")
+ }
+
+ componentDidMount() {
+ window.app.eventBus.on("transitionStart", () => {
+ this.setState({ isOnTransition: true })
+ })
+ window.app.eventBus.on("transitionDone", () => {
+ this.setState({ isOnTransition: false })
+ })
+
+ if (window.app.settings.get("forceMobileMode") || window.app.isAppCapacitor() || Math.min(window.screen.width, window.screen.height) < 768 || navigator.userAgent.indexOf("Mobi") > -1) {
+ window.isMobile = true
+ this.setLayout("mobile")
+ } else {
+ window.isMobile = false
+ }
+
+ window.app.eventBus.on("forceMobileMode", (to) => {
+ if (to) {
+ window.isMobile = true
+ this.setLayout("mobile")
+ } else {
+ window.isMobile = false
+ this.setLayout("default")
+ }
+ })
+ }
+
+ render() {
+ const layoutComponentProps = {
+ ...this.props,
+ ...this.state,
+ }
+
+ if (LayoutRenders[this.state.layoutType]) {
+ return LayoutRenders[this.state.layoutType](layoutComponentProps)
+ }
+
+ return LayoutRenders.default(layoutComponentProps)
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/sidebar/components/editor/index.jsx b/packages/app/src/layout/sidebar/components/editor/index.jsx
new file mode 100644
index 00000000..7fdbc5be
--- /dev/null
+++ b/packages/app/src/layout/sidebar/components/editor/index.jsx
@@ -0,0 +1,266 @@
+import React from "react"
+import { Button } from "antd"
+import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd"
+
+import { ActionsBar } from "components"
+import { Icons, createIconRender } from "components/Icons"
+import sidebarItems from "schemas/routes.json"
+import { sidebarKeys as defaultSidebarKeys } from "schemas/defaultSettings"
+
+import Selector from "../selector"
+import "./index.less"
+
+const allItemsMap = [...sidebarItems].map((item, index) => {
+ item.key = index.toString()
+ item.index = index
+ return item
+})
+
+const getAllItems = () => {
+ let items = {}
+
+ allItemsMap.forEach((item) => {
+ items[item.id] = {
+ ...item,
+ content: (
+ <>
+ {createIconRender(item.icon)} {item.title}
+ >
+ ),
+ }
+ })
+
+ return items
+}
+
+const allItems = getAllItems()
+
+export default class SidebarEditor extends React.Component {
+ state = {
+ items: [],
+ lockedIndex: [],
+ }
+
+ componentDidMount() {
+ this.loadItems()
+ }
+
+ loadItems = () => {
+ const storagedKeys = window.app.settings.get("sidebarKeys") ?? defaultSidebarKeys
+ const active = []
+ const lockedIndex = []
+
+ // set current active items
+ storagedKeys.forEach((key) => {
+ if (typeof allItems[key] !== "undefined") {
+ if (allItems[key].locked) {
+ lockedIndex.push(allItems[key].index)
+ }
+ active.push(key)
+ }
+ })
+
+ this.setState({ items: active, lockedIndex })
+ }
+
+ onSave = () => {
+ window.app.settings.set("sidebarKeys", this.state.items)
+ window.app.SidebarController.toogleEdit(false)
+ }
+
+ onDiscard = () => {
+ window.app.SidebarController.toogleEdit(false)
+ }
+
+ onSetDefaults = () => {
+ window.app.settings.set("sidebarKeys", defaultSidebarKeys)
+ this.loadItems()
+ }
+
+ reorder = (list, startIndex, endIndex) => {
+ const result = Array.from(list)
+ const [removed] = result.splice(startIndex, 1)
+ result.splice(endIndex, 0, removed)
+
+ return result
+ }
+
+ onDragEnd = (result) => {
+ if (!result.destination) {
+ return false
+ }
+
+ if (this.state.lockedIndex.includes(result.destination.index)) {
+ return false
+ }
+
+ if (allItems[result.draggableId].locked) {
+ console.warn("Cannot move an locked item")
+ return false
+ }
+
+ const items = this.reorder(this.state.items, result.source.index, result.destination.index)
+
+ this.setState({ items })
+ }
+
+ deleteItem = (key) => {
+ // check if item is locked
+ if (allItems[key].locked) {
+ console.warn("Cannot delete an locked item")
+ return false
+ }
+
+ this.setState({ items: this.state.items.filter((item) => item !== key) })
+ }
+
+ addItem = () => {
+ const keys = []
+
+ // filter by active keys
+ allItemsMap.forEach((item) => {
+ if (!this.state.items.includes(item.id)) {
+ keys.push(item.id)
+ }
+ })
+
+ window.app.DrawerController.open("sidebar_item_selector", Selector, {
+ props: {
+ width: "65%",
+ },
+ componentProps: {
+ items: keys
+ },
+ onDone: (drawer, selectedKeys) => {
+ drawer.close()
+
+ if (Array.isArray(selectedKeys)) {
+ const update = this.state.items ?? []
+
+ selectedKeys.forEach((key) => {
+ if (update.includes(key)) {
+ return false
+ }
+
+ update.push(key)
+ })
+
+ this.setState({ items: update })
+ }
+ },
+ })
+ }
+
+ render() {
+ const grid = 6
+
+ const getItemStyle = (isDragging, draggableStyle, component, isDraggingOver) => ({
+ cursor: component.locked ? "not-allowed" : "grab",
+ userSelect: "none",
+ padding: grid * 2,
+ margin: `0 0 ${grid}px 0`,
+ borderRadius: "6px",
+ transition: "150ms all ease-in-out",
+ width: "100%",
+
+ border: isDraggingOver ? "2px dashed #e0e0e0" : "none",
+
+ color: component.locked ? "rgba(145,145,145,0.6)" : "#000",
+ background: component.locked
+ ? "rgba(145, 145, 145, 0.2)"
+ : isDragging
+ ? "rgba(145, 145, 145, 0.5)"
+ : "transparent",
+ ...draggableStyle,
+ })
+
+ const getListStyle = (isDraggingOver) => ({
+ background: "transparent",
+ transition: "150ms all ease-in-out",
+
+ padding: grid,
+ width: "100%",
+ })
+
+ return (
+
+
+
+ {(droppableProvided, droppableSnapshot) => (
+
+ {this.state.items.map((key, index) => {
+ const itemComponent = allItems[key]
+
+ return (
+
+ {(draggableProvided, draggableSnapshot) => (
+
+ {!allItems[key].locked &&
+ this.deleteItem(key)}
+ className="sidebar_editor_deleteBtn"
+ />
+ }
+ {itemComponent.icon && createIconRender(itemComponent.icon)}
+ {itemComponent.title ?? itemComponent.id}
+
+ )}
+
+ )
+ })}
+ {droppableProvided.placeholder}
+
+ )}
+
+
+
+
+
+ }
+ onClick={this.addItem}
+ />
+
+
+ }
+ type="primary"
+ onClick={this.onSave}
+ >
+ Done
+
+
+
+
+ } >Cancel
+
+
+ Set defaults
+
+
+
+ )
+ }
+}
diff --git a/packages/app/src/layout/sidebar/components/editor/index.less b/packages/app/src/layout/sidebar/components/editor/index.less
new file mode 100644
index 00000000..d6ad8388
--- /dev/null
+++ b/packages/app/src/layout/sidebar/components/editor/index.less
@@ -0,0 +1,14 @@
+.app_sidebar_sider_edit .ant-layout-sider-children{
+ margin-top: 15px!important;
+
+ .app_sidebar_menu_wrapper {
+ opacity: 0;
+ height: 0;
+ overflow: hidden;
+ }
+}
+
+.sidebar_editor_deleteBtn:hover{
+ color: red;
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/sidebar/components/index.js b/packages/app/src/layout/sidebar/components/index.js
new file mode 100644
index 00000000..75ce2055
--- /dev/null
+++ b/packages/app/src/layout/sidebar/components/index.js
@@ -0,0 +1 @@
+export { default as SidebarEditor } from './editor';
\ No newline at end of file
diff --git a/packages/app/src/layout/sidebar/components/selector/index.jsx b/packages/app/src/layout/sidebar/components/selector/index.jsx
new file mode 100644
index 00000000..b778816f
--- /dev/null
+++ b/packages/app/src/layout/sidebar/components/selector/index.jsx
@@ -0,0 +1,76 @@
+import React from "react"
+import { Icons, createIconRender } from "components/Icons"
+import { SelectableList } from "components"
+import { List } from "antd"
+
+import sidebarItems from "schemas/routes.json"
+
+import "./index.less"
+
+const getStoragedKeys = () => {
+ return window.app.settings.get("sidebarKeys") ?? []
+}
+
+const getAllItems = () => {
+ const obj = {}
+
+ sidebarItems.forEach((item) => {
+ obj[item.id] = item
+ })
+
+ return obj
+}
+
+const allItems = getAllItems()
+
+export default class SidebarItemSelector extends React.Component {
+ state = {
+ items: null,
+ }
+
+ componentDidMount = () => {
+ const source = (this.props.items ?? getStoragedKeys() ?? []).map((key) => {
+ return { key }
+ })
+
+ this.setState({ items: source })
+ }
+
+ handleDone = (selectedKeys) => {
+ if (typeof this.props.onDone === "function") {
+ this.props.onDone(selectedKeys)
+ }
+ }
+
+ render() {
+ return (
+
+
+ Select items to add
+
+ {this.state.items && (
+ {
+ const item = allItems[i.key]
+
+ return (
+
+ {createIconRender(item.icon)}
+ {item.title ?? item.id}
+
+ )
+ }}
+ />
+ )}
+
+ )
+ }
+}
diff --git a/packages/app/src/layout/sidebar/components/selector/index.less b/packages/app/src/layout/sidebar/components/selector/index.less
new file mode 100644
index 00000000..a9e1a0d6
--- /dev/null
+++ b/packages/app/src/layout/sidebar/components/selector/index.less
@@ -0,0 +1,4 @@
+.sidebar_selector_item{
+ height: fit-content;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/sidebar/index.jsx b/packages/app/src/layout/sidebar/index.jsx
new file mode 100644
index 00000000..04146229
--- /dev/null
+++ b/packages/app/src/layout/sidebar/index.jsx
@@ -0,0 +1,326 @@
+import React from "react"
+import { Layout, Menu, Avatar } from "antd"
+import classnames from "classnames"
+
+import config from "config"
+import { Icons, createIconRender } from "components/Icons"
+import { sidebarKeys as defaultSidebarItems } from "schemas/defaultSettings"
+import sidebarItems from "schemas/routes.json"
+import { Translation } from "react-i18next"
+
+import { SidebarEditor } from "./components"
+import "./index.less"
+
+const { Sider } = Layout
+
+const onClickHandlers = {
+ settings: (event) => {
+ window.app.openSettings()
+ },
+}
+
+export default class Sidebar extends React.Component {
+ constructor(props) {
+ super(props)
+
+ this.state = {
+ editMode: false,
+ visible: true,
+ loading: true,
+ collapsed: window.app.settings.get("collapseOnLooseFocus") ?? false,
+ pathResolve: {},
+ menus: {},
+ extraItems: {
+ bottom: [],
+ top: [],
+ },
+ }
+
+ this.SidebarController = {
+ toogleVisible: (to) => {
+ this.setState({ visible: to ?? !this.state.visible })
+ },
+ toogleEdit: this.toogleEditMode,
+ isVisible: () => this.state.visible,
+ isEditMode: () => this.state.visible,
+ isCollapsed: () => this.state.collapsed,
+ }
+
+ window.app["SidebarController"] = this.SidebarController
+ window.app.eventBus.on("edit_sidebar", () => this.toogleEditMode())
+ window.app.eventBus.on("settingChanged.sidebar_collapse", (value) => {
+ this.toogleCollapse(value)
+ })
+ }
+
+ collapseDebounce = null
+
+ componentDidMount = () => {
+ this.loadSidebarItems()
+ }
+
+ getStoragedKeys = () => {
+ return window.app.settings.get("sidebarKeys")
+ }
+
+ appendItem = (item = {}) => {
+ const { position } = item
+
+ if (typeof position === "undefined" && typeof this.state.extraItems[position] === "undefined") {
+ console.error("Invalid position")
+ return false
+ }
+
+ const state = this.state.extraItems
+
+ state[position].push(item)
+
+ this.setState({ extraItems: state })
+ }
+
+ loadSidebarItems = () => {
+ const items = {}
+ const itemsMap = []
+
+ // parse all items from schema
+ sidebarItems.forEach((item, index) => {
+ items[item.id] = {
+ ...item,
+ index,
+ content: (
+ <>
+ {createIconRender(item.icon)} {item.title}
+ >
+ ),
+ }
+ })
+
+ // filter undefined to avoid error
+ let keys = (this.getStoragedKeys() ?? defaultSidebarItems).filter((key) => {
+ if (typeof items[key] !== "undefined") {
+ return true
+ }
+ })
+
+ // short items
+ keys.forEach((id, index) => {
+ const item = items[id]
+
+ if (item.locked) {
+ if (item.index !== index) {
+ keys = keys.move(index, item.index)
+
+ //update index
+ window.app.settings.set("sidebarKeys", keys)
+ }
+ }
+ })
+
+ // set items from scoped keys
+ keys.forEach((key, index) => {
+ const item = items[key]
+
+ try {
+ // avoid if item is duplicated
+ if (itemsMap.includes(item)) {
+ return false
+ }
+
+ let valid = true
+
+ if (typeof item.requireState === "object") {
+ const { key, value } = item.requireState
+ //* TODO: check global state
+ }
+
+ // end validation
+ if (!valid) {
+ return false
+ }
+
+ if (typeof item.path !== "undefined") {
+ let resolvers = this.state.pathResolve ?? {}
+ resolvers[item.id] = item.path
+ this.setState({ pathResolve: resolvers })
+ }
+
+ itemsMap.push(item)
+ } catch (error) {
+ return console.log(error)
+ }
+ })
+
+ // update states
+ this.setState({ items, menus: itemsMap, loading: false })
+ }
+
+ renderMenuItems(items) {
+ const handleRenderIcon = (icon) => {
+ if (typeof icon === "undefined") {
+ return null
+ }
+ return createIconRender(icon)
+ }
+
+ return items.map((item) => {
+ if (Array.isArray(item.children)) {
+ return (
+
+
+ {t => t(item.title)}
+
+ }
+ {...item.props}
+ >
+ {this.renderMenuItems(item.children)}
+
+ )
+ }
+
+ return (
+
+
+ {t => t(item.title ?? item.id)}
+
+
+ )
+ })
+ }
+
+ handleClick = (e) => {
+ if (typeof e.key === "undefined") {
+ window.app.eventBus.emit("invalidSidebarKey", e)
+ return false
+ }
+
+ if (typeof onClickHandlers[e.key] === "function") {
+ return onClickHandlers[e.key](e)
+ }
+ if (typeof this.state.pathResolve[e.key] !== "undefined") {
+ return window.app.setLocation(`/${this.state.pathResolve[e.key]}`, 150)
+ }
+
+ return window.app.setLocation(`/${e.key}`, 150)
+ }
+
+ toogleEditMode = (to) => {
+ if (typeof to === "undefined") {
+ to = !this.state.editMode
+ }
+
+ if (to) {
+ window.app.eventBus.emit("clearAllOverlays")
+ } else {
+ if (this.itemsMap !== this.getStoragedKeys()) {
+ this.loadSidebarItems()
+ }
+ }
+
+ this.setState({ editMode: to, collapsed: false })
+ }
+
+ toogleCollapse = (to) => {
+ if (!this.state.editMode) {
+ this.setState({ collapsed: to ?? !this.state.collapsed })
+ }
+ }
+
+ onMouseEnter = () => {
+ if (window.app.settings.is("collapseOnLooseFocus", false)) {
+ return false
+ }
+
+ clearTimeout(this.collapseDebounce)
+ this.collapseDebounce = null
+
+ if (this.state.collapsed) {
+ this.toogleCollapse(false)
+ }
+ }
+
+ handleMouseLeave = () => {
+ if (window.app.settings.is("collapseOnLooseFocus", false)) {
+ return false
+ }
+
+ if (!this.state.collapsed) {
+ this.collapseDebounce = setTimeout(() => { this.toogleCollapse(true) }, window.app.settings.get("autoCollapseDelay") ?? 500)
+ }
+ }
+
+ renderExtraItems = (position) => {
+ return this.state.extraItems[position].map((item = {}) => {
+ if (typeof item.icon !== "undefined") {
+ if (typeof item.props !== "object") {
+ item.props = Object()
+ }
+
+ item.props["icon"] = createIconRender(item.icon)
+ }
+
+ return {item.children}
+ })
+ }
+
+ render() {
+ if (this.state.loading) return null
+
+ const { user } = this.props
+
+ return (
+ this.props.onCollapse()}
+ className={classnames("sidebar", { ["edit_mode"]: this.state.editMode, ["hidden"]: !this.state.visible })}
+ >
+
+
+
+
+
+
+ {this.state.editMode && (
+
+
+
+ )}
+
+ {!this.state.editMode && (
+
+
+ {this.renderMenuItems(this.state.menus)}
+ {this.renderExtraItems("top")}
+
+
+ )}
+
+ {!this.state.editMode && (
+
+
+ }>
+
+ {t => t("Settings")}
+
+
+
+
+
+
+
+ {this.renderExtraItems("bottom")}
+
+
+ )}
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/sidebar/index.less b/packages/app/src/layout/sidebar/index.less
new file mode 100644
index 00000000..67ae8cb2
--- /dev/null
+++ b/packages/app/src/layout/sidebar/index.less
@@ -0,0 +1,154 @@
+@import "theme/vars.less";
+
+// SIDEBAR
+.ant-layout-sider {
+ background : var(--sidebar-background-color) !important;
+ background-color: var(--sidebar-background-color) !important;
+
+ border-radius: 0 @app_sidebar_borderRadius @app_sidebar_borderRadius 0;
+ overflow : hidden;
+ border : 1px solid var(--sidebar-background-color) !important;
+
+ transition: all 150ms ease-in-out;
+
+ &.hidden {
+ flex : 0 !important;
+ min-width : 0 !important;
+ background-color: transparent !important;
+ width : 0 !important;
+ }
+}
+
+.ant-menu-item {
+ color: var(--background-color-contrast);
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ span,
+ p {
+ color: var(--background-color-contrast);
+ }
+}
+
+.ant-menu,
+.ant-menu ul {
+ background : transparent !important;
+ background-color: transparent !important;
+
+ border-right: 0 !important;
+}
+
+.sidebar .ant-layout-sider-children {
+ margin-top : 15px !important;
+ margin-bottom: 15px !important;
+
+ background : transparent !important;
+ background-color: transparent !important;
+
+ user-select : none;
+ --webkit-user-select: none;
+
+ transition : all 150ms ease-in-out;
+ height : 100%;
+ display : flex;
+ flex-direction: column;
+
+ &.edit_mode .ant-layout-sider-children {
+ background : transparent !important;
+ background-color: transparent !important;
+
+ margin-top: 15px !important;
+
+ .app_sidebar_menu_wrapper {
+ opacity : 0;
+ height : 0;
+ overflow: hidden;
+ }
+ }
+}
+
+.app_sidebar_menu_wrapper {
+ transition: all 450ms ease-in-out;
+
+ height: 100%;
+ width : 100%;
+}
+
+.app_sidebar_header {
+ background : transparent !important;
+ background-color: transparent !important;
+
+ user-select : none;
+ --webkit-user-select: none;
+
+ display : flex;
+ flex-direction: column;
+ height : 15%;
+ margin-top : 5%;
+ margin-bottom : 5%;
+}
+
+.app_sidebar_header_logo {
+ user-select : none;
+ --webkit-user-select: none;
+
+ display : flex;
+ align-items : center;
+ justify-content: center;
+
+ img {
+ user-select : none;
+ --webkit-user-select: none;
+
+ width : 80%;
+ max-height: 80px;
+ }
+
+ &.collapsed {
+ img {
+ max-width: 40px;
+ }
+ }
+}
+
+.app_sidebar_menu {
+ background : transparent !important;
+ background-color: transparent !important;
+
+ height : 65%;
+ overflow : overlay;
+ overflow-x: hidden;
+}
+
+.app_sidebar_bottom {
+ position : absolute;
+ bottom : 0;
+ padding-bottom: 30px;
+ z-index : 50;
+ left : 0;
+
+ background : transparent !important;
+ background-color : transparent !important;
+ backdrop-filter : blur(10px);
+ --webkit-backdrop-filter: blur(10px);
+
+ width : 100%;
+ height: fit-content;
+
+ .ant-menu,
+ ul {
+ background : transparent !important;
+ background-color: transparent !important;
+ }
+}
+
+.user_avatar {
+ display : flex;
+ align-items : center;
+ justify-content: center;
+ padding : 0 !important;
+}
\ No newline at end of file
diff --git a/packages/app/src/layout/sidedrawer/index.jsx b/packages/app/src/layout/sidedrawer/index.jsx
new file mode 100644
index 00000000..6de1e851
--- /dev/null
+++ b/packages/app/src/layout/sidedrawer/index.jsx
@@ -0,0 +1,83 @@
+import React from "react"
+import classnames from "classnames"
+
+import "./index.less"
+
+export default class Sidedrawer extends React.Component {
+ constructor(props) {
+ super(props)
+ this.state = {
+ render: null
+ }
+
+ this.SidedrawerController = {
+ render: this._render,
+ close: this._close
+ }
+
+ window.app["SidedrawerController"] = this.SidedrawerController
+ }
+
+ containerRef = React.createRef()
+
+ componentWillUnmount = () => {
+ this.unlistenEscape()
+ }
+
+ _render = (component) => {
+ this.listenEscape()
+ this.setState({ render: component })
+ }
+
+ close = () => {
+ this.unlistenEscape()
+ this.setState({ render: null })
+ }
+
+ listenEscape = () => {
+ document.addEventListener("keydown", this.handleKeyPress)
+ }
+
+ unlistenEscape = () => {
+ document.removeEventListener("keydown", this.handleKeyPress)
+ }
+
+ handleKeyPress = (event) => {
+ // avoid handle keypress when is nothing to render
+ if (!this.state.render) {
+ return false
+ }
+
+ let isEscape = false
+
+ if ("key" in event) {
+ isEscape = event.key === "Escape" || event.key === "Esc"
+ } else {
+ isEscape = event.keyCode === 27
+ }
+
+ if (isEscape) {
+ this.close()
+ }
+ }
+
+ renderComponent = (component) => {
+ if (!component) {
+ return null
+ }
+
+ if (React.isValidElement(component)) {
+ return React.cloneElement(component)
+ }
+
+ return React.createElement(component)
+ }
+
+ render() {
+ return (
+
+ {this.renderComponent(this.state.render)}
+
+ )
+ }
+}
diff --git a/packages/app/src/layout/sidedrawer/index.less b/packages/app/src/layout/sidedrawer/index.less
new file mode 100644
index 00000000..7d7aec2a
--- /dev/null
+++ b/packages/app/src/layout/sidedrawer/index.less
@@ -0,0 +1,21 @@
+@import "theme/vars.less";
+
+.sidedrawer {
+ width: 30vw; // by default
+
+ background-color: var(--sidedrawer-background-color);
+ border-radius: @app_sidebar_borderRadius 0 0 @app_sidebar_borderRadius;
+
+ word-break: break-all;
+
+ transition: all 150ms ease-out;
+
+ padding: 20px;
+ overflow-x: hidden;
+ overflow-y: overlay;
+
+ &.hided {
+ width: 0;
+ padding: 0;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/models/index.js b/packages/app/src/models/index.js
new file mode 100644
index 00000000..b70d767f
--- /dev/null
+++ b/packages/app/src/models/index.js
@@ -0,0 +1,2 @@
+export { default as Session } from "./session"
+export { default as User } from "./user"
\ No newline at end of file
diff --git a/packages/app/src/models/session/index.js b/packages/app/src/models/session/index.js
new file mode 100644
index 00000000..677c0e0a
--- /dev/null
+++ b/packages/app/src/models/session/index.js
@@ -0,0 +1,142 @@
+import cookies from "js-cookie"
+import jwt_decode from "jwt-decode"
+import config from "config"
+import { Storage } from '@capacitor/storage'
+
+export default class Session {
+ static get bridge() {
+ return window.app?.request
+ }
+
+ static capStorage = async (method, value) => {
+ const res = await Storage[method]({ key: this.tokenKey, value })
+ return res.value
+ }
+
+ static tokenKey = config.app?.storage?.token ?? "token"
+
+ static get token() {
+ if (window.app.isAppCapacitor()) {
+ return this.capStorage("get")
+ }
+ return cookies.get(this.tokenKey)
+ }
+
+ static set token(token) {
+ if (window.app.isAppCapacitor()) {
+ return this.capStorage("set", token)
+ }
+ return cookies.set(this.tokenKey, token)
+ }
+
+ static async delToken() {
+ if (window.app.isAppCapacitor()) {
+ return this.capStorage("remove")
+ }
+ return cookies.remove(Session.tokenKey)
+ }
+
+ static async decodedToken() {
+ const token = await this.token
+ return token && jwt_decode(token)
+ }
+
+ //* BASIC HANDLERS
+ login = (payload, callback) => {
+ const body = {
+ username: window.btoa(payload.username),
+ password: window.btoa(payload.password),
+ }
+
+ return this.generateNewToken(body, (err, res) => {
+ if (typeof callback === "function") {
+ callback(err, res)
+ }
+
+ if (!err || res.status === 200) {
+ let token = res.data
+
+ if (typeof token === "object") {
+ token = token.token
+ }
+
+ Session.token = token
+ window.app.eventBus.emit("new_session")
+ }
+ })
+ }
+
+ logout = async () => {
+ await this.destroyCurrentSession()
+ this.forgetLocalSession()
+ }
+
+ //* GENERATORS
+ generateNewToken = async (payload, callback) => {
+ const request = await Session.bridge.post.login(payload, undefined, {
+ parseData: false
+ })
+
+ if (typeof callback === "function") {
+ callback(request.error, request.response)
+ }
+
+ return request
+ }
+
+ //* GETTERS
+ getAllSessions = async () => {
+ return await Session.bridge.get.sessions()
+ }
+
+ getTokenInfo = async () => {
+ const session = await Session.token
+
+ return await Session.bridge.post.validateSession({ session })
+ }
+
+ getCurrentSession = async () => {
+ return await Session.bridge.get.currentSession()
+ }
+
+ isCurrentTokenValid = async () => {
+ const health = await this.getTokenInfo()
+
+ return health.valid
+ }
+
+ forgetLocalSession = () => {
+ return Session.delToken()
+ }
+
+ destroyAllSessions = async () => {
+ const session = await Session.decodedToken()
+
+ if (!session) {
+ return false
+ }
+
+ const result = await Session.bridge.delete.sessions({ user_id: session.user_id })
+ this.forgetLocalSession()
+ window.app.eventBus.emit("destroyed_session")
+
+ return result
+ }
+
+ destroyCurrentSession = async () => {
+ const token = await Session.token
+ const session = await Session.decodedToken()
+
+ if (!session || !token) {
+ return false
+ }
+
+ const result = await Session.bridge.delete.session({ user_id: session.user_id, token: token })
+ this.forgetLocalSession()
+ window.app.eventBus.emit("destroyed_session")
+
+ return result
+ }
+
+ logout = this.destroyCurrentSession
+}
\ No newline at end of file
diff --git a/packages/app/src/models/user/index.js b/packages/app/src/models/user/index.js
new file mode 100644
index 00000000..dda14f57
--- /dev/null
+++ b/packages/app/src/models/user/index.js
@@ -0,0 +1,79 @@
+import Session from "../session"
+
+export default class User {
+ static get bridge() {
+ return window.app?.request
+ }
+
+ static async data() {
+ const token = await Session.decodedToken()
+
+ if (!token || !User.bridge) {
+ return false
+ }
+
+ return User.bridge.get.user(undefined, { username: token.username, _id: token.user_id })
+ }
+
+ static async roles() {
+ const token = await Session.decodedToken()
+
+ if (!token || !User.bridge) {
+ return false
+ }
+
+ return User.bridge.get.userRoles(undefined, { username: token.username })
+ }
+
+ static async hasRole(role) {
+ const roles = await User.roles()
+
+ if (!roles) {
+ return false
+ }
+
+ return Array.isArray(roles) && roles.includes(role)
+ }
+
+ static async selfUserId() {
+ const token = await Session.decodedToken()
+
+ if (!token) {
+ return false
+ }
+
+ return token.user_id
+ }
+
+ getAssignedWorkorders = async () => {
+ const token = await Session.decodedToken()
+
+ if (!token || !User.bridge) {
+ return false
+ }
+
+ return User.bridge.get.workorders({ username: token.username })
+ }
+
+ getData = async (payload, callback) => {
+ const request = await User.bridge.get.user(undefined, { username: payload.username, _id: payload.user_id }, {
+ parseData: false
+ })
+
+ if (typeof callback === "function") {
+ callback(request.error, request.response)
+ }
+
+ return request.response.data
+ }
+
+ hasAdmin = async () => {
+ const roles = await User.roles()
+
+ if (!roles) {
+ return false
+ }
+
+ return Array.isArray(roles) && roles.includes("admin")
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/account/components/index.js b/packages/app/src/pages/account/components/index.js
new file mode 100644
index 00000000..79765944
--- /dev/null
+++ b/packages/app/src/pages/account/components/index.js
@@ -0,0 +1,2 @@
+export { default as SessionsView } from './sessionsView'
+export { default as StatisticsView } from './statisticsView'
\ No newline at end of file
diff --git a/packages/app/src/pages/account/components/sessionsView/index.jsx b/packages/app/src/pages/account/components/sessionsView/index.jsx
new file mode 100644
index 00000000..e6c33bcb
--- /dev/null
+++ b/packages/app/src/pages/account/components/sessionsView/index.jsx
@@ -0,0 +1,114 @@
+import React from "react"
+import * as antd from "antd"
+import { Skeleton } from "components"
+import { Icons } from "components/Icons"
+import { Session } from "models"
+
+import "./index.less"
+
+const SessionsList = (props) => {
+ const sessions = props.sessions.map((session) => {
+ const header = (
+
+
+
+
+
{session.session_uuid}
+
{props.current === session.session_uuid ?
Current : ""}
+
+ )
+
+ const renderDate = () => {
+ const dateNumber = Number(session.date)
+
+ if (dateNumber) {
+ return new Date(dateNumber).toString()
+ }
+ return session.date
+ }
+
+ return (
+
+
+
+
+ {renderDate()}
+
+
+
+ {session.location}
+
+
+
+ )
+ })
+
+ if (!props.sessions || !Array.isArray(props.sessions)) {
+ return
+
+ Cannot find any valid sessions
+
+
+ }
+
+ return
+}
+
+export default class SessionsView extends React.Component {
+ state = {
+ currentSessionUUID: null,
+ }
+
+ componentDidMount = async () => {
+ const currentSession = await Session.decodedToken()
+ this.setState({ currentSessionUUID: currentSession?.session_uuid })
+ }
+
+ signOutAll = () => {
+ antd.Modal.warning({
+ title: "Caution",
+ content: "This action will cause all sessions to be closed, you will have to log in again.",
+ onOk: () => {
+ if (typeof this.props.handleSignOutAll === "function") {
+ this.props.handleSignOutAll()
+ } else {
+ antd.message.error("Sign out all sessions failed")
+ console.error("handleSignOutAll is not a function")
+ }
+ },
+ okCancel: true,
+ })
+ }
+
+ render() {
+ const { sessions } = this.props
+
+ if (!sessions) {
+ return
+ }
+
+ return (
+
+
+
+
All Sessions
+
+
+ {sessions && (
+
+ Destroy all sessions
+
+ )}
+
+
+
+
+
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/account/components/sessionsView/index.less b/packages/app/src/pages/account/components/sessionsView/index.less
new file mode 100644
index 00000000..99378dd8
--- /dev/null
+++ b/packages/app/src/pages/account/components/sessionsView/index.less
@@ -0,0 +1,52 @@
+.sessions_wrapper {
+ .ant-collapse-borderless {
+ background-color: transparent !important;
+ }
+
+ .header {
+ h1,
+ h2,
+ h3 {
+ margin: 0;
+ }
+
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ > div {
+ margin-bottom: 10px;
+ }
+}
+
+.session_entry {
+ display: flex;
+ flex-direction: column;
+
+ background: transparent;
+ margin-bottom: 10px;
+
+ border: 1px solid #ccc !important;
+ border-radius: 12px !important;
+
+ .session_entry_info {
+ > div {
+ padding: 4px 40px;
+ }
+ }
+ .ant-collapse-header {
+ display: flex;
+ align-items: center;
+ }
+}
+
+.session_header {
+ display: flex;
+ flex-direction: row;
+
+ > div {
+ padding: 0 10px;
+ }
+}
diff --git a/packages/app/src/pages/account/components/statisticsView/index.jsx b/packages/app/src/pages/account/components/statisticsView/index.jsx
new file mode 100644
index 00000000..e8eb1114
--- /dev/null
+++ b/packages/app/src/pages/account/components/statisticsView/index.jsx
@@ -0,0 +1,17 @@
+import React from "react"
+
+export default class StatisticsView extends React.Component {
+ state = {
+ statistics: null
+ }
+
+ componentDidMount = async () => {
+
+ }
+
+ render() {
+ return
+
+
+ }
+}
diff --git a/packages/app/src/pages/account/index.jsx b/packages/app/src/pages/account/index.jsx
new file mode 100644
index 00000000..51619be7
--- /dev/null
+++ b/packages/app/src/pages/account/index.jsx
@@ -0,0 +1,86 @@
+import React from "react"
+import * as antd from "antd"
+import { Translation } from "react-i18next"
+
+import { Icons } from "components/Icons"
+import { Skeleton, PostsFeed } from "components"
+import { Session, User } from "models"
+
+import "./index.less"
+
+export default class Account extends React.Component {
+ static bindApp = ["userController", "sessionController"]
+
+ state = {
+ isSelf: false,
+ user: null,
+ sessions: null
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ const token = await Session.decodedToken()
+ const location = window.app.history.location
+ const query = new URLSearchParams(location.search)
+
+ const requestedUser = location.state?.username ?? query.get("username") ?? token?.username
+ let state = this.state
+
+ if (requestedUser != null) {
+ if (token.username === requestedUser) {
+ state.isSelf = true
+ state.sessions = await this.props.contexts.app.sessionController.getAllSessions()
+ }
+
+ state.user = await this.props.contexts.app.userController.getData({ username: requestedUser })
+ }
+
+ state.hasAdmin = await User.hasRole("admin")
+
+ this.setState(state)
+ }
+
+ render() {
+ const user = this.state.user
+
+ if (!user) {
+ return
+ }
+
+ return (
+
+
+
+
+
+ {Boolean(user.fullName) ?
+ <>
+
{user.fullName}
+ @{user.username}#{user._id}
+ > :
+ <>
+ @{user.username}
+ #{user._id}
+ >
+ }
+
+
+
+
+ {user.badges.map((role, index) => {
+ return
{role}
+ })}
+
+
+
+
+
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/account/index.less b/packages/app/src/pages/account/index.less
new file mode 100644
index 00000000..5a6d7d90
--- /dev/null
+++ b/packages/app/src/pages/account/index.less
@@ -0,0 +1,76 @@
+@borderColor : #dddddd;
+@borderRadius: 12px;
+
+.account_wrapper {
+ .card {
+ display : flex;
+ flex-direction: column;
+ color : var(--background-color-contrast);
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ span {
+ color: var(--background-color-contrast);
+ }
+
+ .header {
+ position : relative;
+ display : inline-flex;
+ align-items: center;
+
+ z-index: 15;
+ width : 100%;
+ padding: 12px;
+
+ font-family: "Roboto Mono", monospace;
+
+ color : var(--background-color-contrast);
+ border : 1px solid var(--border-color);
+ border-radius: @borderRadius;
+
+ word-break: break-all;
+
+ img {
+ width : 70px;
+ height: 70px;
+ }
+
+ h1 {
+ margin : 0;
+ font-size: 35px;
+
+ span {
+ font-size: 12px;
+ }
+ }
+ }
+
+ .extension {
+ position: relative;
+ display : inline-flex;
+
+ top : -10px;
+ width : 100%;
+ padding: 19px 10px 10px 10px;
+
+ border-top : 0;
+ border-right: 0;
+
+ border-style: solid;
+ border-width: 1px;
+
+ border-color : var(--border-color);
+ border-top-color: transparent;
+
+ border-radius: 0 0 @borderRadius @borderRadius;
+ }
+ }
+
+ >div {
+ margin-bottom: 10px;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/changelogs/index.jsx b/packages/app/src/pages/changelogs/index.jsx
new file mode 100644
index 00000000..fc62d919
--- /dev/null
+++ b/packages/app/src/pages/changelogs/index.jsx
@@ -0,0 +1,9 @@
+import React from "react"
+
+export default () => {
+ // TODO: Fetch API Release notes
+
+ return
+
Changelog
+
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/explore/index.jsx b/packages/app/src/pages/explore/index.jsx
new file mode 100644
index 00000000..14298e2b
--- /dev/null
+++ b/packages/app/src/pages/explore/index.jsx
@@ -0,0 +1,15 @@
+import React from "react"
+import { PostCreator, PostsFeed } from "components"
+
+import "./index.less"
+
+export default class PostsExplorer extends React.Component {
+ render() {
+ return
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/explore/index.less b/packages/app/src/pages/explore/index.less
new file mode 100644
index 00000000..7a9b0cdd
--- /dev/null
+++ b/packages/app/src/pages/explore/index.less
@@ -0,0 +1,22 @@
+.explore {
+ display : flex;
+ flex-direction : column;
+ align-items : center;
+ justify-content: center;
+
+ width: 100%;
+
+ .header {
+ display : flex;
+ flex-direction : column;
+ align-items : center;
+ justify-content: center;
+
+ width : 100%;
+ max-width: 40vw;
+ }
+
+ >div {
+ margin-bottom: 15px;
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/licenses/index.jsx b/packages/app/src/pages/licenses/index.jsx
new file mode 100644
index 00000000..7f223228
--- /dev/null
+++ b/packages/app/src/pages/licenses/index.jsx
@@ -0,0 +1,34 @@
+import React from "react"
+import config from "config"
+
+import "./index.less"
+
+export default () => {
+ const [licenses, setLicenses] = React.useState([])
+
+ const loadLicenses = async () => {
+ const deps = Object.entries(config.package.dependencies).reduce((acc, [name, version]) => {
+ acc.push({
+ name,
+ version,
+ })
+
+ return acc
+ }, [])
+
+ setLicenses(deps)
+ }
+
+ React.useEffect(() => {
+ loadLicenses()
+ }, [])
+
+ return
+ {licenses.map((license) => {
+ return
+
{license.name}
+
{license.version}
+
+ })}
+
+}
diff --git a/packages/app/src/pages/licenses/index.less b/packages/app/src/pages/licenses/index.less
new file mode 100644
index 00000000..0f86c2dc
--- /dev/null
+++ b/packages/app/src/pages/licenses/index.less
@@ -0,0 +1,9 @@
+.tpd_list {
+ display: inline-flex;
+ flex-direction: column;
+ overflow-y: scroll!important;
+
+ .item {
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/login/index.jsx b/packages/app/src/pages/login/index.jsx
new file mode 100644
index 00000000..05313e36
--- /dev/null
+++ b/packages/app/src/pages/login/index.jsx
@@ -0,0 +1,145 @@
+import React from "react"
+import * as antd from "antd"
+import { FormGenerator } from "components"
+import { Icons } from "components/Icons"
+
+import config from "config"
+
+import "./index.less"
+
+const formInstance = [
+ {
+ id: "username",
+ element: {
+ component: "Input",
+ icon: "User",
+ placeholder: "Username",
+ props: {
+ autocorrect: "off",
+ autocapitalize: "none",
+ className: "login-form-username",
+ },
+ },
+ item: {
+ hasFeedback: true,
+ rules: [
+ {
+ required: true,
+ message: 'Please input your Username!',
+ },
+ ],
+ }
+ },
+ {
+ id: "password",
+ element: {
+ component: "Input",
+ icon: "Lock",
+ placeholder: "Password",
+ props: {
+ type: "password"
+ }
+ },
+ item: {
+ hasFeedback: true,
+ rules: [
+ {
+ required: true,
+ message: 'Please input your Password!',
+ },
+ ],
+ }
+ },
+ {
+ id: "login_btn",
+ withValidation: true,
+ element: {
+ component: "Button",
+ props: {
+ icon: "User",
+ children: "Login",
+ type: "primary",
+ htmlType: "submit"
+ }
+ }
+ },
+]
+
+export default class Login extends React.Component {
+ static bindApp = ["sessionController"]
+
+ static pageStatement = {
+ bottomBarAllowed: false
+ }
+
+ handleFinish = async (values, ctx) => {
+ ctx.toogleValidation(true)
+
+ const payload = {
+ username: values.username,
+ password: values.password,
+ allowRegenerate: values.allowRegenerate,
+ }
+
+ this.props.contexts.app.sessionController.login(payload, (error, response) => {
+ ctx.toogleValidation(false)
+ ctx.clearErrors()
+
+ if (error) {
+ ctx.shake("all")
+ return ctx.error("result", error)
+ } else {
+ if (response.status === 200) {
+ this.onDone()
+ }
+ }
+ })
+ }
+
+ onDone = () => {
+ if (typeof this.props.onDone === "function") {
+ this.props.onDone()
+ }
+ }
+
+ componentWillUnmount() {
+ window.app.SidebarController.toogleVisible(true)
+ window.app.HeaderController.toogleVisible(true)
+ }
+
+ componentDidMount() {
+ const sidebarVisible = window.app.SidebarController.isVisible()
+ const headerVisible = window.app.HeaderController.isVisible()
+
+ if (sidebarVisible) {
+ window.app.SidebarController.toogleVisible(false)
+ }
+
+ if (headerVisible) {
+ window.app.HeaderController.toogleVisible(false)
+ }
+ }
+
+ render() {
+ return (
+
+ {this.props.session &&
+
You already have a valid session.
+
+ @{this.props.session.username}
+
+
window.app.setLocation(config.app?.mainPath ?? "/main")} >Go to main
+
}
+
+
+
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/login/index.less b/packages/app/src/pages/login/index.less
new file mode 100644
index 00000000..30f1dad9
--- /dev/null
+++ b/packages/app/src/pages/login/index.less
@@ -0,0 +1,55 @@
+.app_login {
+ height: 100vh;
+ width: 100vw;
+
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ > div {
+ margin-bottom: 20px;
+ }
+}
+
+.login-form {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+.login-form-username {
+ font-size: 20px!important;
+
+ input {
+ padding: 20px!important;
+ font-size: 20px!important;
+ }
+}
+
+.session_available {
+ width: fit-content;
+ height: fit-content;
+
+ padding: 20px;
+
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ border: 1px solid #e5e5e5;
+ border-radius: 8px;
+
+ .session_card {
+ width: fit-content;
+ height: fit-content;
+
+ margin: 10px;
+ padding: 5px 10px;
+
+ border: 1px solid #e5e5e5;
+ border-radius: 8px;
+ }
+}
diff --git a/packages/app/src/pages/main/index.jsx b/packages/app/src/pages/main/index.jsx
new file mode 100644
index 00000000..62e4a297
--- /dev/null
+++ b/packages/app/src/pages/main/index.jsx
@@ -0,0 +1,58 @@
+import React from "react"
+import * as antd from "antd"
+import { Icons } from "components/Icons"
+
+import { AppSearcher, ServerStatus, Clock, } from "components"
+import { Translation } from "react-i18next"
+
+import "./index.less"
+
+// TODO: Customizable main menu
+export default class Main extends React.Component {
+ componentDidMount = async () => {
+ if (!window.isMobile && window.app?.HeaderController?.isVisible()) {
+ window.app.HeaderController.toogleVisible(false)
+ }
+ }
+
+ componentWillUnmount() {
+ if (!window.isMobile && !window.app?.HeaderController?.isVisible()) {
+ window.app.HeaderController.toogleVisible(true)
+ }
+ }
+
+ render() {
+ const user = this.props.user ?? {}
+
+ return (
+
+
+
+
+
+
+
+
+ {
+ (t) => {t("main_welcome")} {user.fullName ?? user.username ?? "Guest"}
+ }
+
+ {!window.isMobile &&
+
+
}
+
+
+
+ {!window.isMobile &&
}
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/main/index.less b/packages/app/src/pages/main/index.less
new file mode 100644
index 00000000..3e23b7de
--- /dev/null
+++ b/packages/app/src/pages/main/index.less
@@ -0,0 +1,51 @@
+.dashboard {
+ padding: 20px;
+ width: 100%;
+ height: 100%;
+
+ h1 {
+ font-size: 28px;
+ margin: 0;
+ }
+
+ > div {
+ margin-bottom: 20px;
+ }
+
+ .header {
+ display: flex;
+
+ > div {
+ margin-right: 20px;
+ }
+ }
+
+ .content {
+ > div {
+ margin-left: 20px;
+ }
+ }
+
+ .quick_actions {
+ display: flex;
+ flex-wrap: wrap;
+
+ > div {
+ margin: 6px 10px;
+ }
+ }
+
+ .widgets {
+ display: flex;
+ flex-direction: column;
+
+ .widget {
+ //background-color: var(--background-color-accent);
+ //padding: 10px;
+ }
+
+ > div {
+ margin-bottom: 20px;
+ }
+ }
+}
diff --git a/packages/app/src/pages/streams/index.jsx b/packages/app/src/pages/streams/index.jsx
new file mode 100644
index 00000000..59110796
--- /dev/null
+++ b/packages/app/src/pages/streams/index.jsx
@@ -0,0 +1,57 @@
+import React from 'react'
+import axios from "axios"
+import * as antd from "antd"
+import { SelectableList, ActionsBar } from "components"
+
+export default class Streams extends React.Component {
+ state = {
+ list: [],
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ await this.updateStreamsList()
+ }
+
+ updateStreamsList = async () => {
+ const streams = await this.api.get.streams().catch(error => {
+ console.error(error)
+ antd.message.error(error)
+
+ return false
+ })
+
+ this.setState({ list: streams })
+ }
+
+
+ onClickItem = (item) => {
+ window.app.setLocation(`/streams/viewer?key=${item}`)
+ }
+
+ renderListItem = (stream) => {
+ stream.StreamPath = stream.StreamPath.replace(/^\/live\//, "")
+
+ return this.onClickItem(stream.StreamPath)}>
+
@{stream.StreamPath} #{stream.id}
+
+ }
+
+ render() {
+ return
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/streams/viewer/index.jsx b/packages/app/src/pages/streams/viewer/index.jsx
new file mode 100644
index 00000000..815b3c27
--- /dev/null
+++ b/packages/app/src/pages/streams/viewer/index.jsx
@@ -0,0 +1,99 @@
+import React from 'react'
+import * as antd from "antd"
+import Plyr from 'plyr'
+import Hls from 'hls.js'
+import mpegts from 'mpegts.js'
+
+import "plyr/dist/plyr.css"
+
+const streamsSource = "http://media.ragestudio.net/live"
+
+export default class StreamViewer extends React.Component {
+ state = {
+ player: null,
+ streamKey: null,
+ streamSource: null,
+ loadedProtocol: "flv",
+ protocolInstance: null,
+ defaultOptions: undefined,
+ }
+
+ videoPlayerRef = React.createRef()
+
+ componentDidMount = async () => {
+ const query = new URLSearchParams(window.location.search)
+ const requested = query.get("key")
+
+ const source = `${streamsSource}/${requested}`
+ const player = new Plyr('#player')
+
+ await this.setState({
+ player,
+ streamKey: requested,
+ streamSource: source,
+ })
+
+ await this.loadWithProtocol[this.state.loadedProtocol]()
+ }
+
+ updateQuality = (newQuality) => {
+ if (loadedProtocol === "hls") {
+ this.state.protocolInstance.levels.forEach((level, levelIndex) => {
+ if (level.height === newQuality) {
+ console.log("Found quality match with " + newQuality);
+ this.state.protocolInstance.currentLevel = levelIndex;
+ }
+ })
+ }
+ else {
+ console.error("Unsupported protocol")
+ }
+ }
+
+ switchProtocol = (protocol) => {
+ if (typeof this.state.protocolInstance.destroy === "function") {
+ this.state.protocolInstance.destroy()
+ }
+
+ this.setState({ protocolInstance: null })
+
+ console.log("Switching to " + protocol)
+ this.loadWithProtocol[protocol]()
+ }
+
+ loadWithProtocol = {
+ hls: () => {
+ const source = `${this.state.streamSource}.m3u8`
+ const hls = new Hls()
+
+ hls.loadSource(source)
+ hls.attachMedia(this.videoPlayerRef.current)
+
+ this.setState({ protocolInstance: hls, loadedProtocol: "hls" })
+ },
+ flv: () => {
+ const source = `${this.state.streamSource}.flv`
+
+ const instance = mpegts.createPlayer({ type: 'flv', url: source, isLive: true })
+
+ instance.attachMediaElement(this.videoPlayerRef.current)
+ instance.load()
+ instance.play()
+
+ this.setState({ protocolInstance: instance, loadedProtocol: "flv" })
+ },
+ }
+
+ render() {
+ return
+
this.switchProtocol(value)}
+ value={this.state.loadedProtocol}
+ >
+ HLS
+ FLV
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/pages/users/index.jsx b/packages/app/src/pages/users/index.jsx
new file mode 100644
index 00000000..503ded1a
--- /dev/null
+++ b/packages/app/src/pages/users/index.jsx
@@ -0,0 +1,93 @@
+import React from "react"
+import * as antd from "antd"
+import { Icons } from "components/icons"
+import { ActionsBar, SelectableList } from "components"
+
+import "./index.less"
+
+export default class Users extends React.Component {
+ state = {
+ data: null,
+ selectionEnabled: false,
+ }
+
+ api = window.app.request
+
+ componentDidMount = async () => {
+ await this.loadData()
+ }
+
+ loadData = async () => {
+ this.setState({ data: null })
+ const data = await this.api.get.users()
+ this.setState({ data })
+ }
+
+ toogleSelection = (to) => {
+ this.setState({ selectionEnabled: to ?? !this.state.selectionEnabled })
+ }
+
+ openUser(username) {
+ if (this.state.selectionEnabled) {
+ return false
+ }
+
+ window.app.setLocation(`/account`, { username })
+ }
+
+ renderRoles(roles) {
+ return roles.map((role) => {
+ return {role}
+ })
+ }
+
+ renderItem = (item) => {
+ return (
+ this.openUser(item.username)}
+ className="user_item"
+ >
+
+
+
+
+
{item.fullName ?? item.username}
+
+
+
#{item._id}
+
+
+
{this.renderRoles(item.roles)}
+
+
+ )
+ }
+
+ render() {
+ return (
+
+
+
+
+
:
} type={this.state.selectionEnabled ? "default" : "primary"} onClick={() => this.toogleSelection()}>
+ {this.state.selectionEnabled ? "Done" : "Select"}
+
+
+
+
+ {!this.state.data ?
:
+
}
+
+
+ )
+ }
+}
diff --git a/packages/app/src/pages/users/index.less b/packages/app/src/pages/users/index.less
new file mode 100644
index 00000000..86403e0b
--- /dev/null
+++ b/packages/app/src/pages/users/index.less
@@ -0,0 +1,52 @@
+.users_list {
+ display: flex;
+ flex-direction: column;
+
+ > div {
+ margin-bottom: 20px;
+ }
+
+ .selectableList_item {
+ padding: 0;
+ }
+}
+
+.user_item {
+ display: flex;
+
+ > div {
+ margin: 7px;
+ }
+
+ .title {
+ width: 100%;
+ display: flex;
+
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+
+ h1 {
+ cursor: text;
+ margin: 0;
+ font-size: 16px;
+ user-select: all;
+ }
+ h3 {
+ font-family: "Roboto Mono", monospace !important;
+ cursor: text;
+ margin: 0;
+ font-size: 13px;
+ user-select: all;
+ }
+
+ .line {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ > div {
+ margin-right: 8px;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/theme/fonts.css b/packages/app/src/theme/fonts.css
new file mode 100644
index 00000000..77c1b20a
--- /dev/null
+++ b/packages/app/src/theme/fonts.css
@@ -0,0 +1,12 @@
+@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@200;300;400;500;700&display=swap');
+@import url('https://fonts.googleapis.com/css?family=Alata&display=swap');
+@import url('https://fonts.googleapis.com/css?family=Poppins:300,300i,500,500i,700');
+@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap');
+@import url('https://fonts.googleapis.com/css?family=Kulim+Park&display=swap');
+@import url('https://fonts.googleapis.com/css?family=Nunito&display=swap');
+@import url("https://fonts.googleapis.com/css?family=Manrope:300,400,500,600,700&display=swap&subset=latin-ext");
+@import url('https://fonts.googleapis.com/css2?family=Varela+Round&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=Space+Mono&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,300;0,400;1,300;1,400&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=Recursive:wght@300;400;500;600;700;800;900&display=swap');
\ No newline at end of file
diff --git a/packages/app/src/theme/index.less b/packages/app/src/theme/index.less
new file mode 100644
index 00000000..7f6143cc
--- /dev/null
+++ b/packages/app/src/theme/index.less
@@ -0,0 +1,267 @@
+@import "antd/dist/antd.variable.less";
+@import "theme/vars.less";
+@import "theme/fonts.css";
+
+::-webkit-scrollbar {
+ display: none;
+
+ width : 0;
+ height : 0;
+ z-index: 0;
+}
+
+::-webkit-scrollbar-thumb {
+ position: absolute;
+ z-index : 200;
+
+ height : 6px;
+ margin : 5px 10px 5px 5px;
+ transition: all 200ms ease-in-out;
+
+ border : 4px solid rgba(0, 0, 0, 0);
+ background-color: rgba(0, 0, 0, 0.15);
+ background-clip : padding-box;
+
+ -webkit-border-radius: 7px;
+}
+
+::-webkit-scrollbar-button {
+ width : 0;
+ height : 0;
+ display: none;
+}
+
+::-webkit-scrollbar-corner {
+ background-color: transparent;
+}
+
+html {
+ overflow : hidden;
+ height : 100%;
+ -webkit-overflow-scrolling: touch;
+
+ background-color: var(--background-color-primary) !important;
+
+ svg {
+ margin-right : 10px;
+ vertical-align: -0.125em;
+ }
+}
+
+body {
+ overflow : hidden;
+ -webkit-overflow-scrolling: touch;
+ -webkit-app-region : no-drag;
+
+ height: 100%;
+
+ user-select : none;
+ --webkit-user-select: none;
+
+ scroll-behavior: smooth;
+ text-rendering : optimizeLegibility !important;
+
+ background-color: var(--background-color-primary) !important;
+ font-family : var(--fontFamily);
+}
+
+#root {
+ -webkit-overflow-scrolling: touch;
+
+ position: fixed;
+ overflow: hidden;
+
+ width : 100%;
+ height: 100%;
+
+ background-color: var(--background-color-primary) !important;
+}
+
+#nprogress {
+ position: absolute;
+ top : 0;
+ width : 100vw;
+
+ .bar {
+ height : 2px;
+ background: #48acf0;
+ }
+}
+
+.ant-layout,
+.content_layout,
+.app_layout {
+ background : var(--background-color-primary) !important;
+ background-color: var(--background-color-primary) !important;
+
+ position : relative;
+ -webkit-overflow-scrolling: touch;
+
+ width : 100%;
+ height : 100%;
+ max-height: 100vh;
+
+ overflow : hidden;
+ transition: all 150ms ease-in-out;
+
+ ::-webkit-scrollbar {
+ display : block;
+ position: absolute;
+
+ width : 14px;
+ height : 18px;
+ z-index : 200;
+ transition: all 200ms ease-in-out;
+ }
+
+ &.mobile {
+ //padding-top: 20px;
+
+ ::-webkit-scrollbar {
+ display: none !important;
+ width : 0;
+ height : 0;
+ z-index: 0;
+ }
+ }
+}
+
+.layout_page {
+ position : relative;
+ -webkit-overflow-scrolling: touch;
+
+ height: 100%;
+
+ margin: 10px 10px 30px 16px;
+
+ overflow-x: hidden;
+ overflow-y: overlay;
+}
+
+@media (max-width: 768px) {
+ .layout_page {
+ padding: 10px;
+ margin : 0;
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ span,
+ p {
+ user-select : none;
+ -webkit-user-select: none;
+ }
+}
+
+.fade-transverse-active {
+ transition: all 250ms;
+ height : fit-content;
+ width : 100%;
+}
+
+.fade-transverse-enter {
+ opacity : 0;
+ transform: translateX(-30px);
+}
+
+.fade-transverse-leave {
+ opacity : 0;
+ transform: translateX(30px);
+}
+
+.fade-scale-leave-active,
+.fade-scale-enter-active {
+ transition: all 0.3s;
+}
+
+.fade-scale-enter {
+ opacity : 0;
+ transform: scale(1.2);
+}
+
+.fade-scale-leave {
+ opacity : 0;
+ transform: scale(0.8);
+}
+
+.fade-opacity-active {
+ transition: all 250ms;
+ opacity : 1;
+}
+
+.fade-opacity-leave {
+ opacity: 0;
+}
+
+.fade-opacity-enter {
+ opacity: 1;
+}
+
+.app_initialization {
+ width : 100vw;
+ height : 100vh;
+ padding: 50px;
+
+ display : flex;
+ flex-direction : column;
+ justify-content: center;
+ align-items : center;
+
+ >div {
+ width : 100%;
+ height: fit-content;
+
+ display : flex;
+ flex-direction : column;
+ justify-content: center;
+ align-items : center;
+
+ margin-bottom: 50px;
+ }
+}
+
+.app_crash_wrapper {
+ width : 100vw;
+ height : 100vh;
+ display : flex;
+ flex-direction : column;
+ justify-content: center;
+ align-items : center;
+}
+
+// Fixments
+.ant-btn {
+ display : flex;
+ align-items : center;
+ justify-content: center;
+
+ user-select : none;
+ --webkit-user-select: none;
+}
+
+.ant-result-extra {
+ display : flex;
+ align-items : center;
+ justify-content: center;
+}
+
+.ant-modal-confirm-btns {
+ display: flex;
+}
+
+.ant-message {
+ svg {
+ margin: 0;
+ }
+}
+
+*:not(input):not(textarea) {
+ -webkit-user-select : none;
+ /* disable selection/Copy of UIWebView */
+ -webkit-touch-callout: none;
+ /* disable the IOS popup when long-press on a link */
+}
\ No newline at end of file
diff --git a/packages/app/src/theme/variations/dark.less b/packages/app/src/theme/variations/dark.less
new file mode 100644
index 00000000..fc07b936
--- /dev/null
+++ b/packages/app/src/theme/variations/dark.less
@@ -0,0 +1,78 @@
+div {
+ color: var(--text-color);
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: var(--header-text-color);
+}
+
+a, p {
+ color: var(--text-color);
+}
+
+i {
+ color: var(--text-color);
+}
+
+span:not(.ant-tag) {
+ color: var(--text-color);
+}
+
+svg:not(.ant-tag *) {
+ color: var(--svg-color);
+}
+
+input, .ant-input-affix-wrapper, .ant-input {
+ color: var(--text-color)!important;
+ background-color: var(--background-color-accent);
+}
+
+input:disabled{
+ background-color: var(--background_disabled);
+}
+
+// MODAL
+.ant-modal-content {
+ background-color: var(--background-color-accent)!important;
+}
+
+// TABLE
+tr {
+ background-color: var(--background-color-accent)!important;
+}
+
+.ant-table, .ant-table-content, .ant-table-thead, .ant-table-cell {
+ background-color: var(--background-color-accent);
+}
+
+.ant-table-thead > tr > th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before {
+ background-color: var(--background-color-contrast);
+}
+
+// MENU
+.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
+ background-color: var(--background-color-primary);
+}
+
+// BUTTONS
+.ant-btn:not(.ant-btn-link) {
+ background-color: var(--button-background-color);
+}
+
+.ant-btn span{
+ color: var(--button-text-color)!important;
+}
+
+.ant-btn svg {
+ color: var(--button-text-color)!important;
+}
+
+// DRAWER
+.ant-page-header span {
+ color: var(--text-color);
+}
+
+.ant-drawer-content {
+ background: var(--background-color-primary);
+ background-color: var(--background-color-primary);
+}
\ No newline at end of file
diff --git a/packages/app/src/theme/vars.less b/packages/app/src/theme/vars.less
new file mode 100644
index 00000000..8532cd78
--- /dev/null
+++ b/packages/app/src/theme/vars.less
@@ -0,0 +1,17 @@
+//* Now this only works as an fallback for unset dynamic theme values
+
+// borders & radius
+@app_sidebar_borderRadius: 18px;
+
+// SIZES
+@app_header_height: 5vh;
+@fixedHeader100VH: @app_header_height - 100vh;
+
+@app_menuItemSize: 100px;
+@app_menuItemIconSize: 30px;
+@app_menuItemTextSize: 12px;
+
+// TRANSITIONS
+@transition-ease-in: all 0.3s ease-out;
+@transition-ease-out: all 0.3s ease-out;
+@transition-ease-inout: all 150ms ease-in-out;
\ No newline at end of file
diff --git a/packages/app/src/utils/cursorPosition/index.js b/packages/app/src/utils/cursorPosition/index.js
new file mode 100644
index 00000000..f56808a8
--- /dev/null
+++ b/packages/app/src/utils/cursorPosition/index.js
@@ -0,0 +1 @@
+export default (event) => event.touches ? event.touches[0].clientX : event.clientX
\ No newline at end of file
diff --git a/packages/app/src/utils/findChildById/index.js b/packages/app/src/utils/findChildById/index.js
new file mode 100644
index 00000000..3fc98611
--- /dev/null
+++ b/packages/app/src/utils/findChildById/index.js
@@ -0,0 +1,24 @@
+const findChildById = (element, id,) => {
+ let returnElement = null
+ let lastChildren = element.childNodes
+
+ for (let index = 0; index < lastChildren.length; index++) {
+ const child = lastChildren[index]
+
+ if (child.id === id) {
+ returnElement = child
+ break
+ }
+
+ if (child.childNodes.length > 0) {
+ returnElement = findChildById(child, id)
+ if (returnElement) {
+ break
+ }
+ }
+ }
+
+ return returnElement
+}
+
+export default findChildById
\ No newline at end of file
diff --git a/packages/app/src/utils/getBase64/index.js b/packages/app/src/utils/getBase64/index.js
new file mode 100644
index 00000000..a8991081
--- /dev/null
+++ b/packages/app/src/utils/getBase64/index.js
@@ -0,0 +1,8 @@
+export default (file) => {
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader()
+ reader.readAsDataURL(file)
+ reader.onload = () => resolve(reader.result)
+ reader.onerror = error => reject(error)
+ })
+}
\ No newline at end of file
diff --git a/packages/app/src/utils/haptics/index.js b/packages/app/src/utils/haptics/index.js
new file mode 100644
index 00000000..7a70992c
--- /dev/null
+++ b/packages/app/src/utils/haptics/index.js
@@ -0,0 +1,34 @@
+import { Haptics, ImpactStyle } from "@capacitor/haptics"
+
+export default {
+ selectionStart: async () => {
+ const enabled = window.app.settings.get("haptic_feedback")
+
+ if (enabled) {
+ await Haptics.selectionStart()
+ }
+ },
+ selectionChanged: async () => {
+ const enabled = window.app.settings.get("haptic_feedback")
+
+ if (enabled) {
+ await Haptics.selectionChanged()
+ }
+ },
+ selectionEnd: async () => {
+ const enabled = window.app.settings.get("haptic_feedback")
+
+ if (enabled) {
+ await Haptics.selectionEnd()
+ }
+ },
+ impact: async (style = "Medium") => {
+ const enabled = window.app.settings.get("haptic_feedback")
+
+ if (enabled) {
+ style = String(style).toTitleCase()
+
+ await Haptics.impact({ style: ImpactStyle[style] })
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/utils/index.js b/packages/app/src/utils/index.js
new file mode 100644
index 00000000..84ddf0ab
--- /dev/null
+++ b/packages/app/src/utils/index.js
@@ -0,0 +1,5 @@
+export { default as useLongPress } from "./useLongPress"
+export { default as findChildById } from "./findChildById"
+export { default as cursorPosition } from "./cursorPosition"
+export { default as getBase64 } from "./getBase64"
+export { default as Haptics } from "./haptics"
\ No newline at end of file
diff --git a/packages/app/src/utils/useLongPress/index.jsx b/packages/app/src/utils/useLongPress/index.jsx
new file mode 100644
index 00000000..258719c7
--- /dev/null
+++ b/packages/app/src/utils/useLongPress/index.jsx
@@ -0,0 +1,74 @@
+import { useCallback, useRef, useState } from "react"
+
+export default (
+ onLongPress,
+ onClick,
+ {
+ shouldPreventDefault = true,
+ delay = 300,
+ onTouchStart,
+ onTouchEnd,
+ } = {}
+) => {
+ const [longPressTriggered, setLongPressTriggered] = useState(false)
+ const timeout = useRef()
+ const target = useRef()
+
+ const start = useCallback(
+ event => {
+ if (shouldPreventDefault && event.target) {
+ event.target.addEventListener("touchend", preventDefault, {
+ passive: false
+ })
+ target.current = event.target
+ }
+
+ if (typeof onTouchStart === "function") {
+ onTouchStart()
+ }
+
+ timeout.current = setTimeout(() => {
+ onLongPress(event)
+ setLongPressTriggered(true)
+ }, delay)
+ },
+ [onLongPress, delay, shouldPreventDefault]
+ )
+
+ const clear = useCallback(
+ (event, shouldTriggerClick = true) => {
+ timeout.current && clearTimeout(timeout.current)
+ shouldTriggerClick && !longPressTriggered && onClick()
+ setLongPressTriggered(false)
+
+ if (typeof onTouchEnd === "function") {
+ onTouchEnd()
+ }
+
+ if (shouldPreventDefault && target.current) {
+ target.current.removeEventListener("touchend", preventDefault)
+ }
+ },
+ [shouldPreventDefault, onClick, longPressTriggered]
+ )
+
+ return {
+ onMouseDown: e => start(e),
+ onTouchStart: e => start(e),
+ onMouseUp: e => clear(e),
+ onMouseLeave: e => clear(e, false),
+ onTouchEnd: e => clear(e)
+ }
+}
+
+const isTouchEvent = event => {
+ return "touches" in event
+}
+
+const preventDefault = event => {
+ if (!isTouchEvent(event)) return
+
+ if (event.touches.length < 2 && event.preventDefault) {
+ event.preventDefault()
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/vite.entry.jsx b/packages/app/src/vite.entry.jsx
new file mode 100644
index 00000000..09b07127
--- /dev/null
+++ b/packages/app/src/vite.entry.jsx
@@ -0,0 +1,5 @@
+import React from "react"
+import ReactDOM from "react-dom"
+import App from "./App"
+
+ReactDOM.render( , document.getElementById("root"))
\ No newline at end of file
diff --git a/packages/app/vite.config.js b/packages/app/vite.config.js
new file mode 100644
index 00000000..8cc58984
--- /dev/null
+++ b/packages/app/vite.config.js
@@ -0,0 +1,18 @@
+import getConfig from "./.config.js"
+
+import { defineConfig } from "vite"
+import reactRefresh from "@vitejs/plugin-react-refresh"
+
+import Pages from "vite-plugin-pages"
+
+export default defineConfig({
+ plugins: [
+ reactRefresh(),
+ Pages({
+ react: true,
+ routeStyle: "next",
+ extensions: ["jsx", "tsx"],
+ }),
+ ],
+ ...getConfig(),
+})
\ No newline at end of file
diff --git a/packages/comty-electron/README.md b/packages/comty-electron/README.md
deleted file mode 100644
index 560a9edb..00000000
--- a/packages/comty-electron/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# @undefined/comty-electron
diff --git a/packages/comty-electron/main/index.js b/packages/comty-electron/main/index.js
deleted file mode 100644
index 6dc830f2..00000000
--- a/packages/comty-electron/main/index.js
+++ /dev/null
@@ -1,272 +0,0 @@
-const {
- app,
- BrowserWindow,
- ipcMain,
- Tray,
- Menu,
- MenuItem,
- dialog,
- shell,
- screen,
- BrowserView,
- systemPreferences,
- Notification,
- globalhortcut
-} = require('electron')
-const path = require('path')
-// const { spawn, exec } = require('child_process')
-// const { autoUpdater } = require('electron-updater')
-const log = require('electron-log');
-const packagejson = require('../../../package.json')
-const is = require('electron-is')
-const waitOn = require('wait-on');
-const { getDoNotDisturb } = require('electron-notification-state');
-const RuntimeConfig = require("../../comty/config");
-
-let app_path = is.dev()? "localhost:8000" : `file://${path.join(__dirname, '..', 'renderer')}/index.html`;
-let mainWindow;
-let tray;
-let watcher;
-
-// This gets rid of this: https://github.com/electron/electron/issues/13186
-process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true
-// app.commandLine.appendSwitch("disable-web-security")
-//app.commandLine.appendSwitch('disable-gpu-vsync=gpu')
-app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors')
-
-const gotTheLock = app.requestSingleInstanceLock()
-const notifySupport = Notification.isSupported()
-const isNotDisturb = getDoNotDisturb()
-
-// Prevent multiple instances
-if (!gotTheLock) {
- app.quit()
-}
-
-function relaunchApp(){
- mainWindow.close()
- app.relaunch()
-}
-
-function resumeApp(){
- if (mainWindow) {
- mainWindow.show()
- mainWindow.focus()
- }else{
- createWindow()
- }
-}
-
-function notify(params) {
- if(!notifySupport || !params) return false
- let options = {
- title: "",
- body: "",
- icon: null,
- timeoutType: "default"
- }
-
- const keys = Object.keys(params)
- const values = Object.values(params)
-
- for (let i = 0; i < keys.length; i++) {
- options[keys[i]] = values[i]
- }
-
- new Notification(options).show()
-}
-
-async function __init() {
- createWindow()
-}
-
-function createWindow() {
- mainWindow = new BrowserWindow({
- title: packagejson.title,
- icon: path.join(__dirname, './icon.png'),
- width: 1100,
- height: 700,
- minWidth: 1256,
- minHeight: 755,
- show: true,
- frame: false,
- transparent: false,
- hasShadow: true,
- //webgl: true,
- visualEffectState: "followWindow",
- backgroundColor: '#00ffffff',
- webPreferences: {
- //enableRemoteModule: true,
- enableBlinkFeatures: true,
- experimentalFeatures: true,
- nodeIntegration: true,
- // Disable in dev since I think hot reload is messing with it
- webSecurity: !is.dev()
- }
- })
-
- if (is.dev()) {
- app.commandLine.appendSwitch('remote-debugging-port', '9222')
- globalhortcut.register('CommandOrControl+R', () => {
- mainWindow.reload()
- })
-
- globalhortcut.register('F5', () => {
- mainWindow.reload()
- })
- }
-
- mainWindow.webContents.session.webRequest.onHeadersReceived(
- {
- urls: ['http://*/*', 'https://*/*']
- },
- (details, callback) => {
- delete details.responseHeaders['Access-Control-Allow-Origin']
- delete details.responseHeaders['access-control-allow-origin']
- if (details.url.includes('www.google-analytics.com')) {
- details.responseHeaders['Access-Control-Allow-Origin'] = [ app_path ]
- } else {
- details.responseHeaders['Access-Control-Allow-Origin'] = ['*']
- }
- callback({
- cancel: false,
- responseHeaders: details.responseHeaders
- })
- }
- )
-
- tray = new Tray(
- is.dev()
- ? path.join(__dirname, './icon.png')
- : path.join(__dirname, '../build/icon.png')
- );
-
- const trayMenuTemplate = [
- {
- label: '🧰 Open DevTools',
- click: () => mainWindow.webContents.openDevTools()
- },
- {
- label: '🔄 Relaunch',
- click: () => {
- relaunchApp()
- }
- },
- {
- label: '🛑 Quit',
- click: () => app.quit()
- }
- ];
-
- tray.setContextMenu(Menu.buildFromTemplate(trayMenuTemplate))
- tray.setToolTip(RuntimeConfig.siteName)
- tray.on('double-click', () => resumeApp())
-
- mainWindow.loadURL(app_path)
- mainWindow.focus()
-
- if (is.dev()) {
- mainWindow.webContents.openDevTools()
- }
-
- // const handleRedirect = (e, url) => {
- // if (url !== mainWindow.webContents.getURL()) {
- // e.preventDefault()
- // shell.openExternal(url)
- // }
- // };
-
- // mainWindow.webContents.on('will-navigate', handleRedirect)
- // mainWindow.webContents.on('new-window', handleRedirect)
-}
-
-app.on('ready', () => {
- if (is.dev()) {
- loadWindow = new BrowserWindow({
- width: 700,
- height: 500,
- frame: false,
- resizable: false,
- center: true,
- transparent: true,
- backgroundColor: "#00000000",
- });
- loadWindow.loadURL(`file://${__dirname}/statics/loading_dev.html`)
- notify({title: "Starting development server..."})
- waitOn({ resources: [app_path] }, function (err) {
- if (err) {
- return log.log(err)
- }
- __init()
- loadWindow.close()
- })
- }else{
- __init()
- }
-})
-
-app.on('window-all-closed', () => {
- mainWindow = null;
-})
-
-app.on('before-quit', async () => {
- mainWindow.removeAllListeners('close');
- mainWindow = null;
-})
-
-ipcMain.handle('update-progress-bar', (event, p) => {
- mainWindow.setProgressBar(p);
-})
-
-ipcMain.handle('hide-window', () => {
- if (mainWindow) {
- mainWindow.hide();
- }
-})
-
-ipcMain.handle('show-window', () => {
- if (mainWindow) {
- mainWindow.show();
- mainWindow.focus();
- }
-})
-
-ipcMain.handle('min-max-window', () => {
- if (mainWindow.isMaximized()) {
- mainWindow.unmaximize();
- } else if (mainWindow.maximizable) {
- mainWindow.maximize();
- }
-})
-
-ipcMain.handle('getSystemPreferences', () => {
- return systemPreferences
-})
-
-ipcMain.handle('minimize-window', () => {
- mainWindow.minimize();
-})
-
-ipcMain.handle('quit-app', () => {
- app.quit();
-})
-
-ipcMain.handle('open-devtools', () => {
- mainWindow.webContents.openDevTools({ mode: 'undocked' });
-})
-
-ipcMain.handle('appRelaunch', () => {
- relaunchApp()
-})
-
-ipcMain.handle('app_notify', (event, payload) => {
- notify(payload)
-})
-
-ipcMain.handle('contextualMenu', (event, payload) => {
- contextualMenu(payload)
-})
-
-ipcMain.handle('inspectElement', (event, payload) => {
- mainWindow.inspectElement(payload.x, payload.y)
-})
\ No newline at end of file
diff --git a/packages/comty-electron/package.json b/packages/comty-electron/package.json
deleted file mode 100644
index 8cf964be..00000000
--- a/packages/comty-electron/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "@ragestudio/comty-electron",
- "version": null,
- "main": "dist/index.js",
- "types": "dist/index.d.ts",
- "files": [
- "dist",
- "src"
- ],
- "repository": {
- "type": "git",
- "url": false
- },
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- }
-}
diff --git a/packages/comty/.gitignore b/packages/comty/.gitignore
deleted file mode 100644
index 3ce7af6b..00000000
--- a/packages/comty/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-# dependencies
-/node_modules
-/npm-debug.log*
-/yarn-error.log
-/yarn.lock
-
-# production
-/build
-/dist
-/out
-
-# umi
-src/.umi
-src/.umi-production
-src/.umi-test
-.env.local
\ No newline at end of file
diff --git a/packages/comty/.umirc.js b/packages/comty/.umirc.js
deleted file mode 100644
index 10611925..00000000
--- a/packages/comty/.umirc.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import config from './config/index.js'
-import { defineConfig } from 'umi'
-import { resolve } from 'path'
-
-let configs = {
- hash: true,
- title: config.app.siteName ?? null,
- dynamicImport: {
- loading: 'components/Loader',
- },
- targets: { ie: 11 },
- dva: { immer: true, hmr: true },
- ignoreMomentLocale: true,
- mountElementId: "root",
- nodeModulesTransform: {
- type: 'none',
- },
- exportStatic: {
- dynamicRoot: false,
- },
- // ssr: {
- // devServerRender: true,
- // },
- alias: {
- antd: resolve(__dirname, './node_modules/antd'),
- api: resolve(__dirname, './node_modules/@ragestudio/nodecore-api-lib/src'),
- plugins: resolve(__dirname, './plugins'),
- schemas: resolve(__dirname, './schemas'),
- debuggers: resolve(__dirname, './src/debuggers'),
- core: resolve(__dirname, './src/core'),
- theme: resolve(__dirname, './src/theme'),
- config: resolve(__dirname, './config'),
- pages: resolve(__dirname, './src/pages'),
- components: resolve(__dirname, './src/components'),
- models: resolve(__dirname, './src/models'),
- node_modules: resolve(__dirname, './node_modules')
- },
- extraBabelPlugins: [
- [
- 'import',
- {
- libraryName: 'lodash',
- libraryDirectory: '',
- camel2DashComponentName: false,
- },
- 'lodash',
- ],
- ],
-}
-
-if (typeof(config.runtime) !== "undefined") {
- configs = { ...configs, ...config.runtime }
-}
-
-export default defineConfig(configs)
diff --git a/packages/comty/README.md b/packages/comty/README.md
deleted file mode 100644
index 89f53e8c..00000000
--- a/packages/comty/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# @comty
diff --git a/packages/comty/config/endpoints.js b/packages/comty/config/endpoints.js
deleted file mode 100644
index 2cbb3dea..00000000
--- a/packages/comty/config/endpoints.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default {
- auth_server: 'POST /auth_server',
- auth: 'POST /auth',
- sessions: 'POST /sessions',
- posts: 'POST /posts',
- post_actions: 'POST /post-actions',
-
- get_data: 'POST /get_user_data',
- basicData: 'POST /early_user',
- profileData: 'POST /get-user-data-username'
-};
diff --git a/packages/comty/config/handlers/errToFlag.js b/packages/comty/config/handlers/errToFlag.js
deleted file mode 100644
index 66361b9e..00000000
--- a/packages/comty/config/handlers/errToFlag.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = {
- SESSION_INVALID: "DISRUPT",
- OVERLAY_BADPOSITION: "IGNORE",
- INTERNAL_PROCESS_FAILED: "CRITICAL",
- INVALID_DATA: "DISRUPT",
- INVALID_PROPS: "IGNORE",
- INVALID_INDEX: "IGNORE",
- MISSING_REQUIRED_PAYLOAD: "IGNORE",
-}
-
\ No newline at end of file
diff --git a/packages/comty/config/handlers/errToStrings.js b/packages/comty/config/handlers/errToStrings.js
deleted file mode 100644
index 28f816e3..00000000
--- a/packages/comty/config/handlers/errToStrings.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = {
- SESSION_INVALID: `This session is not valid`,
- OVERLAY_BADPOSITION: `Invalid overlay position! Was expected "primary" or "secondary"`,
- INTERNAL_PROCESS_FAILED: `An internal error has occurred! `,
- INVALID_DATA: `A function has been executed with invalid data and has caused an error!`,
- INVALID_PROPS: `Some props failed!`,
- INVALID_INDEX: "This request could not be indexed",
- MISSING_REQUIRED_PAYLOAD: "Error has occurred because the function needed data that does not exist"
-}
-
\ No newline at end of file
diff --git a/packages/comty/config/handlers/flagToBehavior.js b/packages/comty/config/handlers/flagToBehavior.js
deleted file mode 100644
index f73321b8..00000000
--- a/packages/comty/config/handlers/flagToBehavior.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { notification, message } from 'antd'
-import { FieldTimeOutlined } from 'components/Icons'
-import errStrings from 'config/handlers/errToStrings.js'
-import errNumbers from 'config/handlers/numToError.js'
-import errFlags from 'config/handlers/errToFlag.js'
-
-export default {
- SESSION_INVALID: (payload) => {
- notification.error({
- message: payload.msg ?? 'Hey',
- icon: ,
- description: errStrings[payload.out] ?? "This session is not valid",
- placement: 'bottomLeft',
- })
- },
- OVERLAY_BADPOSITION: () => {
-
- },
- INTERNAL_PROCESS_FAILED: () => {
-
- },
- INVALID_DATA: () => {
-
- },
- INVALID_PROPS: () => {
-
- },
- MISSING_REQUIRED_PAYLOAD: () => {
-
- },
- INVALID_INDEX: () => {
-
- }
-}
\ No newline at end of file
diff --git a/packages/comty/config/handlers/numToError.js b/packages/comty/config/handlers/numToError.js
deleted file mode 100644
index 945efc2e..00000000
--- a/packages/comty/config/handlers/numToError.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = {
- 403: "SESSION_INVALID",
- 210: "OVERLAY_BADPOSITION",
- 110: "INTERNAL_PROCESS_FAILED",
- 120: "INVALID_DATA",
- 130: "INVALID_PROPS",
- 140: "INVALID_INDEX",
- 150: "MISSING_REQUIRED_PAYLOAD"
-}
-
\ No newline at end of file
diff --git a/packages/comty/config/index.js b/packages/comty/config/index.js
deleted file mode 100644
index 3a0c81f9..00000000
--- a/packages/comty/config/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-module.exports = {
- app: {
- guid: "7d6b74b5-1b3b-432f-97df-2c5fc2c2b6ae",
- siteName: 'Comty™',
- copyright: 'RageStudio©',
- MainPath: '/',
- defaultStyleClass: "app_",
-
- LogoPath: '/logo.svg',
- FullLogoPath: '/full_logo.svg',
- DarkFullLogoPath: '/dark_full_logo.svg',
- DarkLogoPath: '/dark_logo.svg',
-
- endpoint_v3prefix: 'ycorejs_apiv3',
- endpoint_websocket: 'eu_es01.ragestudio.net',
-
- storage: {
- theme: "app_theme",
- settings: "app_settings",
- token: "cid",
- data: "data"
- },
-
- storage_authFrame: 'cid',
- storage_dataFrame: 'data',
- storage_theme: 'app_theme',
-
- appTheme_desiredContrast: 7,
- // Contrast level AA = 4.5, Level AAA = 7
- // Reference: https://www.w3.org/WAI/WCAG21/quickref/?versions=2.0&showtechniques=143#qr-visual-audio-contrast-contrast
- },
-
- i18n: {
- languages: [
- {
- key: 'en',
- title: 'English',
- },
- ],
- defaultLanguage: 'en',
- },
-
- layouts: [
- {
- name: 'primary',
- include: [/\/main/, /\/settings/, /\/saves/, /\/pro/, /\/chats/, /\//],
- exclude: [/\/publics/, /\/login/],
- },
- {
- name: 'public',
- include: [/.*/]
- }
- ],
-
- // Default Behaviors
- defaults: {
- app_model: "app",
- verbosity: false,
- sidebarCollaped: false,
- session_noexpire: false,
- search_ontype: false,
- post_autoposition: true,
- overlay_loosefocus: true,
- render_pagetransition_preset: 'moveToRightScaleUp',
- post_catchlimit: '20',
- post_hidebar: true,
-
- feed_autorefresh: false,
- keybinds: {
- nextElement: "J",
- prevElement: "U",
- createNew: "N"
- }
- },
-
- stricts: {
- post_maxlenght: '512',
- // In KB
- api_maxpayload: '101376',
- api_maxovertick: 10,
- }
-}
diff --git a/packages/comty/config/keys.js b/packages/comty/config/keys.js
deleted file mode 100644
index 3f01036e..00000000
--- a/packages/comty/config/keys.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = {
- unsplash_key: 'slrHmuo9FEJajV4xvWl38TUhbib6BhhGI4VIZ1-cqnw',
- unsplash_secret: 'dh3UlgLTdunO7a_l_iKjotXbz0xB7w5EuDIBU8Pa8pA',
- g_recaptcha_key: '6Lc55uUUAAAAAEIACMVf3BUzAJSNCmI3RrjEirZ6',
- g_recaptcha_secret: '6Lc55uUUAAAAAOP4OgUa5DpqJC-70t53AmW0lyYf',
- server_key: 'f706b0a535b6c2d36545c4137a0a3a26853ea8b5-1223c9ba7923152cae28e5a2e7501b2b-50600768',
-};
diff --git a/packages/comty/package-lock.json b/packages/comty/package-lock.json
deleted file mode 100644
index 155ef801..00000000
--- a/packages/comty/package-lock.json
+++ /dev/null
@@ -1,14071 +0,0 @@
-{
- "name": "comty",
- "version": "0.12.8",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@ahooksjs/use-request": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/@ahooksjs/use-request/-/use-request-2.8.6.tgz",
- "integrity": "sha512-oOxr55Vym5/yf7c7qs8l8PPrHf5zAKGvWDqpaXI3bhDADigFU7FID1WOivG8DggQ6DBmjXvffj7IC8ii+iJLhA==",
- "requires": {
- "lodash.debounce": "^4.0.8",
- "lodash.throttle": "^4.1.1"
- }
- },
- "@ant-design/colors": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz",
- "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
- "requires": {
- "@ctrl/tinycolor": "^3.4.0"
- }
- },
- "@ant-design/icons": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.6.2.tgz",
- "integrity": "sha512-QsBG2BxBYU/rxr2eb8b2cZ4rPKAPBpzAR+0v6rrZLp/lnyvflLH3tw1vregK+M7aJauGWjIGNdFmUfpAOtw25A==",
- "requires": {
- "@ant-design/colors": "^6.0.0",
- "@ant-design/icons-svg": "^4.0.0",
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.2.6",
- "rc-util": "^5.9.4"
- }
- },
- "@ant-design/icons-svg": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz",
- "integrity": "sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ=="
- },
- "@ant-design/react-slick": {
- "version": "0.28.3",
- "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.3.tgz",
- "integrity": "sha512-u3onF2VevGRbkGbgpldVX/nzd7LFtLeZJE0x2xIFT2qYHKkJZ6QT/jQ7KqYK4UpeTndoyrbMqLN4DiJza4BVBg==",
- "requires": {
- "@babel/runtime": "^7.10.4",
- "classnames": "^2.2.5",
- "json2mq": "^0.2.0",
- "lodash": "^4.17.21",
- "resize-observer-polyfill": "^1.5.0"
- }
- },
- "@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "requires": {
- "@babel/highlight": "^7.12.13"
- }
- },
- "@babel/compat-data": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz",
- "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q=="
- },
- "@babel/core": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz",
- "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==",
- "requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.10",
- "@babel/helper-module-transforms": "^7.12.1",
- "@babel/helpers": "^7.12.5",
- "@babel/parser": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/traverse": "^7.12.10",
- "@babel/types": "^7.12.10",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.1",
- "json5": "^2.1.2",
- "lodash": "^4.17.19",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- }
- },
- "@babel/generator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.13.tgz",
- "integrity": "sha512-9qQ8Fgo8HaSvHEt6A5+BATP7XktD/AdAnObUeTRz5/e2y3kbrxZgz32qUJJsdmwUvBJzF4AeV21nGTNwv05Mpw==",
- "requires": {
- "@babel/types": "^7.12.13",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.13.16",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz",
- "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==",
- "requires": {
- "@babel/compat-data": "^7.13.15",
- "@babel/helper-validator-option": "^7.12.17",
- "browserslist": "^4.14.5",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
- "@babel/helper-function-name": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz",
- "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==",
- "requires": {
- "@babel/helper-get-function-arity": "^7.12.13",
- "@babel/template": "^7.12.13",
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
- "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
- "requires": {
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
- "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
- "requires": {
- "@babel/types": "^7.13.12"
- },
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
- "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
- "requires": {
- "@babel/types": "^7.13.12"
- },
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz",
- "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==",
- "requires": {
- "@babel/helper-module-imports": "^7.13.12",
- "@babel/helper-replace-supers": "^7.13.12",
- "@babel/helper-simple-access": "^7.13.12",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/helper-validator-identifier": "^7.14.0",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0"
- },
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
- "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
- "requires": {
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz",
- "integrity": "sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA=="
- },
- "@babel/helper-replace-supers": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz",
- "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==",
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.13.12",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.12"
- },
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
- "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
- "requires": {
- "@babel/types": "^7.13.12"
- },
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
- "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
- "requires": {
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
- "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
- },
- "@babel/helper-validator-option": {
- "version": "7.12.17",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
- "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw=="
- },
- "@babel/helpers": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
- "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==",
- "requires": {
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0"
- },
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/highlight": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz",
- "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.12.14",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.14.tgz",
- "integrity": "sha512-xcfxDq3OrBnDsA/Z8eK5/2iPcLD8qbOaSSfOw4RA6jp4i7e6dEQ7+wTwxItEwzcXPQcsry5nZk96gmVPKletjQ=="
- },
- "@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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-jsx": {
- "version": "7.12.1",
- "resolved": "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz",
- "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@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==",
- "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==",
- "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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz",
- "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/runtime": {
- "version": "7.12.5",
- "resolved": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz",
- "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
- "requires": {
- "regenerator-runtime": "^0.13.4"
- }
- },
- "@babel/template": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
- "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==",
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/parser": "^7.12.13",
- "@babel/types": "^7.12.13"
- }
- },
- "@babel/traverse": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz",
- "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==",
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.0",
- "@babel/helper-function-name": "^7.12.13",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.14.0",
- "@babel/types": "^7.14.0",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "dependencies": {
- "@babel/generator": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz",
- "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==",
- "requires": {
- "@babel/types": "^7.14.1",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/parser": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz",
- "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q=="
- },
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- }
- }
- },
- "@babel/types": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz",
- "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
- },
- "@bloomberg/record-tuple-polyfill": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@bloomberg/record-tuple-polyfill/-/record-tuple-polyfill-0.0.3.tgz",
- "integrity": "sha512-sBnCqW0nqofE47mxFnw+lvx6kzsQstwaQMVkh66qm/A6IlsnH7WsyGuVXTou8RF2wL4W7ybOoHPvP2WgIo6rhQ=="
- },
- "@cnakazawa/watch": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
- "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
- "requires": {
- "exec-sh": "^0.3.2",
- "minimist": "^1.2.0"
- }
- },
- "@csstools/convert-colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
- "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==",
- "dev": true
- },
- "@ctrl/tinycolor": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz",
- "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ=="
- },
- "@formatjs/intl-displaynames": {
- "version": "1.2.10",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-1.2.10.tgz",
- "integrity": "sha512-GROA2RP6+7Ouu0WnHFF78O5XIU7pBfI19WM1qm93l6MFWibUk67nCfVCK3VAYJkLy8L8ZxjkYT11VIAfvSz8wg==",
- "requires": {
- "@formatjs/intl-utils": "^2.3.0"
- }
- },
- "@formatjs/intl-listformat": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-1.4.8.tgz",
- "integrity": "sha512-WNMQlEg0e50VZrGIkgD5n7+DAMGt3boKi1GJALfhFMymslJb5i+5WzWxyj/3a929Z6MAFsmzRIJjKuv+BxKAOQ==",
- "requires": {
- "@formatjs/intl-utils": "^2.3.0"
- }
- },
- "@formatjs/intl-pluralrules": {
- "version": "1.5.9",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-1.5.9.tgz",
- "integrity": "sha512-37E1ZG+Oqo3qrpUfumzNcFTV+V+NCExmTkkQ9Zw4FSlvJ4WhbbeYdieVapUVz9M0cLy8XrhCkfuM/Kn03iKReg==",
- "requires": {
- "@formatjs/intl-utils": "^2.3.0"
- }
- },
- "@formatjs/intl-relativetimeformat": {
- "version": "4.5.16",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-4.5.16.tgz",
- "integrity": "sha512-IQ0haY97oHAH5OYUdykNiepdyEWj3SAT+Fp9ZpR85ov2JNiFx+12WWlxlVS8ehdyncC2ZMt/SwFIy2huK2+6/A==",
- "requires": {
- "@formatjs/intl-utils": "^2.3.0"
- }
- },
- "@formatjs/intl-unified-numberformat": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.3.7.tgz",
- "integrity": "sha512-KnWgLRHzCAgT9eyt3OS34RHoyD7dPDYhRcuKn+/6Kv2knDF8Im43J6vlSW6Hm1w63fNq3ZIT1cFk7RuVO3Psag==",
- "requires": {
- "@formatjs/intl-utils": "^2.3.0"
- }
- },
- "@formatjs/intl-utils": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-utils/-/intl-utils-2.3.0.tgz",
- "integrity": "sha512-KWk80UPIzPmUg+P0rKh6TqspRw0G6eux1PuJr+zz47ftMaZ9QDwbGzHZbtzWkl5hgayM/qrKRutllRC7D/vVXQ=="
- },
- "@icons-pack/react-simple-icons": {
- "version": "3.13.0",
- "resolved": "https://registry.yarnpkg.com/@icons-pack/react-simple-icons/-/react-simple-icons-3.13.0.tgz",
- "integrity": "sha512-y66dozS9pBBMDopswZfrdDnDXqrlc+XL8LSmKZTJngtdHPL+WJoBTzXTQVzc7H3NyVGJQWhQuqt09CgnbPwNZw==",
- "requires": {
- "prop-types": "^15.7.2"
- }
- },
- "@icons/material": {
- "version": "0.2.4",
- "resolved": "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz",
- "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw=="
- },
- "@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "requires": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- }
- },
- "@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA=="
- },
- "@jest/console": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
- "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^26.6.2",
- "jest-util": "^26.6.2",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/core": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
- "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/reporters": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-changed-files": "^26.6.2",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-resolve-dependencies": "^26.6.3",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "jest-watcher": "^26.6.2",
- "micromatch": "^4.0.2",
- "p-each-series": "^2.1.0",
- "rimraf": "^3.0.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- }
- },
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/environment": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
- "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
- "requires": {
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {},
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/fake-timers": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
- "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@sinonjs/fake-timers": "^6.0.1",
- "@types/node": "*",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/globals": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
- "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/types": "^26.6.2",
- "expect": "^26.6.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/reporters": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
- "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
- "requires": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.2",
- "graceful-fs": "^4.2.4",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^4.0.3",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.0.2",
- "jest-haste-map": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "node-notifier": "^8.0.0",
- "slash": "^3.0.0",
- "source-map": "^0.6.0",
- "string-length": "^4.0.1",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^7.0.0"
- },
- "dependencies": {
- "@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- }
- },
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/source-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
- "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
- "requires": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.4",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "@jest/test-result": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
- "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/test-sequencer": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
- "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
- "requires": {
- "@jest/test-result": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@lingui/babel-plugin-extract-messages": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-3.3.0.tgz",
- "integrity": "sha512-IKysHLSAO4W8p2dvv09Tq2/812dtvRPkEkOZZ12wJAcR69UNllQLPcIRUaLIeYgliKZ9QEqxxqCxXun0ygPXlg==",
- "dev": true,
- "requires": {
- "@babel/generator": "^7.11.6",
- "@babel/runtime": "^7.11.2",
- "@lingui/conf": "^3.3.0",
- "mkdirp": "^1.0.4"
- },
- "dependencies": {
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- }
- }
- },
- "@lingui/babel-plugin-transform-js": {
- "version": "2.9.2",
- "resolved": "https://registry.yarnpkg.com/@lingui/babel-plugin-transform-js/-/babel-plugin-transform-js-2.9.2.tgz",
- "integrity": "sha512-yWoyhOfjRa9744TbVb/WN1OWxZYFLuXcWH5aVCu/sZ2b1YpsGCtfhplc5lRVWN8QcsfpjYmFiPqzU6swE5OFdQ==",
- "dev": true
- },
- "@lingui/babel-plugin-transform-react": {
- "version": "2.9.2",
- "resolved": "https://registry.yarnpkg.com/@lingui/babel-plugin-transform-react/-/babel-plugin-transform-react-2.9.2.tgz",
- "integrity": "sha512-bxvrepiS6J9vZqRtpRiAgBIASQscjvu7aFmPqH4Y6001TDXrYuyhhNRt1BI3k2E6C2SckHh5vRtSpsqpjEiY3A==",
- "dev": true
- },
- "@lingui/babel-preset-react": {
- "version": "2.9.2",
- "resolved": "https://registry.yarnpkg.com/@lingui/babel-preset-react/-/babel-preset-react-2.9.2.tgz",
- "integrity": "sha512-M+nfK/83+FnLEr63bBox5DKsSYgwPPmhfiLJAbc2BZBlmF1Nfqv/dHL+d2ynyEKNKCSVts476eDeiOFwv2MTNw==",
- "dev": true,
- "requires": {
- "@lingui/babel-plugin-transform-js": "2.9.2",
- "@lingui/babel-plugin-transform-react": "2.9.2"
- }
- },
- "@lingui/cli": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-3.3.0.tgz",
- "integrity": "sha512-OE9rOlcMH6WKGPSxfscKCV7Mr/EhlyFMimvI2cMx/R7rEbKwhazqDHrLpzwxDJMbEnS08ZGYNAF2PPkj2xjjAQ==",
- "dev": true,
- "requires": {
- "@babel/generator": "^7.11.6",
- "@babel/parser": "^7.11.5",
- "@babel/plugin-syntax-jsx": "^7.10.4",
- "@babel/runtime": "^7.11.2",
- "@babel/types": "^7.11.5",
- "@lingui/babel-plugin-extract-messages": "^3.3.0",
- "@lingui/conf": "^3.3.0",
- "babel-plugin-macros": "^2.8.0",
- "bcp-47": "^1.0.7",
- "chalk": "^4.1.0",
- "cli-table": "^0.3.1",
- "commander": "^6.1.0",
- "date-fns": "^2.16.1",
- "fs-extra": "^9.0.1",
- "fuzzaldrin": "^2.1.0",
- "glob": "^7.1.4",
- "inquirer": "^7.3.3",
- "make-plural": "^6.2.2",
- "messageformat-parser": "^4.1.3",
- "micromatch": "4.0.2",
- "mkdirp": "^1.0.4",
- "node-gettext": "^3.0.0",
- "normalize-path": "^3.0.0",
- "ora": "^5.1.0",
- "papaparse": "^5.3.0",
- "plurals-cldr": "^1.0.4",
- "pofile": "^1.1.0",
- "pseudolocale": "^1.1.0",
- "ramda": "^0.27.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true
- },
- "date-fns": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz",
- "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==",
- "dev": true
- },
- "fs-extra": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
- "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^1.0.0"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- },
- "dependencies": {
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- }
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "universalify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
- "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
- "dev": true
- }
- }
- },
- "@lingui/conf": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-3.3.0.tgz",
- "integrity": "sha512-gUUY8TputDkwdiUZpS68jsC/IW13gVJ2zDvjk2L/IuaeEZ8Yw7jPVy5PfJDrfNpeJFHFGns3HlXnsjFKrBhXog==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.11.2",
- "chalk": "^4.1.0",
- "cosmiconfig": "^7.0.0",
- "jest-validate": "^26.5.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "cosmiconfig": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
- "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
- "dev": true,
- "requires": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "parse-json": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz",
- "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@lingui/core": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@lingui/core/-/core-3.3.0.tgz",
- "integrity": "sha512-qPCHA2b/XT7ptTgpmnfQzQgAKPKHIcIGDfp4rppa0h+c1gmvI+uQKU8DEKmU0GplcykEfL7VZ8asdIXe0WrH6Q==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "make-plural": "^6.2.2",
- "messageformat-parser": "^4.1.3"
- }
- },
- "@lingui/loader": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@lingui/loader/-/loader-3.3.0.tgz",
- "integrity": "sha512-MFHAQnr/dRuVmPGH+2k7F6qJlqed79hI4vVHE6y+IZlryRNB6RFDr+09pY0pKZhG1qeKevYIu+k4lUsiMZXqMw==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@lingui/cli": "^3.3.0",
- "@lingui/conf": "^3.3.0",
- "loader-utils": "^2.0.0",
- "ramda": "^0.27.1"
- },
- "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"
- }
- }
- }
- },
- "@lingui/react": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@lingui/react/-/react-3.3.0.tgz",
- "integrity": "sha512-7T7SFVZR09qKFajBZZamJ+K9pOm2bc7IGKb/ery0le/dSDrZnG4Zi7zeRyM2rlC51FU+Nda7LXODvqE/NkKLkw==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@lingui/core": "^3.3.0"
- }
- },
- "@qixian.cs/path-to-regexp": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@qixian.cs/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
- "integrity": "sha512-2jIiLiVZB1jnY7IIRQKtoV8Gnr7XIhk4mC88ONGunZE3hYt5IHUG4BE/6+JiTBjjEWQLBeWnZB8hGpppkufiVw=="
- },
- "@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
- "requires": {
- "type-detect": "4.0.8"
- }
- },
- "@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
- "requires": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "@types/babel__core": {
- "version": "7.1.14",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz",
- "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==",
- "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.2",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz",
- "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==",
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz",
- "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==",
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz",
- "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==",
- "requires": {
- "@babel/types": "^7.3.0"
- }
- },
- "@types/component-emitter": {
- "version": "1.2.10",
- "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
- "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg=="
- },
- "@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/history": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz",
- "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA=="
- },
- "@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==",
- "requires": {
- "@types/react": "*",
- "hoist-non-react-statics": "^3.3.0"
- }
- },
- "@types/invariant": {
- "version": "2.2.34",
- "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.34.tgz",
- "integrity": "sha512-lYUtmJ9BqUN688fGY1U1HZoWT1/Jrmgigx2loq4ZcJpICECm/Om3V314BxdzypO0u5PORKGMM6x0OXaljV1YFg=="
- },
- "@types/isomorphic-fetch": {
- "version": "0.0.35",
- "resolved": "https://registry.npmjs.org/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.35.tgz",
- "integrity": "sha512-DaZNUvLDCAnCTjgwxgiL1eQdxIKEpNLOlTNtAgnZc50bG2copGhRrFN9/PxPBuJe+tZVLCbQ7ls0xveXVRPkvw=="
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw=="
- },
- "@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/lodash": {
- "version": "4.14.168",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz",
- "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q=="
- },
- "@types/node": {
- "version": "14.14.20",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz",
- "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A=="
- },
- "@types/normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA=="
- },
- "@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true
- },
- "@types/prettier": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.6.tgz",
- "integrity": "sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA=="
- },
- "@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=="
- },
- "@types/react": {
- "version": "17.0.5",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.5.tgz",
- "integrity": "sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw==",
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "@types/react-dom": {
- "version": "16.9.12",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz",
- "integrity": "sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA==",
- "dev": true,
- "requires": {
- "@types/react": "^16"
- },
- "dependencies": {
- "@types/react": {
- "version": "16.14.6",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.6.tgz",
- "integrity": "sha512-Ol/aFKune+P0FSFKIgf+XbhGzYGyz0p7g5befSt4rmbzfGLaZR0q7jPew9k7d3bvrcuaL8dPy9Oz3XGZmf9n+w==",
- "dev": true,
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- }
- }
- },
- "@types/react-helmet": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.1.tgz",
- "integrity": "sha512-VmSCMz6jp/06DABoY60vQa++h1YFt0PfAI23llxBJHbowqFgLUL0dhS1AQeVPNqYfRp9LAfokrfWACTNeobOrg==",
- "requires": {
- "@types/react": "*"
- }
- },
- "@types/react-redux": {
- "version": "7.1.16",
- "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.16.tgz",
- "integrity": "sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw==",
- "requires": {
- "@types/hoist-non-react-statics": "^3.3.0",
- "@types/react": "*",
- "hoist-non-react-statics": "^3.3.0",
- "redux": "^4.0.0"
- }
- },
- "@types/react-router": {
- "version": "5.1.14",
- "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.14.tgz",
- "integrity": "sha512-LAJpqYUaCTMT2anZheoidiIymt8MuX286zoVFPM3DVb23aQBH0mAkFvzpd4LKqiolV8bBtZWT5Qp7hClCNDENw==",
- "requires": {
- "@types/history": "*",
- "@types/react": "*"
- }
- },
- "@types/react-router-config": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.2.tgz",
- "integrity": "sha512-WOSetDV3YPxbkVJAdv/bqExJjmcdCi/vpCJh3NfQOy1X15vHMSiMioXIcGekXDJJYhqGUMDo9e337mh508foAA==",
- "dev": true,
- "requires": {
- "@types/history": "*",
- "@types/react": "*",
- "@types/react-router": "*"
- }
- },
- "@types/react-router-dom": {
- "version": "5.1.7",
- "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.7.tgz",
- "integrity": "sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg==",
- "requires": {
- "@types/history": "*",
- "@types/react": "*",
- "@types/react-router": "*"
- }
- },
- "@types/scheduler": {
- "version": "0.16.1",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz",
- "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA=="
- },
- "@types/stack-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz",
- "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw=="
- },
- "@types/yargs": {
- "version": "15.0.5",
- "resolved": "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz",
- "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==",
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "15.0.0",
- "resolved": "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz",
- "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw=="
- },
- "@umijs/ast": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/ast/-/ast-3.4.20.tgz",
- "integrity": "sha512-yluYEr4styP2hV16el2aHtc3lX2ZKz/Q05S9sehFr0+YfxaHsT7b5QerEb+vbqH9UGSvVUjet/eT/Ch0hyrq8w==",
- "dev": true,
- "requires": {
- "@umijs/utils": "3.4.20"
- }
- },
- "@umijs/babel-plugin-auto-css-modules": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/babel-plugin-auto-css-modules/-/babel-plugin-auto-css-modules-3.4.20.tgz",
- "integrity": "sha512-kEjK7pnJtsTlzoHSZgmP+Hlx/6lUdYMdP9Lfu3haU9J6XTnMiibRFsy38uS+A1spl8/oD4RduUvPjGxCXM5W6Q=="
- },
- "@umijs/babel-plugin-import-to-await-require": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/babel-plugin-import-to-await-require/-/babel-plugin-import-to-await-require-3.4.20.tgz",
- "integrity": "sha512-z4fQA0jOKF/6DLcNUIIGxK3JoSsUjG74MayErQmeosKO2Wq3IprKshrbnMlJHovKCSvOEaZia34yeR9Le7lNRQ==",
- "requires": {
- "@umijs/utils": "3.4.20"
- }
- },
- "@umijs/babel-plugin-lock-core-js-3": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/babel-plugin-lock-core-js-3/-/babel-plugin-lock-core-js-3-3.4.20.tgz",
- "integrity": "sha512-mJGMwuHb0Y54n6s99CuLYGW2FGrF8PnnB3ynOscC3keQvttmkXlZ/JhjCyM0hpTqo8doi6QhqgTtJ+Iszz3bCw==",
- "requires": {
- "@umijs/utils": "3.4.20",
- "core-js": "3.6.5"
- },
- "dependencies": {
- "core-js": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
- "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
- }
- }
- },
- "@umijs/babel-plugin-no-anonymous-default-export": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/babel-plugin-no-anonymous-default-export/-/babel-plugin-no-anonymous-default-export-3.4.20.tgz",
- "integrity": "sha512-CrN1TLiFydLgxLGVDahAWdzK0E4ujwiQBTBW5y2rnkkKH5f5G/FKZEjbG5H26VOnDH6uemE5i9su8cAzJ7Nw9A==",
- "requires": {
- "@umijs/utils": "3.4.20"
- }
- },
- "@umijs/babel-preset-umi": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/babel-preset-umi/-/babel-preset-umi-3.4.20.tgz",
- "integrity": "sha512-YUwerpS4jhN1VUYDFQmWXxY8sINFNL9moJx4gLGn/ur6tiZRl/t2y+h/1gFniFkzTNJ0Km4H7QoR8X/POhTEcQ==",
- "requires": {
- "@babel/runtime": "7.12.5",
- "@umijs/babel-plugin-auto-css-modules": "3.4.20",
- "@umijs/babel-plugin-import-to-await-require": "3.4.20",
- "@umijs/babel-plugin-lock-core-js-3": "3.4.20",
- "@umijs/babel-plugin-no-anonymous-default-export": "3.4.20"
- }
- },
- "@umijs/bundler-utils": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/bundler-utils/-/bundler-utils-3.4.20.tgz",
- "integrity": "sha512-xqyfjVHlMUKrfQq0C7apRuMRUgWkVya1ra+XatvsEwyNjgT4+z+Hp8K6iI0dk2j8UWjFaLX8gdEMWMTBOKTrvw==",
- "dev": true,
- "requires": {
- "@umijs/babel-preset-umi": "3.4.20",
- "@umijs/types": "3.4.20",
- "@umijs/utils": "3.4.20"
- }
- },
- "@umijs/bundler-webpack": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/bundler-webpack/-/bundler-webpack-3.4.20.tgz",
- "integrity": "sha512-FwmvYgzNs29VUieqa/tOGgznLX2o8vpqr3GKgbeJDnXF83masXUrS1t/v9NjhJXR00DJ8n2qk1SJ8WyTRoRlWw==",
- "dev": true,
- "requires": {
- "@umijs/bundler-utils": "3.4.20",
- "@umijs/deps": "3.4.20",
- "@umijs/types": "3.4.20",
- "@umijs/utils": "3.4.20",
- "jest-worker": "26.6.2",
- "node-libs-browser": "2.2.1",
- "normalize-url": "1.9.1",
- "postcss": "7.0.32",
- "postcss-flexbugs-fixes": "4.2.1",
- "postcss-loader": "3.0.0",
- "postcss-preset-env": "6.7.0",
- "postcss-safe-parser": "4.0.2",
- "terser": "5.6.0",
- "webpack-chain": "6.5.1"
- }
- },
- "@umijs/core": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/core/-/core-3.4.20.tgz",
- "integrity": "sha512-K4IWjYdmhZmlMIVICUmCIb7p2vugANEIXIBJ6nO2aSwbqTPzlx0NlNhbmzaxKCJrmrwJ9Y4JWp+g09XiIqKwbg==",
- "dev": true,
- "requires": {
- "@umijs/ast": "3.4.20",
- "@umijs/babel-preset-umi": "3.4.20",
- "@umijs/deps": "3.4.20",
- "@umijs/utils": "3.4.20"
- }
- },
- "@umijs/deps": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/deps/-/deps-3.4.20.tgz",
- "integrity": "sha512-eANA/O/4Bx5xjDhZ0DZAdWdpLNYJWV9S+udUgMvAs1FdxNK0EPY/+yg5VE8Lah57qukj8EYH6mtBoukO97+8Xg==",
- "requires": {
- "@bloomberg/record-tuple-polyfill": "0.0.3",
- "chokidar": "3.5.1",
- "clipboardy": "2.3.0",
- "jest-worker": "24.9.0",
- "prettier": "2.2.1"
- },
- "dependencies": {
- "chokidar": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.3.1",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- }
- },
- "jest-worker": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
- "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
- "requires": {
- "merge-stream": "^2.0.0",
- "supports-color": "^6.1.0"
- }
- },
- "prettier": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
- "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q=="
- },
- "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==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@umijs/plugin-access": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-access/-/plugin-access-2.3.3.tgz",
- "integrity": "sha512-ZTeivGpELVEB0BAvXnoFoUrgCFtIwNl6ZTSlz0YoQv+WPa5FNgsiLq2qo2NN/ORXyWckjDvSczZgrgJvy2oUGg=="
- },
- "@umijs/plugin-analytics": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-analytics/-/plugin-analytics-0.2.2.tgz",
- "integrity": "sha512-dVDzUfgIdEwdCC6a5IsMYpIPI+bEZjBEqIhAvw9dic6Vk77w9RxQxyRfW11dDmdXLAwWphp22NntQNt1ejZPtg=="
- },
- "@umijs/plugin-antd": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-antd/-/plugin-antd-0.9.1.tgz",
- "integrity": "sha512-MG+RifLIovPRvf5qPUfTIRqkiq1QBaKCE/pP3mM72DwAkDh6ZXn8oql/8tqFR3k1+m3XUbDEiOCH+Zx+eNiFew==",
- "requires": {
- "antd": "^4.1.3",
- "antd-mobile": "^2.3.1"
- }
- },
- "@umijs/plugin-crossorigin": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-crossorigin/-/plugin-crossorigin-1.2.0.tgz",
- "integrity": "sha512-/3y8PELpL/mNo6tBeegXVZwn75lG/8Z9FN6L1huKm3UQFQUjhKeJy8Sw8p3IkwXjwSYyE5gjuSB3Bb6NZlLDUQ=="
- },
- "@umijs/plugin-dva": {
- "version": "0.12.1",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-dva/-/plugin-dva-0.12.1.tgz",
- "integrity": "sha512-wSCpN8AZRnipLk03x9HmRZkS5DYEdvrRdRWmYduYJzD02ydtOTbojQGjhime5vh1wLpr1PQoWkjWq8Z7E9Dl9Q==",
- "requires": {
- "babel-plugin-dva-hmr": "^0.4.2",
- "dva": "^2.6.0-beta.20",
- "dva-immer": "^0.5.2",
- "dva-loading": "^3.0.20"
- }
- },
- "@umijs/plugin-helmet": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-helmet/-/plugin-helmet-1.1.3.tgz",
- "integrity": "sha512-X4GRFlvOb8DxMDm1vExfpWOvxl6bp0oZz114DyhwnMSriJ8RcHAigTjtVJHYxJpKv7P6KayN3n13J4w/XZGWMg==",
- "requires": {
- "@types/react-helmet": "^6.1.0",
- "react-helmet": "^6.1.0"
- }
- },
- "@umijs/plugin-initial-state": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-initial-state/-/plugin-initial-state-2.3.0.tgz",
- "integrity": "sha512-R1hhzwFX3GA+kP0sjci2DwfLStCeOCdE0EjOV4HgzBkWR1YhX4ytof+eTgJlwx7o27zRqGNfk4DZVO3wmYpc0w=="
- },
- "@umijs/plugin-layout": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-layout/-/plugin-layout-0.15.0.tgz",
- "integrity": "sha512-/8f1kUePDn3ao3GmtGrMKgkuJZr3hCJvCg1BAyxk6kO+3ATi/b2dy05/bJtE+MjcomWWV1SHfKDoEj4qaPR4Ww==",
- "requires": {
- "@umijs/route-utils": "^1.0.7",
- "antd": "^4.1.2",
- "lodash": "^4.17.15",
- "path-to-regexp": "1.x"
- },
- "dependencies": {
- "path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- }
- }
- }
- },
- "@umijs/plugin-locale": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-locale/-/plugin-locale-0.11.2.tgz",
- "integrity": "sha512-r/wbAQOoh/ogcG9xAiPXPCCKJ8+wAO7LeCEgGWlZdoIT+eJig+o/Ai0hBRTI/9cbowV3o9e1jovbFsO9feiHzQ==",
- "requires": {
- "@ant-design/icons": "^4.1.0",
- "@formatjs/intl-pluralrules": "^1.5.0",
- "@formatjs/intl-relativetimeformat": "^4.5.7",
- "intl": "1.2.5",
- "moment": "^2.29.1",
- "react-intl": "3.12.1",
- "warning": "^4.0.3"
- }
- },
- "@umijs/plugin-model": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-model/-/plugin-model-2.5.7.tgz",
- "integrity": "sha512-TYUHFDGwNnJz7ptzNN4Ls4fD6Rj1r6nLJXcbpNgcxsYREkW2Gg70Ur5TgStCZEvsIL6C1jLqokImovOGTo9BZA==",
- "requires": {
- "fast-deep-equal": "3.1.1"
- },
- "dependencies": {
- "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=="
- }
- }
- },
- "@umijs/plugin-request": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-request/-/plugin-request-2.5.2.tgz",
- "integrity": "sha512-EiLP/tzfcVhC2hj23AgGsxP0aFCY3SUF67q9EvBbj7J/Vs63iwo/ZiKfSgz+yPOsnk2DpHmIUJKhyUfrDpcGBA==",
- "requires": {
- "@ahooksjs/use-request": "^2.0.0",
- "umi-request": "^1.2.14"
- }
- },
- "@umijs/plugin-test": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@umijs/plugin-test/-/plugin-test-1.0.0.tgz",
- "integrity": "sha512-hWsyL+3oXCzEMgJs4WRtZhOJSdI9lvtuWLFkHhGLP5gLCsOKYmbO9OP2khUsuBQR471WFs+RBbyNyDlbqfIopg==",
- "requires": {
- "@umijs/test": "^3.0.7"
- }
- },
- "@umijs/preset-built-in": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/preset-built-in/-/preset-built-in-3.4.20.tgz",
- "integrity": "sha512-Qvgcct4XY73p7nJaAnUl14SVv6IBixt9SLH/q0aMI+4ZyICgUXqKp3uibR+uXeo6OgtyStcdhp2uyThXoeJC9A==",
- "dev": true,
- "requires": {
- "@types/react-router-config": "5.0.2",
- "@umijs/babel-preset-umi": "3.4.20",
- "@umijs/bundler-webpack": "3.4.20",
- "@umijs/deps": "3.4.20",
- "@umijs/renderer-mpa": "3.4.20",
- "@umijs/renderer-react": "3.4.20",
- "@umijs/runtime": "3.4.20",
- "@umijs/server": "3.4.20",
- "@umijs/types": "3.4.20",
- "@umijs/utils": "3.4.20",
- "es5-imcompatible-versions": "^0.1.62",
- "history-with-query": "4.10.4",
- "react-refresh": "0.9.0",
- "react-router": "5.2.0",
- "react-router-config": "5.1.1",
- "react-router-dom": "5.2.0",
- "regenerator-runtime": "0.13.5"
- },
- "dependencies": {
- "regenerator-runtime": {
- "version": "0.13.5",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
- "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
- "dev": true
- }
- }
- },
- "@umijs/preset-react": {
- "version": "1.8.7",
- "resolved": "https://registry.npmjs.org/@umijs/preset-react/-/preset-react-1.8.7.tgz",
- "integrity": "sha512-31VWcTca1sQxebziITWJ0HzevMtaqI0FWbHwiUov/Vw/lNwDS4tOW/oydOsw2Kjw/GUP8EtkVEhuxqLJbWkP0w==",
- "requires": {
- "@umijs/plugin-access": "2.3.3",
- "@umijs/plugin-analytics": "0.2.2",
- "@umijs/plugin-antd": "0.9.1",
- "@umijs/plugin-crossorigin": "1.2.0",
- "@umijs/plugin-dva": "0.12.1",
- "@umijs/plugin-helmet": "1.1.3",
- "@umijs/plugin-initial-state": "2.3.0",
- "@umijs/plugin-layout": "0.15.0",
- "@umijs/plugin-locale": "0.11.2",
- "@umijs/plugin-model": "2.5.7",
- "@umijs/plugin-request": "2.5.2",
- "@umijs/plugin-test": "1.0.0"
- }
- },
- "@umijs/renderer-mpa": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/renderer-mpa/-/renderer-mpa-3.4.20.tgz",
- "integrity": "sha512-bp71yrHiIogv2kFsU37iRWw1zH+9bXD+7F1JO8JiOLPr0xlyRxqDcOrZdQdlbLNARHtWbi8KVAtpGvLSa9V+aw==",
- "dev": true,
- "requires": {
- "@types/react": "^16.9.43",
- "@types/react-dom": "^16.9.8",
- "@umijs/runtime": "3.4.20"
- },
- "dependencies": {
- "@types/react": {
- "version": "16.14.6",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.6.tgz",
- "integrity": "sha512-Ol/aFKune+P0FSFKIgf+XbhGzYGyz0p7g5befSt4rmbzfGLaZR0q7jPew9k7d3bvrcuaL8dPy9Oz3XGZmf9n+w==",
- "dev": true,
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- }
- }
- },
- "@umijs/renderer-react": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/renderer-react/-/renderer-react-3.4.20.tgz",
- "integrity": "sha512-Z8rkeG4Fh3t8SBd6eIMuRHFTVZX+1Hv+GmvD9UaEbeIy+uOr/OWuPIMkKt+ZqTv1GTHACgaSjiYLUymz2hgVEw==",
- "dev": true,
- "requires": {
- "@types/react": "^16.9.43",
- "@types/react-dom": "^16.9.8",
- "@types/react-router-config": "^5.0.2",
- "@umijs/runtime": "3.4.20",
- "react-router-config": "5.1.1"
- },
- "dependencies": {
- "@types/react": {
- "version": "16.14.6",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.6.tgz",
- "integrity": "sha512-Ol/aFKune+P0FSFKIgf+XbhGzYGyz0p7g5befSt4rmbzfGLaZR0q7jPew9k7d3bvrcuaL8dPy9Oz3XGZmf9n+w==",
- "dev": true,
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- }
- }
- },
- "@umijs/route-utils": {
- "version": "1.0.37",
- "resolved": "https://registry.npmjs.org/@umijs/route-utils/-/route-utils-1.0.37.tgz",
- "integrity": "sha512-RQYMYd0w3mKWlCvhUqYN2/dcCD8LxQWsr46DXpaLtqe2Y/8662qXA3E6moaFpyfokKJK6UHt2VxNGhkKPNJIgQ==",
- "requires": {
- "@qixian.cs/path-to-regexp": "^6.1.0",
- "fast-deep-equal": "^3.1.3",
- "lodash.isequal": "^4.5.0",
- "memoize-one": "^5.1.1"
- }
- },
- "@umijs/runtime": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/runtime/-/runtime-3.4.20.tgz",
- "integrity": "sha512-nQwDxDGmJIxMo/9vnNGQk2TVOpNokUf0cel/ROZvvWAvz5UqYUMmh80OpAW+C72qnZazKEqn4IzNUXf4K+LWWg==",
- "dev": true,
- "requires": {
- "@types/react-router": "5.1.12",
- "@types/react-router-dom": "5.1.7",
- "history-with-query": "4.10.4",
- "react-router": "5.2.0",
- "react-router-dom": "5.2.0",
- "use-subscription": "1.5.1"
- },
- "dependencies": {
- "@types/react-router": {
- "version": "5.1.12",
- "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.12.tgz",
- "integrity": "sha512-0bhXQwHYfMeJlCh7mGhc0VJTRm0Gk+Z8T00aiP4702mDUuLs9SMhnd2DitpjWFjdOecx2UXtICK14H9iMnziGA==",
- "dev": true,
- "requires": {
- "@types/history": "*",
- "@types/react": "*"
- }
- }
- }
- },
- "@umijs/server": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/server/-/server-3.4.20.tgz",
- "integrity": "sha512-W3NMKW1oIuQOKYDfaHE+XEOzRa/tvcj9amT85R2RNZafNdk/uDBhf6tuXnKPKo3s6UQzQ3c2TnSrjRT4TiKgNg==",
- "dev": true,
- "requires": {
- "@umijs/deps": "3.4.20",
- "@umijs/utils": "3.4.20"
- }
- },
- "@umijs/test": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/test/-/test-3.4.20.tgz",
- "integrity": "sha512-SZ6p5liWzYowpvRFufPxMSQ6KKjOz27lNFqn4xq5H5SwsKxsxiNxmsu4OaQIprGs1jQ76XWCfq5vpkmy4D+Jtg==",
- "requires": {
- "@babel/core": "7.12.10",
- "@umijs/babel-preset-umi": "3.4.20",
- "@umijs/utils": "3.4.20",
- "babel-core": "7.0.0-bridge.0",
- "babel-jest": "^26.6.3",
- "core-js": "3.8.2",
- "identity-obj-proxy": "3.0.0",
- "jest": "^26.6.3",
- "jest-cli": "^26.6.3",
- "jest-environment-jsdom-fourteen": "1.0.1",
- "regenerator-runtime": "^0.13.7",
- "whatwg-fetch": "^3.5.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "core-js": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.2.tgz",
- "integrity": "sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A=="
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-cli": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
- "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
- "requires": {
- "@jest/core": "^26.6.3",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "import-local": "^3.0.2",
- "is-ci": "^2.0.0",
- "jest-config": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "prompts": "^2.0.1",
- "yargs": "^15.4.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@umijs/types": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/types/-/types-3.4.20.tgz",
- "integrity": "sha512-NknuWFeiNLZrUFbSxzuMzco4+xtu/g852T8zemK/qU1P94RhcgZ4/3BdcS8UgYoi7QUyjI6vKaL3KLzCT7dGFg==",
- "dev": true,
- "requires": {
- "@umijs/babel-preset-umi": "3.4.20",
- "@umijs/core": "3.4.20",
- "@umijs/deps": "3.4.20",
- "@umijs/server": "3.4.20",
- "@umijs/utils": "3.4.20",
- "webpack-chain": "6.5.1"
- }
- },
- "@umijs/utils": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/@umijs/utils/-/utils-3.4.20.tgz",
- "integrity": "sha512-aWjmwd6EE0lzgJr3htHbzVeyh3o66wxtXnFjcAG5MC3rcMx6fv7UftrbpQJ5scgfKxv0nMu9g80XYLJBM6aI+g==",
- "requires": {
- "@umijs/deps": "3.4.20"
- }
- },
- "abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
- },
- "acorn": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ=="
- },
- "acorn-globals": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
- "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
- "requires": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
- },
- "dependencies": {
- "acorn-walk": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
- "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA=="
- }
- }
- },
- "acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
- },
- "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==",
- "requires": {
- "object-assign": "4.x"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "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.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true
- },
- "ansi-escapes": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
- "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
- "requires": {
- "type-fest": "^0.11.0"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
- "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ=="
- }
- }
- },
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "antd": {
- "version": "4.15.5",
- "resolved": "https://registry.npmjs.org/antd/-/antd-4.15.5.tgz",
- "integrity": "sha512-zpdwZmdxZfSCVq6t329jXzq4oHZDDrMsD3L/bNilBJz9Y8yJZ0b4wGrWK7TSRipP2KcUB5Udm+bmfv2RBuzzNA==",
- "requires": {
- "@ant-design/colors": "^6.0.0",
- "@ant-design/icons": "^4.6.2",
- "@ant-design/react-slick": "~0.28.1",
- "@babel/runtime": "^7.12.5",
- "array-tree-filter": "^2.1.0",
- "classnames": "^2.2.6",
- "copy-to-clipboard": "^3.2.0",
- "lodash": "^4.17.21",
- "moment": "^2.25.3",
- "rc-cascader": "~1.4.0",
- "rc-checkbox": "~2.3.0",
- "rc-collapse": "~3.1.0",
- "rc-dialog": "~8.5.1",
- "rc-drawer": "~4.3.0",
- "rc-dropdown": "~3.2.0",
- "rc-field-form": "~1.20.0",
- "rc-image": "~5.2.4",
- "rc-input-number": "~7.1.0",
- "rc-mentions": "~1.5.0",
- "rc-menu": "~8.10.0",
- "rc-motion": "^2.4.0",
- "rc-notification": "~4.5.2",
- "rc-pagination": "~3.1.6",
- "rc-picker": "~2.5.10",
- "rc-progress": "~3.1.0",
- "rc-rate": "~2.9.0",
- "rc-resize-observer": "^1.0.0",
- "rc-select": "~12.1.6",
- "rc-slider": "~9.7.1",
- "rc-steps": "~4.1.0",
- "rc-switch": "~3.2.0",
- "rc-table": "~7.13.0",
- "rc-tabs": "~11.7.0",
- "rc-textarea": "~0.3.0",
- "rc-tooltip": "~5.1.1",
- "rc-tree": "~4.1.0",
- "rc-tree-select": "~4.3.0",
- "rc-trigger": "^5.2.1",
- "rc-upload": "~4.2.0-alpha.0",
- "rc-util": "^5.9.4",
- "scroll-into-view-if-needed": "^2.2.25",
- "warning": "^4.0.3"
- }
- },
- "antd-mobile": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/antd-mobile/-/antd-mobile-2.3.4.tgz",
- "integrity": "sha512-Uw02Ghc+DPzaQceJQ+5p1ZnQFafvILA0chTTen7m7c89Uzbw6Ny3zsVZDE1gfteNEIsL4JpPe0I/+aI3Q/nPAA==",
- "requires": {
- "array-tree-filter": "~2.1.0",
- "babel-runtime": "6.x",
- "classnames": "^2.2.1",
- "normalize.css": "^7.0.0",
- "rc-checkbox": "~2.0.0",
- "rc-collapse": "~1.9.1",
- "rc-slider": "~8.2.0",
- "rc-swipeout": "~2.0.0",
- "rmc-calendar": "^1.0.0",
- "rmc-cascader": "~5.0.0",
- "rmc-date-picker": "^6.0.8",
- "rmc-dialog": "^1.0.1",
- "rmc-drawer": "^0.4.11",
- "rmc-feedback": "^2.0.0",
- "rmc-input-number": "^1.0.0",
- "rmc-list-view": "^0.11.0",
- "rmc-notification": "~1.0.0",
- "rmc-nuka-carousel": "~3.0.0",
- "rmc-picker": "~5.0.0",
- "rmc-pull-to-refresh": "~1.0.1",
- "rmc-steps": "~1.0.0",
- "rmc-tabs": "~1.2.0",
- "rmc-tooltip": "~1.0.0"
- },
- "dependencies": {
- "rc-align": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-2.4.5.tgz",
- "integrity": "sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw==",
- "requires": {
- "babel-runtime": "^6.26.0",
- "dom-align": "^1.7.0",
- "prop-types": "^15.5.8",
- "rc-util": "^4.0.4"
- }
- },
- "rc-checkbox": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.0.3.tgz",
- "integrity": "sha1-Q2qdUIlI4iSYDwU16nOLSBd6jyU=",
- "requires": {
- "babel-runtime": "^6.23.0",
- "classnames": "2.x",
- "prop-types": "15.x",
- "rc-util": "^4.0.4"
- }
- },
- "rc-collapse": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-1.9.3.tgz",
- "integrity": "sha512-8cG+FzudmgFCC9zRGKXJZA36zoI9Dmyjp6UDi8N80sXUch0JOpsZDxgcFzw4HPpPpK/dARtTilEe9zyuspnW0w==",
- "requires": {
- "classnames": "2.x",
- "css-animation": "1.x",
- "prop-types": "^15.5.6",
- "rc-animate": "2.x"
- }
- },
- "rc-slider": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-8.2.0.tgz",
- "integrity": "sha1-rjfRcUTK1g4dpurA7k/8/qCwpug=",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.5",
- "prop-types": "^15.5.4",
- "rc-tooltip": "^3.4.2",
- "rc-util": "^4.0.4",
- "shallowequal": "^1.0.1",
- "warning": "^3.0.0"
- }
- },
- "rc-tooltip": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-3.7.3.tgz",
- "integrity": "sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==",
- "requires": {
- "babel-runtime": "6.x",
- "prop-types": "^15.5.8",
- "rc-trigger": "^2.2.2"
- }
- },
- "rc-trigger": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-2.6.5.tgz",
- "integrity": "sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.6",
- "prop-types": "15.x",
- "rc-align": "^2.4.0",
- "rc-animate": "2.x",
- "rc-util": "^4.4.0",
- "react-lifecycles-compat": "^3.0.4"
- }
- },
- "rc-util": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz",
- "integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
- "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"
- }
- },
- "warning": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
- "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
- "requires": {
- "loose-envify": "^1.0.0"
- }
- }
- }
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "arch": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
- "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ=="
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
- },
- "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="
- },
- "array-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
- "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM="
- },
- "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=="
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
- },
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
- }
- },
- "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.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
- },
- "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=="
- },
- "async-validator": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz",
- "integrity": "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ=="
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
- },
- "autoprefixer": {
- "version": "9.8.6",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
- "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
- "dev": true,
- "requires": {
- "browserslist": "^4.12.0",
- "caniuse-lite": "^1.0.30001109",
- "colorette": "^1.2.1",
- "normalize-range": "^0.1.2",
- "num2fraction": "^1.2.2",
- "postcss": "^7.0.32",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
- },
- "aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
- },
- "axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
- "requires": {
- "follow-redirects": "^1.10.0"
- }
- },
- "babel-core": {
- "version": "7.0.0-bridge.0",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
- "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg=="
- },
- "babel-jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
- "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
- "requires": {
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/babel__core": "^7.1.7",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "babel-plugin-dva-hmr": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-dva-hmr/-/babel-plugin-dva-hmr-0.4.2.tgz",
- "integrity": "sha512-QP5W0IT9LDFgoqkXD0g7wn/FMn7zO562P8qys23twXri4i3E1SGOQ3z7jqcPrqzfTZHx+Ufr+cXy9oI6OLMYZg=="
- },
- "babel-plugin-istanbul": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
- "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^4.0.0",
- "test-exclude": "^6.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
- "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-plugin-macros": {
- "version": "2.8.0",
- "resolved": "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
- "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.7.2",
- "cosmiconfig": "^6.0.0",
- "resolve": "^1.12.0"
- },
- "dependencies": {
- "cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
- "dev": true,
- "requires": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.7.2"
- }
- },
- "import-fresh": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz",
- "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "parse-json": {
- "version": "5.1.0",
- "resolved": "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz",
- "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- }
- }
- },
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- }
- },
- "babel-preset-jest": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
- "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
- "requires": {
- "babel-plugin-jest-hoist": "^26.6.2",
- "babel-preset-current-node-syntax": "^1.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=",
- "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=="
- }
- }
- },
- "backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "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=",
- "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==",
- "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==",
- "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==",
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "base64-arraybuffer": {
- "version": "0.2.0",
- "resolved": "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz",
- "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ=="
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
- },
- "bcp-47": {
- "version": "1.0.8",
- "resolved": "https://registry.yarnpkg.com/bcp-47/-/bcp-47-1.0.8.tgz",
- "integrity": "sha512-Y9y1QNBBtYtv7hcmoX0tR+tUNSFZGZ6OL6vKPObq8BbOhkCoyayF6ogfLTgAli/KuAEbsYHYUNq2AQuY6IuLag==",
- "dev": true,
- "requires": {
- "is-alphabetical": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0"
- }
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
- },
- "bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "optional": true,
- "requires": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "bl": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
- "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
- "dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
- "dependencies": {
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- }
- }
- },
- "bn.js": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
- "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.yarnpkg.com/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": "3.0.2",
- "resolved": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "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=="
- },
- "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.1.0",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
- "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
- "dev": true,
- "requires": {
- "bn.js": "^5.0.0",
- "randombytes": "^2.0.1"
- }
- },
- "browserify-sign": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
- "dev": true,
- "requires": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
- "inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- }
- }
- },
- "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.16.6",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
- "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
- "requires": {
- "caniuse-lite": "^1.0.30001219",
- "colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.723",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.71"
- }
- },
- "bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "requires": {
- "node-int64": "^0.4.0"
- }
- },
- "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"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- }
- }
- },
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.yarnpkg.com/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
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "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"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "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==",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- }
- }
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "caller-callsite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
- "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
- "dev": true,
- "requires": {
- "callsites": "^2.0.0"
- },
- "dependencies": {
- "callsites": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
- "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
- "dev": true
- }
- }
- },
- "caller-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
- "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
- "dev": true,
- "requires": {
- "caller-callsite": "^2.0.0"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
- },
- "caniuse-lite": {
- "version": "1.0.30001228",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz",
- "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A=="
- },
- "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==",
- "requires": {
- "rsvp": "^4.8.4"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.yarnpkg.com/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"
- }
- },
- "char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw=="
- },
- "chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "chart.js": {
- "version": "2.9.4",
- "resolved": "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.4.tgz",
- "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==",
- "requires": {
- "chartjs-color": "^2.1.0",
- "moment": "^2.10.2"
- }
- },
- "chartjs-color": {
- "version": "2.4.1",
- "resolved": "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz",
- "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
- "requires": {
- "chartjs-color-string": "^0.6.0",
- "color-convert": "^1.9.3"
- }
- },
- "chartjs-color-string": {
- "version": "0.6.0",
- "resolved": "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
- "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
- "requires": {
- "color-name": "^1.0.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=="
- },
- "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"
- }
- },
- "cjs-module-lexer": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
- "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw=="
- },
- "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==",
- "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=",
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "classnames": {
- "version": "2.2.6",
- "resolved": "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "cli-spinners": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz",
- "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==",
- "dev": true
- },
- "cli-table": {
- "version": "0.3.4",
- "resolved": "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.4.tgz",
- "integrity": "sha512-1vinpnX/ZERcmE443i3SZTmU5DF0rPO9DrL4I2iVAllhxzCM9SzPlHnz19fsZB78htkKZvYBvj6SZ6vXnaxmTA==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "string-width": "^4.2.0"
- }
- },
- "cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
- "dev": true
- },
- "clipboardy": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz",
- "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
- "requires": {
- "arch": "^2.1.1",
- "execa": "^1.0.0",
- "is-wsl": "^2.1.1"
- }
- },
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "clsx": {
- "version": "1.1.1",
- "resolved": "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz",
- "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
- },
- "collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg=="
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
- "color-name": "1.1.3"
- },
- "dependencies": {
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- }
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "colorette": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
- "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
- },
- "colors": {
- "version": "1.4.0",
- "resolved": "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "component-bind": {
- "version": "1.0.0",
- "resolved": "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz",
- "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
- },
- "component-classes": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz",
- "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=",
- "requires": {
- "component-indexof": "0.0.3"
- }
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
- },
- "component-indexof": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz",
- "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ="
- },
- "compute-scroll-into-view": {
- "version": "1.0.17",
- "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
- "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "concurrently": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
- "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "date-fns": "^2.0.1",
- "lodash": "^4.17.15",
- "read-pkg": "^4.0.1",
- "rxjs": "^6.5.2",
- "spawn-command": "^0.0.2-1",
- "supports-color": "^6.1.0",
- "tree-kill": "^1.2.2",
- "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"
- }
- },
- "date-fns": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz",
- "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-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"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "read-pkg": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
- "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
- "dev": true,
- "requires": {
- "normalize-package-data": "^2.3.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0"
- }
- },
- "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"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "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"
- }
- },
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "connected-react-router": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/connected-react-router/-/connected-react-router-6.5.2.tgz",
- "integrity": "sha512-qzsLPZCofSI80fwy+HgxtEgSGS4ndYUUZAWaw1dqaOGPLKX/FVwIOEb7q+hjHdnZ4v5pKZcNv5GG4urjujIoyA==",
- "requires": {
- "immutable": "^3.8.1",
- "prop-types": "^15.7.2",
- "seamless-immutable": "^7.1.3"
- }
- },
- "console-browserify": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
- "dev": true
- },
- "constants-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
- "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==",
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "cookie_js": {
- "version": "1.4.0",
- "resolved": "https://registry.yarnpkg.com/cookie_js/-/cookie_js-1.4.0.tgz",
- "integrity": "sha512-5TZ/A3eSbN6+MayQPCNlEdU07dYyIyacJ+BIkkIe58hSzRjD68kG/W+imyFtKwoHVvWW9LyU1TpsS//7IHsCAw=="
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
- },
- "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==",
- "requires": {
- "toggle-selection": "^1.0.6"
- }
- },
- "core-js": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "dev": true,
- "requires": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- }
- },
- "create-ecdh": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
- "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.5.3"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
- }
- },
- "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"
- }
- },
- "create-react-class": {
- "version": "15.7.0",
- "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
- "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
- "requires": {
- "loose-envify": "^1.3.1",
- "object-assign": "^4.1.1"
- }
- },
- "cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.1"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "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"
- }
- },
- "cryptr": {
- "version": "6.0.2",
- "resolved": "https://registry.yarnpkg.com/cryptr/-/cryptr-6.0.2.tgz",
- "integrity": "sha512-1TRHI4bmuLIB8WgkH9eeYXzhEg1T4tonO4vVaMBKKde8Dre51J68nAgTVXTwMYXAf7+mV2gBCkm/9wksjSb2sA=="
- },
- "css-animation": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz",
- "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==",
- "requires": {
- "babel-runtime": "6.x",
- "component-classes": "^1.2.5"
- }
- },
- "css-blank-pseudo": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
- "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.5"
- }
- },
- "css-has-pseudo": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz",
- "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.6",
- "postcss-selector-parser": "^5.0.0-rc.4"
- },
- "dependencies": {
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "dev": true,
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- }
- }
- },
- "css-line-break": {
- "version": "1.1.1",
- "resolved": "https://registry.yarnpkg.com/css-line-break/-/css-line-break-1.1.1.tgz",
- "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==",
- "requires": {
- "base64-arraybuffer": "^0.2.0"
- }
- },
- "css-prefers-color-scheme": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
- "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.5"
- }
- },
- "cssdb": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz",
- "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==",
- "dev": true
- },
- "cssesc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
- "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
- "dev": true
- },
- "cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
- },
- "cssstyle": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
- "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
- "requires": {
- "cssom": "0.3.x"
- }
- },
- "csstype": {
- "version": "3.0.5",
- "resolved": "https://registry.yarnpkg.com/csstype/-/csstype-3.0.5.tgz",
- "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ=="
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "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==",
- "requires": {
- "abab": "^2.0.0",
- "whatwg-mimetype": "^2.2.0",
- "whatwg-url": "^7.0.0"
- }
- },
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
- },
- "decimal.js": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz",
- "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw=="
- },
- "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="
- },
- "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="
- },
- "deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
- },
- "defaults": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "dev": true,
- "requires": {
- "clone": "^1.0.2"
- },
- "dependencies": {
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "dev": true
- }
- }
- },
- "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==",
- "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==",
- "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==",
- "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==",
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "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-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA=="
- },
- "diff-sequences": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
- "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q=="
- },
- "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"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
- }
- },
- "disposables": {
- "version": "1.0.2",
- "resolved": "https://registry.yarnpkg.com/disposables/-/disposables-1.0.2.tgz",
- "integrity": "sha1-NsamdEdfVaLWkTVnpgFETkh7S24="
- },
- "dnd-core": {
- "version": "2.6.0",
- "resolved": "https://registry.yarnpkg.com/dnd-core/-/dnd-core-2.6.0.tgz",
- "integrity": "sha1-ErrWbVh0LG5ffPKUP7aFlED4CcQ=",
- "requires": {
- "asap": "^2.0.6",
- "invariant": "^2.0.0",
- "lodash": "^4.2.0",
- "redux": "^3.7.1"
- },
- "dependencies": {
- "redux": {
- "version": "3.7.2",
- "resolved": "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz",
- "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==",
- "requires": {
- "lodash": "^4.2.1",
- "lodash-es": "^4.2.1",
- "loose-envify": "^1.1.0",
- "symbol-observable": "^1.0.3"
- }
- }
- }
- },
- "dom-align": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.1.tgz",
- "integrity": "sha512-CdTD9EdA5WviP8oO3n+okOm0Xt7dSuWxRTLcJiW0memwUr3Tvz66JDDCh9cb50IZFHXvBmLoyX454uJU/EVg+g=="
- },
- "dom-helpers": {
- "version": "5.2.0",
- "resolved": "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz",
- "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==",
- "requires": {
- "@babel/runtime": "^7.8.7",
- "csstype": "^3.0.2"
- }
- },
- "dom-walk": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
- "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
- },
- "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
- },
- "domexception": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
- "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
- "requires": {
- "webidl-conversions": "^4.0.2"
- }
- },
- "dotenv": {
- "version": "8.2.0",
- "resolved": "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz",
- "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw=="
- },
- "dva": {
- "version": "2.6.0-beta.22",
- "resolved": "https://registry.npmjs.org/dva/-/dva-2.6.0-beta.22.tgz",
- "integrity": "sha512-Q19fqiQxtl9L4a/woKoLTStagZR3QxTUEHuFhYBe0RLAf514HEuPmJXQrDz4p+QggNpTaI8lUzzId2TzntAFcQ==",
- "requires": {
- "@babel/runtime": "^7.0.0",
- "@types/isomorphic-fetch": "^0.0.35",
- "@types/react-redux": "^7.1.0",
- "@types/react-router-dom": "^5.1.2",
- "connected-react-router": "6.5.2",
- "dva-core": "2.0.4",
- "global": "^4.3.2",
- "history": "^4.7.2",
- "invariant": "^2.2.4",
- "isomorphic-fetch": "^2.2.1",
- "react-redux": "^7.1.0",
- "react-router-dom": "^5.1.2",
- "redux": "^4.0.1"
- }
- },
- "dva-core": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/dva-core/-/dva-core-2.0.4.tgz",
- "integrity": "sha512-Zh39llFyItu9HKXKfCZVf9UFtDTcypdAjGBew1S+wK8BGVzFpm1GPTdd6uIMeg7O6STtCvt2Qv+RwUut1GFynA==",
- "requires": {
- "@babel/runtime": "^7.0.0",
- "flatten": "^1.0.2",
- "global": "^4.3.2",
- "invariant": "^2.2.1",
- "is-plain-object": "^2.0.3",
- "redux-saga": "^0.16.0",
- "warning": "^3.0.0"
- },
- "dependencies": {
- "warning": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
- "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
- "requires": {
- "loose-envify": "^1.0.0"
- }
- }
- }
- },
- "dva-immer": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/dva-immer/-/dva-immer-0.5.2.tgz",
- "integrity": "sha512-xg23ktGsrdzgiU0ACl8vFm2+E2GBWbtXndXRKM9wtHDR+yMH27NfttVuAZQWvv4aaj6f5/bC+TdsZ9t7n6cAhQ==",
- "requires": {
- "@babel/runtime": "^7.0.0",
- "immer": "^7.0.5"
- }
- },
- "dva-loading": {
- "version": "3.0.22",
- "resolved": "https://registry.npmjs.org/dva-loading/-/dva-loading-3.0.22.tgz",
- "integrity": "sha512-WReyAQwW42aimEwkjDLJSu3W4y1WjkOVcqdIY7x1ARrobgkNC3dVfLe4xUgdtHuLfSJzWa55FrdRrVM3b5QwcA==",
- "requires": {
- "@babel/runtime": "^7.0.0"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "electron-to-chromium": {
- "version": "1.3.727",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz",
- "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg=="
- },
- "elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "dev": true,
- "requires": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
- }
- },
- "emittery": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
- "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ=="
- },
- "emoji-annotation-to-unicode": {
- "version": "0.3.0",
- "resolved": "https://registry.yarnpkg.com/emoji-annotation-to-unicode/-/emoji-annotation-to-unicode-0.3.0.tgz",
- "integrity": "sha1-t20Ygj4dcKlaAXxDjBaO2hKQLzs="
- },
- "emoji-emoticon-to-unicode": {
- "version": "0.2.2",
- "resolved": "https://registry.yarnpkg.com/emoji-emoticon-to-unicode/-/emoji-emoticon-to-unicode-0.2.2.tgz",
- "integrity": "sha1-WuYNU4Utgyi2PzHRyimJfrt4MmA="
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true
- },
- "encoding": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
- "requires": {
- "iconv-lite": "^0.6.2"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
- "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- }
- }
- },
- "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"
- }
- },
- "engine.io-client": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.0.6.tgz",
- "integrity": "sha512-5lPh8rrhxIruo5ZlgFt31KM626o5OCXrCHBweieWWuVicDtnYdz/iR93k6N9k0Xs61WrYxZKIWXzeSaJF6fpNA==",
- "requires": {
- "base64-arraybuffer": "0.1.4",
- "component-emitter": "~1.3.0",
- "debug": "~4.3.1",
- "engine.io-parser": "~4.0.1",
- "has-cors": "1.1.0",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "ws": "~7.4.2",
- "xmlhttprequest-ssl": "~1.5.4",
- "yeast": "0.1.2"
- },
- "dependencies": {
- "base64-arraybuffer": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
- "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
- }
- }
- },
- "engine.io-parser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz",
- "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==",
- "requires": {
- "base64-arraybuffer": "0.1.4"
- },
- "dependencies": {
- "base64-arraybuffer": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
- "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
- }
- }
- },
- "enquire-js": {
- "version": "0.2.1",
- "resolved": "https://registry.yarnpkg.com/enquire-js/-/enquire-js-0.2.1.tgz",
- "integrity": "sha512-4vbcWD0ncK6VQ5M5giOImQb2hFPrKDZH5U+uRX9S6e9vfC6Q5PX6A38PVS6RMnCdr/luDTtJjjLuJinH/+a+Lw==",
- "requires": {
- "enquire.js": "^2.1.6"
- }
- },
- "enquire.js": {
- "version": "2.1.6",
- "resolved": "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz",
- "integrity": "sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ="
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz",
- "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==",
- "requires": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "is-callable": "^1.2.3",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.2",
- "is-string": "^1.0.5",
- "object-inspect": "^1.9.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.0"
- }
- },
- "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-imcompatible-versions": {
- "version": "0.1.69",
- "resolved": "https://registry.npmjs.org/es5-imcompatible-versions/-/es5-imcompatible-versions-0.1.69.tgz",
- "integrity": "sha512-+QW+Q/HBO72pXHiRlWqGXwtxyM83iALRVPV0h/31UnAv5OJ75u1UCn32Kld67BoVMwaBHN2qBGi0SnNmKCkPZA==",
- "dev": true
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
- },
- "escodegen": {
- "version": "1.14.3",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
- "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
- "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
- }
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
- },
- "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": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true
- },
- "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"
- }
- },
- "exec-sh": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
- "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w=="
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "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"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "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="
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "exenv": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
- "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50="
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw="
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "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==",
- "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=",
- "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=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "expect": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
- "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-styles": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "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==",
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "requires": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "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=",
- "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=",
- "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==",
- "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==",
- "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==",
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
- },
- "fast-memoize": {
- "version": "2.5.2",
- "resolved": "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz",
- "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="
- },
- "fb-watchman": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
- "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
- "requires": {
- "bser": "2.1.1"
- }
- },
- "fbjs": {
- "version": "0.8.17",
- "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
- "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
- "requires": {
- "core-js": "^1.0.0",
- "isomorphic-fetch": "^2.1.1",
- "loose-envify": "^1.0.0",
- "object-assign": "^4.1.0",
- "promise": "^7.1.1",
- "setimmediate": "^1.0.5",
- "ua-parser-js": "^0.7.18"
- },
- "dependencies": {
- "core-js": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
- "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
- }
- }
- },
- "feather-reactjs": {
- "version": "2.0.13",
- "resolved": "https://registry.yarnpkg.com/feather-reactjs/-/feather-reactjs-2.0.13.tgz",
- "integrity": "sha512-GBUvl0Wo848AXJ9S67B/fK1/h5jW81x4Whzou7jGG6a/wWuriJ7cRvpaiogkNiGVS4dB6JQsQUo6VjeCXs9jRw==",
- "requires": {
- "prop-types": "^15.7.2"
- }
- },
- "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==",
- "optional": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "filter-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
- "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=",
- "dev": true
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
- }
- }
- },
- "flatten": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz",
- "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg=="
- },
- "follow-redirects": {
- "version": "1.13.1",
- "resolved": "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz",
- "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg=="
- },
- "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="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "fuzzaldrin": {
- "version": "2.1.0",
- "resolved": "https://registry.yarnpkg.com/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz",
- "integrity": "sha1-kCBMPi/appQbso0WZF1BgGOpDps=",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
- },
- "get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- }
- },
- "get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q=="
- },
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "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="
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.yarnpkg.com/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": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "global": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
- "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
- "requires": {
- "min-document": "^2.19.0",
- "process": "^0.11.10"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
- },
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
- },
- "growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
- "optional": true
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "harmony-reflect": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
- "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g=="
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA=="
- },
- "has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "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=",
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hash-base": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- }
- }
- },
- "hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "history": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
- "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
- "requires": {
- "@babel/runtime": "^7.1.2",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^3.0.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0",
- "value-equal": "^1.0.1"
- }
- },
- "history-with-query": {
- "version": "4.10.4",
- "resolved": "https://registry.npmjs.org/history-with-query/-/history-with-query-4.10.4.tgz",
- "integrity": "sha512-JnskQK8X+PbRFHSdDAExhoJyhLnlLZL+UuHQuQhys+Se9/ukRDRBWU4JVTjsiIfbv1fcEmR3oqKW56OYmk5M5w==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.1.2",
- "loose-envify": "^1.2.0",
- "query-string": "^6.11.0",
- "resolve-pathname": "^3.0.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0",
- "value-equal": "^1.0.1"
- },
- "dependencies": {
- "query-string": {
- "version": "6.14.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
- "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
- "dev": true,
- "requires": {
- "decode-uri-component": "^0.2.0",
- "filter-obj": "^1.1.0",
- "split-on-first": "^1.0.0",
- "strict-uri-encode": "^2.0.0"
- }
- },
- "strict-uri-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
- "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=",
- "dev": true
- }
- }
- },
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
- "dev": true,
- "requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "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"
- }
- },
- "howler": {
- "version": "2.2.1",
- "resolved": "https://registry.yarnpkg.com/howler/-/howler-2.2.1.tgz",
- "integrity": "sha512-0iIXvuBO/81CcrQ/HSSweYmbT50fT2mIc9XMFb+kxIfk2pW/iKzDbX1n3fZmDXMEIpYvyyfrB+gXwPYSDqUxIQ=="
- },
- "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==",
- "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=="
- },
- "html2canvas": {
- "version": "1.0.0-rc.7",
- "resolved": "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.0.0-rc.7.tgz",
- "integrity": "sha512-yvPNZGejB2KOyKleZspjK/NruXVQuowu8NnV2HYG7gW7ytzl+umffbtUI62v2dCHQLDdsK6HIDtyJZ0W3neerA==",
- "requires": {
- "css-line-break": "1.1.1"
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "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
- },
- "human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw=="
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "identity-obj-proxy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
- "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=",
- "requires": {
- "harmony-reflect": "^1.4.6"
- }
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true
- },
- "immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
- },
- "immer": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/immer/-/immer-7.0.15.tgz",
- "integrity": "sha512-yM7jo9+hvYgvdCQdqvhCNRRio0SCXc8xDPzA25SvKWa7b1WVPjLwQs1VYU5JPXjcJPTqAa5NP5dqpORGYBQ2AA=="
- },
- "immutability-helper": {
- "version": "2.9.1",
- "resolved": "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.9.1.tgz",
- "integrity": "sha512-r/RmRG8xO06s/k+PIaif2r5rGc3j4Yhc01jSBfwPCXDLYZwp/yxralI37Df1mwmuzcCsen/E/ITKcTEvc1PQmQ==",
- "requires": {
- "invariant": "^2.2.0"
- }
- },
- "immutable": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
- "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM="
- },
- "import-cwd": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
- "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
- "dev": true,
- "requires": {
- "import-from": "^2.1.0"
- }
- },
- "import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
- "dev": true,
- "requires": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
- "dev": true
- }
- }
- },
- "import-from": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
- "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
- "dev": true,
- "requires": {
- "resolve-from": "^3.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
- "dev": true
- }
- }
- },
- "import-local": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
- "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
- },
- "indexes-of": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "inquirer": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
- "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.19",
- "mute-stream": "0.0.8",
- "run-async": "^2.4.0",
- "rxjs": "^6.6.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "intl": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz",
- "integrity": "sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94="
- },
- "intl-format-cache": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-4.3.1.tgz",
- "integrity": "sha512-OEUYNA7D06agqPOYhbTkl0T8HA3QKSuwWh1HiClEnpd9vw7N+3XsQt5iZ0GUEchp5CW1fQk/tary+NsbF3yQ1Q=="
- },
- "intl-messageformat": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-7.8.4.tgz",
- "integrity": "sha512-yS0cLESCKCYjseCOGXuV4pxJm/buTfyCJ1nzQjryHmSehlptbZbn9fnlk1I9peLopZGGbjj46yHHiTAEZ1qOTA==",
- "requires": {
- "intl-format-cache": "^4.2.21",
- "intl-messageformat-parser": "^3.6.4"
- }
- },
- "intl-messageformat-parser": {
- "version": "3.6.4",
- "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-3.6.4.tgz",
- "integrity": "sha512-RgPGwue0mJtoX2Ax8EmMzJzttxjnva7gx0Q7mKJ4oALrTZvtmCeAw5Msz2PcjW4dtCh/h7vN/8GJCxZO1uv+OA==",
- "requires": {
- "@formatjs/intl-unified-numberformat": "^3.2.0"
- }
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "requires": {
- "loose-envify": "^1.0.0"
- }
- },
- "ip-regex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
- "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk="
- },
- "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=",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
- "dev": true
- },
- "is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "dev": true,
- "requires": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
- },
- "is-bigint": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
- "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA=="
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-boolean-object": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz",
- "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==",
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "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.2.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
- "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ=="
- },
- "is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "requires": {
- "ci-info": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
- "requires": {
- "has": "^1.0.3"
- }
- },
- "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=",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-date-object": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz",
- "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A=="
- },
- "is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
- "dev": true
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "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=="
- }
- }
- },
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
- "dev": true
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "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=="
- },
- "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==",
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-interactive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
- "dev": true
- },
- "is-negative-zero": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
- "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
- },
- "is-number-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz",
- "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw=="
- },
- "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=",
- "dev": true
- },
- "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==",
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-potential-custom-element-name": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz",
- "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c="
- },
- "is-regex": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz",
- "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-symbols": "^1.0.2"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
- },
- "is-string": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz",
- "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w=="
- },
- "is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "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=="
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
- },
- "isomorphic-fetch": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
- "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
- "requires": {
- "node-fetch": "^1.0.1",
- "whatwg-fetch": ">=0.10.0"
- }
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg=="
- },
- "istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
- "requires": {
- "@babel/core": "^7.7.5",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
- "istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "istanbul-lib-source-maps": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
- "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.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=="
- }
- }
- },
- "istanbul-reports": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
- "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==",
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- }
- },
- "javascript-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
- "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
- "dev": true
- },
- "jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
- "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
- "requires": {
- "@jest/core": "^26.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^26.6.3"
- },
- "dependencies": {
- "@babel/core": {},
- "@jest/core": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
- "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/reporters": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-changed-files": "^26.6.2",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-resolve-dependencies": "^26.6.3",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "jest-watcher": "^26.6.2",
- "micromatch": "^4.0.2",
- "p-each-series": "^2.1.0",
- "rimraf": "^3.0.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw="
- },
- "jest-runner": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
- "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.7.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-docblock": "^26.0.0",
- "jest-haste-map": "^26.6.2",
- "jest-leak-detector": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "source-map-support": "^0.5.6",
- "throat": "^5.0.0"
- }
- },
- "jest-snapshot": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
- "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
- "requires": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.0.0",
- "chalk": "^4.0.0",
- "expect": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-haste-map": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "natural-compare": "^1.4.0",
- "pretty-format": "^26.6.2",
- "semver": "^7.3.2"
- }
- }
- }
- },
- "@jest/test-sequencer": {},
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "acorn-globals": {},
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "import-local": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
- "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "jest-cli": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
- "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
- "requires": {
- "@jest/core": "^26.6.3",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "import-local": "^3.0.2",
- "is-ci": "^2.0.0",
- "jest-config": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "prompts": "^2.0.1",
- "yargs": "^15.4.1"
- },
- "dependencies": {
- "prompts": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz",
- "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==",
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- }
- }
- },
- "jest-jasmine2": {},
- "jest-runner": {},
- "jest-snapshot": {},
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "jsdom": {},
- "node-notifier": {},
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-changed-files": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
- "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
- "requires": {
- "@jest/types": "^26.6.2",
- "execa": "^4.0.0",
- "throat": "^5.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- }
- },
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-config": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
- "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/test-sequencer": "^26.6.3",
- "@jest/types": "^26.6.2",
- "babel-jest": "^26.6.3",
- "chalk": "^4.0.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.1",
- "graceful-fs": "^4.2.4",
- "jest-environment-jsdom": "^26.6.2",
- "jest-environment-node": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-jasmine2": "^26.6.3",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "@babel/core": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz",
- "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==",
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.0",
- "@babel/helper-compilation-targets": "^7.13.16",
- "@babel/helper-module-transforms": "^7.14.0",
- "@babel/helpers": "^7.14.0",
- "@babel/parser": "^7.14.0",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- }
- }
- },
- "@babel/generator": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz",
- "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==",
- "requires": {
- "@babel/types": "^7.14.1",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.0",
- "to-fast-properties": "^2.0.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- }
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
- "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
- },
- "@babel/parser": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz",
- "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q=="
- },
- "@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- }
- },
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "babel-jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
- "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
- "requires": {
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/babel__core": "^7.1.7",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "slash": "^3.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
- "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- }
- },
- "babel-preset-jest": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
- "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
- "requires": {
- "babel-plugin-jest-hoist": "^26.6.2",
- "babel-preset-current-node-syntax": "^1.0.0"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-diff": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
- "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
- "requires": {
- "chalk": "^4.0.0",
- "diff-sequences": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-docblock": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
- "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
- "requires": {
- "detect-newline": "^3.0.0"
- }
- },
- "jest-each": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
- "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
- "requires": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-environment-jsdom": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
- "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2",
- "jsdom": "^16.4.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
- "requires": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
- },
- "dependencies": {
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
- }
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
- "requires": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
- },
- "dependencies": {
- "abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
- },
- "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=="
- }
- }
- },
- "domexception": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
- "requires": {
- "webidl-conversions": "^5.0.0"
- },
- "dependencies": {
- "webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA=="
- }
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
- "requires": {
- "whatwg-encoding": "^1.0.5"
- },
- "dependencies": {
- "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==",
- "requires": {
- "iconv-lite": "0.4.24"
- }
- }
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "jsdom": {
- "version": "16.4.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz",
- "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==",
- "requires": {
- "abab": "^2.0.3",
- "acorn": "^7.1.1",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.2.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.0",
- "domexception": "^2.0.1",
- "escodegen": "^1.14.1",
- "html-encoding-sniffer": "^2.0.1",
- "is-potential-custom-element-name": "^1.0.0",
- "nwsapi": "^2.2.0",
- "parse5": "5.1.1",
- "request": "^2.88.2",
- "request-promise-native": "^1.0.8",
- "saxes": "^5.0.0",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^3.0.1",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0",
- "ws": "^7.2.3",
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
- },
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
- },
- "cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
- },
- "cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "requires": {
- "cssom": "~0.3.6"
- },
- "dependencies": {
- "cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
- }
- }
- },
- "escodegen": {
- "version": "1.14.3",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
- "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
- "requires": {
- "esprima": "^4.0.1",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- }
- },
- "nwsapi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
- },
- "request-promise-native": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
- "requires": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- },
- "dependencies": {
- "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==",
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.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=="
- },
- "tough-cookie": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
- "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
- "requires": {
- "ip-regex": "^2.1.0",
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "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==",
- "requires": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "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==",
- "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=="
- },
- "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=="
- }
- }
- },
- "parse5": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
- "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
- },
- "saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
- "requires": {
- "xmlchars": "^2.2.0"
- },
- "dependencies": {
- "xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
- }
- }
- },
- "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
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "tr46": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
- "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
- "requires": {
- "punycode": "^2.1.1"
- }
- },
- "w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "requires": {
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "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=="
- }
- }
- },
- "webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
- },
- "whatwg-url": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz",
- "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==",
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^2.0.2",
- "webidl-conversions": "^6.1.0"
- },
- "dependencies": {
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
- }
- }
- }
- }
- },
- "jest-environment-jsdom-fourteen": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz",
- "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==",
- "requires": {
- "@jest/environment": "^24.3.0",
- "@jest/fake-timers": "^24.3.0",
- "@jest/types": "^24.3.0",
- "jest-mock": "^24.0.0",
- "jest-util": "^24.0.0",
- "jsdom": "^14.1.0"
- },
- "dependencies": {
- "@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==",
- "requires": {
- "@jest/source-map": "^24.9.0",
- "chalk": "^2.0.1",
- "slash": "^2.0.0"
- }
- },
- "@jest/environment": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz",
- "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==",
- "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==",
- "requires": {
- "@jest/types": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-mock": "^24.9.0"
- }
- },
- "@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==",
- "requires": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.1.15",
- "source-map": "^0.6.0"
- }
- },
- "@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==",
- "requires": {
- "@jest/console": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/istanbul-lib-coverage": "^2.0.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==",
- "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"
- }
- },
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
- "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
- "requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/stack-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
- "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw=="
- },
- "@types/yargs": {
- "version": "13.0.11",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz",
- "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==",
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "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==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "find-up": "^3.0.0",
- "istanbul-lib-instrument": "^3.3.0",
- "test-exclude": "^5.2.3"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "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=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "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=",
- "requires": {
- "is-extendable": "^0.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==",
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "optional": true,
- "requires": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "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=="
- },
- "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==",
- "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"
- }
- },
- "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==",
- "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-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==",
- "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==",
- "requires": {
- "@jest/types": "^24.9.0"
- }
- },
- "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=="
- },
- "jest-serializer": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
- "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ=="
- },
- "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==",
- "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"
- }
- },
- "jest-worker": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
- "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
- "requires": {
- "merge-stream": "^2.0.0",
- "supports-color": "^6.1.0"
- }
- },
- "jsdom": {
- "version": "14.1.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz",
- "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==",
- "requires": {
- "abab": "^2.0.0",
- "acorn": "^6.0.4",
- "acorn-globals": "^4.3.0",
- "array-equal": "^1.0.0",
- "cssom": "^0.3.4",
- "cssstyle": "^1.1.1",
- "data-urls": "^1.1.0",
- "domexception": "^1.0.1",
- "escodegen": "^1.11.0",
- "html-encoding-sniffer": "^1.0.2",
- "nwsapi": "^2.1.3",
- "parse5": "5.1.0",
- "pn": "^1.1.0",
- "request": "^2.88.0",
- "request-promise-native": "^1.0.5",
- "saxes": "^3.1.9",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^2.5.0",
- "w3c-hr-time": "^1.0.1",
- "w3c-xmlserializer": "^1.1.2",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^7.0.0",
- "ws": "^6.1.2",
- "xml-name-validator": "^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==",
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "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"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- },
- "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==",
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "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==",
- "requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "stack-utils": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
- "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
- "requires": {
- "escape-string-regexp": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "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==",
- "requires": {
- "glob": "^7.1.3",
- "minimatch": "^3.0.4",
- "read-pkg-up": "^4.0.0",
- "require-main-filename": "^2.0.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=",
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "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==",
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "ws": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
- "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
- "requires": {
- "async-limiter": "~1.0.0"
- }
- }
- }
- },
- "jest-environment-node": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
- "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-get-type": {
- "version": "26.3.0",
- "resolved": "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz",
- "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-jasmine2": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
- "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
- "requires": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^26.6.2",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2",
- "throat": "^5.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-leak-detector": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
- "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
- "requires": {
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- }
- },
- "jest-matcher-utils": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
- "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
- "requires": {
- "chalk": "^4.0.0",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-message-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
- "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-mock": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
- "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-pnp-resolver": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
- "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w=="
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-resolve": {
- "version": "26.6.2",
- "resolved": "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz",
- "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
- "requires": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^26.6.2",
- "read-pkg-up": "^7.0.1",
- "resolve": "^1.18.1",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-resolve-dependencies": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
- "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
- "requires": {
- "@jest/types": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-snapshot": "^26.6.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-runner": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
- "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.7.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-docblock": "^26.0.0",
- "jest-haste-map": "^26.6.2",
- "jest-leak-detector": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "source-map-support": "^0.5.6",
- "throat": "^5.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-runtime": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
- "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/globals": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^0.6.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0",
- "yargs": "^15.4.1"
- },
- "dependencies": {
- "@jest/transform": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
- "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- }
- },
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-snapshot": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
- "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
- "requires": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.0.0",
- "chalk": "^4.0.0",
- "expect": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-haste-map": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "natural-compare": "^1.4.0",
- "pretty-format": "^26.6.2",
- "semver": "^7.3.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-haste-map": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- }
- },
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
- },
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-validate": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
- "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
- "requires": {
- "@jest/types": "^26.6.2",
- "camelcase": "^6.0.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "leven": "^3.1.0",
- "pretty-format": "^26.6.2"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "camelcase": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg=="
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-watcher": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
- "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
- "requires": {
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "jest-util": "^26.6.2",
- "string-length": "^4.0.1"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-worker": {
- "version": "26.6.2",
- "resolved": "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz",
- "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jquery": {
- "version": "3.5.1",
- "resolved": "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz",
- "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "json2mq": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
- "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=",
- "requires": {
- "string-convert": "^0.2.0"
- }
- },
- "json5": {
- "version": "2.1.3",
- "resolved": "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- }
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "resolved": "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "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=="
- },
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
- },
- "less-vars-to-js": {
- "version": "1.3.0",
- "resolved": "https://registry.yarnpkg.com/less-vars-to-js/-/less-vars-to-js-1.3.0.tgz",
- "integrity": "sha512-xeiLLn/IMCGtdyCkYQnW8UuzoW2oYMCKg9boZRaGI58fLz5r90bNJDlqGzmVt/1Uqk75/DxIVtQSNCMkE5fRZQ==",
- "requires": {
- "strip-json-comments": "^2.0.1"
- }
- },
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
- },
- "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"
- }
- },
- "lie": {
- "version": "3.1.1",
- "resolved": "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz",
- "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
- "requires": {
- "immediate": "~3.0.5"
- }
- },
- "lines-and-columns": {
- "version": "1.1.6",
- "resolved": "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
- "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
- },
- "linkify-it": {
- "version": "2.2.0",
- "resolved": "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz",
- "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
- "requires": {
- "uc.micro": "^1.0.1"
- }
- },
- "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=",
- "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="
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
- }
- }
- },
- "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"
- }
- }
- }
- },
- "localforage": {
- "version": "1.9.0",
- "resolved": "https://registry.yarnpkg.com/localforage/-/localforage-1.9.0.tgz",
- "integrity": "sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==",
- "requires": {
- "lie": "3.1.1"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "lodash-es": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz",
- "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ=="
- },
- "lodash.compact": {
- "version": "3.0.1",
- "resolved": "https://registry.yarnpkg.com/lodash.compact/-/lodash.compact-3.0.1.tgz",
- "integrity": "sha1-VAzjg3dFl1gHRx4WtKK6IeclbKU="
- },
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
- "dev": true
- },
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
- "lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
- },
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
- },
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
- },
- "lodash.throttle": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
- "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.yarnpkg.com/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": "6.0.0",
- "resolved": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "make-plural": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-6.2.2.tgz",
- "integrity": "sha512-8iTuFioatnTTmb/YJjywkVIHLjcwkFD9Ms0JpxjEm9Mo8eQYkh1z+55dwv4yc1jQ8ftVBxWQbihvZL1DfzGGWA=="
- },
- "makeerror": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
- "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
- "requires": {
- "tmpl": "1.0.x"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "material-colors": {
- "version": "1.2.6",
- "resolved": "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz",
- "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg=="
- },
- "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"
- }
- },
- "memoize-one": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
- "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
- },
- "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=="
- },
- "messageformat-parser": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/messageformat-parser/-/messageformat-parser-4.1.3.tgz",
- "integrity": "sha512-2fU3XDCanRqeOCkn7R5zW5VQHWf+T3hH65SzuqRvjatBK7r4uyFa5mEX+k6F9Bd04LVM5G4/BHBTUJsOdW7uyg=="
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "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"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
- }
- },
- "mime-db": {
- "version": "1.44.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
- "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
- },
- "mime-types": {
- "version": "2.1.27",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
- "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
- "requires": {
- "mime-db": "1.44.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
- },
- "min-document": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
- "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
- "requires": {
- "dom-walk": "^0.1.0"
- }
- },
- "mini-create-react-context": {
- "version": "0.4.1",
- "resolved": "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
- "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
- "requires": {
- "@babel/runtime": "^7.12.1",
- "tiny-warning": "^1.0.3"
- }
- },
- "mini-store": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.6.tgz",
- "integrity": "sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ==",
- "requires": {
- "hoist-non-react-statics": "^3.3.2",
- "shallowequal": "^1.0.2"
- }
- },
- "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.yarnpkg.com/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.yarnpkg.com/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "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==",
- "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==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "moment": {
- "version": "2.29.1",
- "resolved": "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz",
- "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "nan": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
- "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
- "optional": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
- },
- "node-fetch": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
- "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
- "requires": {
- "encoding": "^0.1.11",
- "is-stream": "^1.0.1"
- }
- },
- "node-gettext": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/node-gettext/-/node-gettext-3.0.0.tgz",
- "integrity": "sha512-/VRYibXmVoN6tnSAY2JWhNRhWYJ8Cd844jrZU/DwLVoI4vBI6ceYbd8i42sYZ9uOgDH3S7vslIKOWV/ZrT2YBA==",
- "dev": true,
- "requires": {
- "lodash.get": "^4.4.2"
- }
- },
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs="
- },
- "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": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- },
- "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==",
- "dev": 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"
- },
- "dependencies": {
- "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==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- }
- }
- },
- "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="
- },
- "node-notifier": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz",
- "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==",
- "optional": true,
- "requires": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.2",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.0",
- "which": "^2.0.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
- "optional": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "node-releases": {
- "version": "1.1.71",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
- "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg=="
- }
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
- },
- "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-url": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
- "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
- "dev": true,
- "requires": {
- "object-assign": "^4.0.1",
- "prepend-http": "^1.0.0",
- "query-string": "^4.1.0",
- "sort-keys": "^1.0.0"
- }
- },
- "normalize.css": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-7.0.0.tgz",
- "integrity": "sha1-q/sd2CRwZ04DIrU86xqvQSk45L8="
- },
- "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=",
- "requires": {
- "path-key": "^2.0.0"
- },
- "dependencies": {
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
- }
- }
- },
- "num2fraction": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
- "dev": true
- },
- "nwsapi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.yarnpkg.com/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=",
- "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=",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-inspect": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz",
- "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw=="
- },
- "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=",
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- }
- },
- "object.getownpropertydescriptors": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz",
- "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "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"
- }
- },
- "ora": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.2.0.tgz",
- "integrity": "sha512-+wG2v8TUU8EgzPHun1k/n45pXquQ9fHnbXVetl9rRgO6kjZszGGbraF3XPTIdgeA+s1lbRjSEftAnyT0w8ZMvQ==",
- "dev": true,
- "requires": {
- "bl": "^4.0.3",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "log-symbols": "^4.0.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "log-symbols": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
- "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "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-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "p-each-series": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
- "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA=="
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
- },
- "pako": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
- },
- "papaparse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.0.tgz",
- "integrity": "sha512-Lb7jN/4bTpiuGPrYy4tkKoUS8sTki8zacB5ke1p5zolhcSE4TlWgrlsxjrDTbG/dFVh07ck7X36hUf/b5V68pg==",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- },
- "dependencies": {
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- }
- }
- },
- "parse-asn1": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "dev": true,
- "requires": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "parse5": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
- "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ=="
- },
- "parseqs": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
- "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
- },
- "parseuri": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
- "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
- },
- "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-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
- },
- "path-to-regexp": {
- "version": "6.2.0",
- "resolved": "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz",
- "integrity": "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "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="
- }
- }
- },
- "pbkdf2": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
- "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
- "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"
- }
- },
- "perfect-scrollbar": {
- "version": "1.5.0",
- "resolved": "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz",
- "integrity": "sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA=="
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
- "picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
- },
- "pirates": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
- "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
- "requires": {
- "node-modules-regexp": "^1.0.0"
- }
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "platform": {
- "version": "1.3.6",
- "resolved": "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz",
- "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
- },
- "plurals-cldr": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/plurals-cldr/-/plurals-cldr-1.0.4.tgz",
- "integrity": "sha512-4nLXqtel7fsCgzi8dvRZvUjfL8SXpP982sKg7b2TgpnR8rDnes06iuQ83trQ/+XdtyMIQkBBbKzX6x97eLfsJQ==",
- "dev": true
- },
- "pn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
- "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA=="
- },
- "pofile": {
- "version": "1.1.0",
- "resolved": "https://registry.yarnpkg.com/pofile/-/pofile-1.1.0.tgz",
- "integrity": "sha512-6XYcNkXWGiJ2CVXogTP7uJ6ZXQCldYLZc16wgRp8tqRaBTTyIfF+TUT3EQJPXTLAT7OTPpTAoaFdoXKfaTRU1w==",
- "dev": true
- },
- "popper.js": {
- "version": "1.16.1",
- "resolved": "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz",
- "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
- },
- "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="
- },
- "postcss": {
- "version": "7.0.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
- "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
- "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-attribute-case-insensitive": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz",
- "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^6.0.2"
- }
- },
- "postcss-color-functional-notation": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz",
- "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-color-gray": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
- "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==",
- "dev": true,
- "requires": {
- "@csstools/convert-colors": "^1.4.0",
- "postcss": "^7.0.5",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-color-hex-alpha": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz",
- "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.14",
- "postcss-values-parser": "^2.0.1"
- }
- },
- "postcss-color-mod-function": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz",
- "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==",
- "dev": true,
- "requires": {
- "@csstools/convert-colors": "^1.4.0",
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-color-rebeccapurple": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
- "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-custom-media": {
- "version": "7.0.8",
- "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz",
- "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.14"
- }
- },
- "postcss-custom-properties": {
- "version": "8.0.11",
- "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz",
- "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.17",
- "postcss-values-parser": "^2.0.1"
- }
- },
- "postcss-custom-selectors": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
- "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^5.0.0-rc.3"
- },
- "dependencies": {
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "dev": true,
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- }
- }
- },
- "postcss-dir-pseudo-class": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz",
- "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^5.0.0-rc.3"
- },
- "dependencies": {
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "dev": true,
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- }
- }
- },
- "postcss-double-position-gradients": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz",
- "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.5",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-env-function": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
- "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-flexbugs-fixes": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz",
- "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.26"
- }
- },
- "postcss-focus-visible": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
- "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-focus-within": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
- "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-font-variant": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz",
- "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-gap-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
- "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-image-set-function": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz",
- "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-initial": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz",
- "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-lab-function": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
- "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==",
- "dev": true,
- "requires": {
- "@csstools/convert-colors": "^1.4.0",
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-load-config": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
- "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
- "dev": true,
- "requires": {
- "cosmiconfig": "^5.0.0",
- "import-cwd": "^2.0.0"
- }
- },
- "postcss-loader": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
- "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "postcss": "^7.0.0",
- "postcss-load-config": "^2.0.0",
- "schema-utils": "^1.0.0"
- }
- },
- "postcss-logical": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
- "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-media-minmax": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
- "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-nesting": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
- "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-overflow-shorthand": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
- "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-page-break": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
- "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-place": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
- "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-values-parser": "^2.0.0"
- }
- },
- "postcss-preset-env": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
- "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==",
- "dev": true,
- "requires": {
- "autoprefixer": "^9.6.1",
- "browserslist": "^4.6.4",
- "caniuse-lite": "^1.0.30000981",
- "css-blank-pseudo": "^0.1.4",
- "css-has-pseudo": "^0.10.0",
- "css-prefers-color-scheme": "^3.1.1",
- "cssdb": "^4.4.0",
- "postcss": "^7.0.17",
- "postcss-attribute-case-insensitive": "^4.0.1",
- "postcss-color-functional-notation": "^2.0.1",
- "postcss-color-gray": "^5.0.0",
- "postcss-color-hex-alpha": "^5.0.3",
- "postcss-color-mod-function": "^3.0.3",
- "postcss-color-rebeccapurple": "^4.0.1",
- "postcss-custom-media": "^7.0.8",
- "postcss-custom-properties": "^8.0.11",
- "postcss-custom-selectors": "^5.1.2",
- "postcss-dir-pseudo-class": "^5.0.0",
- "postcss-double-position-gradients": "^1.0.0",
- "postcss-env-function": "^2.0.2",
- "postcss-focus-visible": "^4.0.0",
- "postcss-focus-within": "^3.0.0",
- "postcss-font-variant": "^4.0.0",
- "postcss-gap-properties": "^2.0.0",
- "postcss-image-set-function": "^3.0.1",
- "postcss-initial": "^3.0.0",
- "postcss-lab-function": "^2.0.1",
- "postcss-logical": "^3.0.0",
- "postcss-media-minmax": "^4.0.0",
- "postcss-nesting": "^7.0.0",
- "postcss-overflow-shorthand": "^2.0.0",
- "postcss-page-break": "^2.0.0",
- "postcss-place": "^4.0.1",
- "postcss-pseudo-class-any-link": "^6.0.0",
- "postcss-replace-overflow-wrap": "^3.0.0",
- "postcss-selector-matches": "^4.0.0",
- "postcss-selector-not": "^4.0.0"
- }
- },
- "postcss-pseudo-class-any-link": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz",
- "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^5.0.0-rc.3"
- },
- "dependencies": {
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "dev": true,
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- }
- }
- },
- "postcss-replace-overflow-wrap": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz",
- "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.2"
- }
- },
- "postcss-safe-parser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
- "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.26"
- }
- },
- "postcss-selector-matches": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
- "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "postcss": "^7.0.2"
- }
- },
- "postcss-selector-not": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz",
- "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "postcss": "^7.0.2"
- }
- },
- "postcss-selector-parser": {
- "version": "6.0.4",
- "resolved": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
- "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
- "dev": true,
- "requires": {
- "cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1",
- "util-deprecate": "^1.0.2"
- },
- "dependencies": {
- "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
- }
- }
- },
- "postcss-value-parser": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
- "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
- "dev": true
- },
- "postcss-values-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz",
- "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==",
- "dev": true,
- "requires": {
- "flatten": "^1.0.2",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
- },
- "prepend-http": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
- "dev": true
- },
- "pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- },
- "dependencies": {
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "react-is": {
- "version": "17.0.1",
- "resolved": "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz",
- "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
- },
- "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==",
- "dev": true
- },
- "promise": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
- "requires": {
- "asap": "~2.0.3"
- }
- },
- "prompts": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz",
- "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==",
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- },
- "prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.yarnpkg.com/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"
- }
- },
- "pseudolocale": {
- "version": "1.2.0",
- "resolved": "https://registry.yarnpkg.com/pseudolocale/-/pseudolocale-1.2.0.tgz",
- "integrity": "sha512-k0OQFvIlvpRdzR0dPVrrbWX7eE9EaZ6gpZtTlFSDi1Gf9tMy9wiANCNu7JZ0drcKgUri/39a2mBbH0goiQmrmQ==",
- "dev": true,
- "requires": {
- "commander": "*"
- }
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "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"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
- }
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "qs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
- "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "query-string": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
- "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
- "dev": true,
- "requires": {
- "object-assign": "^4.1.0",
- "strict-uri-encode": "^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
- },
- "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"
- }
- },
- "ramda": {
- "version": "0.27.1",
- "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
- "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==",
- "dev": true
- },
- "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"
- }
- },
- "rc-align": {
- "version": "4.0.9",
- "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.9.tgz",
- "integrity": "sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "dom-align": "^1.7.0",
- "rc-util": "^5.3.0",
- "resize-observer-polyfill": "^1.5.1"
- }
- },
- "rc-animate": {
- "version": "2.11.1",
- "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.11.1.tgz",
- "integrity": "sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ==",
- "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"
- },
- "dependencies": {
- "rc-util": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz",
- "integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
- "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-cascader": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.4.2.tgz",
- "integrity": "sha512-JVuLGrSi+3G8DZyPvlKlGVWJjhoi9NTz6REHIgRspa5WnznRkKGm2ejb0jJtz0m2IL8Q9BG4ZA2sXuqAu71ltQ==",
- "requires": {
- "@babel/runtime": "^7.12.5",
- "array-tree-filter": "^2.1.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.0.1",
- "warning": "^4.0.1"
- }
- },
- "rc-checkbox": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz",
- "integrity": "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1"
- }
- },
- "rc-collapse": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.0.tgz",
- "integrity": "sha512-EwpNPJcLe7b+5JfyaxM9ZNnkCgqArt3QQO0Cr5p5plwz/C9h8liAmjYY5I4+hl9lAjBqb7ZwLu94+z+rt5g1WQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.3.4",
- "rc-util": "^5.2.1",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-dialog": {
- "version": "8.5.2",
- "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.5.2.tgz",
- "integrity": "sha512-3n4taFcjqhTE9uNuzjB+nPDeqgRBTEGBfe46mb1e7r88DgDo0lL4NnxY/PZ6PJKd2tsCt+RrgF/+YeTvJ/Thsw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-motion": "^2.3.0",
- "rc-util": "^5.6.1"
- }
- },
- "rc-drawer": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.3.1.tgz",
- "integrity": "sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-util": "^5.7.0"
- }
- },
- "rc-dropdown": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.0.tgz",
- "integrity": "sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-trigger": "^5.0.4"
- }
- },
- "rc-field-form": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.20.0.tgz",
- "integrity": "sha512-jkzsIfXR7ywEYdeAtktt1aLff88wxIPDLpq7KShHNl4wlsWrCE+TzkXBfjvVzYOVZt5GGrD8YDqNO/q6eaR/eA==",
- "requires": {
- "@babel/runtime": "^7.8.4",
- "async-validator": "^3.0.3",
- "rc-util": "^5.8.0"
- }
- },
- "rc-gesture": {
- "version": "0.0.22",
- "resolved": "https://registry.npmjs.org/rc-gesture/-/rc-gesture-0.0.22.tgz",
- "integrity": "sha512-6G6qrCE0MUTXyjh/powj91XkjRjoFL4HiJLPU5lALXHvGX+/efcUjGYUrHrrw0mwQdmrmg4POqnY/bibns+G3g==",
- "requires": {
- "babel-runtime": "6.x"
- }
- },
- "rc-image": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.2.4.tgz",
- "integrity": "sha512-kWOjhZC1OoGKfvWqtDoO9r8WUNswBwnjcstI6rf7HMudz0usmbGvewcWqsOhyaBRJL9+I4eeG+xiAoxV1xi75Q==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.2.6",
- "rc-dialog": "~8.5.0",
- "rc-util": "^5.0.6"
- }
- },
- "rc-input-number": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.1.0.tgz",
- "integrity": "sha512-ewgtKZaDmwbOWX8DXBGV+amp1IiGS8G+5xDqn85CK1BiQMwsQdrmMEqNkbTdxO8EmYbwN1iQQ4t82IkAaIoa3A==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.9.8"
- }
- },
- "rc-mentions": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.5.3.tgz",
- "integrity": "sha512-NG/KB8YiKBCJPHHvr/QapAb4f9YzLJn7kDHtmI1K6t7ZMM5YgrjIxNNhoRKKP9zJvb9PdPts69Hbg4ZMvLVIFQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-menu": "^8.0.1",
- "rc-textarea": "^0.3.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.0.1"
- }
- },
- "rc-menu": {
- "version": "8.10.7",
- "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.10.7.tgz",
- "integrity": "sha512-m/ypV7OjkkUsMdutzMUxEI8tWyi0Y1TQ5YkSDk7k2uv2aCKkHYEoDKsDAfcPeejo3HMo2z5unWE+jD+dCphraw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "mini-store": "^3.0.1",
- "rc-motion": "^2.0.1",
- "rc-trigger": "^5.1.2",
- "rc-util": "^5.7.0",
- "resize-observer-polyfill": "^1.5.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-motion": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.3.tgz",
- "integrity": "sha512-GZLLFXHl/VqTfI7bSZNNZozcblNmDka1AAoQig7EZ6s0rWg5y0RlgrcHWO+W+nrOVbYfJDxoaQUoP2fEmvCWmA==",
- "requires": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.2.1"
- }
- },
- "rc-notification": {
- "version": "4.5.5",
- "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.5.tgz",
- "integrity": "sha512-YIfhTSw+h5GsSdgMnuMx24wqiPlg3FeamuOlkh9RkyHx+SeZVAKzQ0juy2NGvPEF2hDWi5xTqxUqLdo0L2AmGg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.2.0",
- "rc-util": "^5.0.1"
- }
- },
- "rc-overflow": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.1.1.tgz",
- "integrity": "sha512-bkGrxvWtz6xQfxBPBQcN8xOEHFCeG0R4pfLAku6kFLQF9NPMTt5HvT+Bq0+stqom9eI3WRlun6RPzfjTamPwew==",
- "requires": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.5.1"
- }
- },
- "rc-pagination": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.6.tgz",
- "integrity": "sha512-Pb2zJEt8uxXzYCWx/2qwsYZ3vSS9Eqdw0cJBli6C58/iYhmvutSBqrBJh51Z5UzYc5ZcW5CMeP5LbbKE1J3rpw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1"
- }
- },
- "rc-picker": {
- "version": "2.5.10",
- "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.10.tgz",
- "integrity": "sha512-d2or2jql9SSY8CaRPybpbKkXBq3bZ6g88UKyWQZBLTCrc92Xm87RfRC/P3UEQo/CLmia3jVF7IXVi1HmNe2DZA==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "date-fns": "^2.15.0",
- "moment": "^2.24.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.4.0",
- "shallowequal": "^1.1.0"
- },
- "dependencies": {
- "date-fns": {
- "version": "2.21.3",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.3.tgz",
- "integrity": "sha512-HeYdzCaFflc1i4tGbj7JKMjM4cKGYoyxwcIIkHzNgCkX8xXDNJDZXgDDVchIWpN4eQc3lH37WarduXFZJOtxfw=="
- }
- }
- },
- "rc-progress": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.1.3.tgz",
- "integrity": "sha512-Jl4fzbBExHYMoC6HBPzel0a9VmhcSXx24LVt/mdhDM90MuzoMCJjXZAlhA0V0CJi+SKjMhfBoIQ6Lla1nD4QNw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6"
- }
- },
- "rc-rate": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.1.tgz",
- "integrity": "sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.0.1"
- }
- },
- "rc-resize-observer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz",
- "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.0.0",
- "resize-observer-polyfill": "^1.5.1"
- }
- },
- "rc-select": {
- "version": "12.1.10",
- "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-12.1.10.tgz",
- "integrity": "sha512-LQdUhYncvcULlrNcAShYicc1obPtnNK7/rvCD+YCm0b2BLLYxl3M3b/HOX6o+ppPej+yZulkUPeU6gcgcp9nag==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.0.1",
- "rc-overflow": "^1.0.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.9.8",
- "rc-virtual-list": "^3.2.0"
- }
- },
- "rc-slider": {
- "version": "9.7.2",
- "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.2.tgz",
- "integrity": "sha512-mVaLRpDo6otasBs6yVnG02ykI3K6hIrLTNfT5eyaqduFv95UODI9PDS6fWuVVehVpdS4ENgOSwsTjrPVun+k9g==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-tooltip": "^5.0.1",
- "rc-util": "^5.0.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-steps": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.3.tgz",
- "integrity": "sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA==",
- "requires": {
- "@babel/runtime": "^7.10.2",
- "classnames": "^2.2.3",
- "rc-util": "^5.0.1"
- }
- },
- "rc-swipeout": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/rc-swipeout/-/rc-swipeout-2.0.11.tgz",
- "integrity": "sha512-d37Lgn4RX4OOQyuA2BFo0rGlUwrmZk5q83srH3ixJ1Y1jidr2GKjgJDbNeGUVZPNfYBL91Elu6+xfVGftWf4Lg==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "2.x",
- "rc-gesture": "~0.0.22",
- "react-native-swipeout": "^2.2.2"
- }
- },
- "rc-switch": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz",
- "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.0.1"
- }
- },
- "rc-table": {
- "version": "7.13.3",
- "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.13.3.tgz",
- "integrity": "sha512-oP4fknjvKCZAaiDnvj+yzBaWcg+JYjkASbeWonU1BbrLcomkpKvMUgPODNEzg0QdXA9OGW0PO86h4goDSW06Kg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.4.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-tabs": {
- "version": "11.7.3",
- "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.3.tgz",
- "integrity": "sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "classnames": "2.x",
- "rc-dropdown": "^3.1.3",
- "rc-menu": "^8.6.1",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.5.0"
- }
- },
- "rc-textarea": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.4.tgz",
- "integrity": "sha512-ILUYx831ZukQPv3m7R4RGRtVVWmL1LV4ME03L22mvT56US0DGCJJaRTHs4vmpcSjFHItph5OTmhodY4BOwy81A==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.7.0"
- }
- },
- "rc-tooltip": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.1.tgz",
- "integrity": "sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "rc-trigger": "^5.0.0"
- }
- },
- "rc-tree": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-4.1.5.tgz",
- "integrity": "sha512-q2vjcmnBDylGZ9/ZW4F9oZMKMJdbFWC7um+DAQhZG1nqyg1iwoowbBggUDUaUOEryJP+08bpliEAYnzJXbI5xQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.0.1",
- "rc-util": "^5.0.0",
- "rc-virtual-list": "^3.0.1"
- }
- },
- "rc-tree-select": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.2.tgz",
- "integrity": "sha512-tkouzhl8OpbTg4C9tVuP8nJ5jiZS7/wiusOIcFVgswhs1V3Jc+XHMKpLhR01egJ1bgsW1A6VrVCz3udxtdJSDA==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-select": "^12.0.0",
- "rc-tree": "^4.0.0",
- "rc-util": "^5.0.5"
- }
- },
- "rc-trigger": {
- "version": "5.2.7",
- "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.7.tgz",
- "integrity": "sha512-ttRWAd47pviWDeNDszhmuSgppmHY5aCr3y1+I6kvzS9QIlflsSC4GVjuF/eNl6F4cs7eB8B3tg7TxUCTWY7BHA==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.2.6",
- "rc-align": "^4.0.0",
- "rc-motion": "^2.0.0",
- "rc-util": "^5.5.0"
- }
- },
- "rc-upload": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.2.0.tgz",
- "integrity": "sha512-BXtvBs1PnwLjaUzBBU5z4yb9NMSaxc6mUIoPmS9LUAzaTz12L3TLrwu+8dnopYUiyLmYFS3LEO7aUfEWBqJfSA==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.2.0"
- }
- },
- "rc-util": {
- "version": "5.12.2",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.12.2.tgz",
- "integrity": "sha512-kzqG2lHY4oZsoj5Svov12K+9wi0xQHvGzfbLlsF1PDEH1aTbgdNTwlE7mejc3MGEr+7bNHa4+T5ZemCS8vQ1Gw==",
- "requires": {
- "@babel/runtime": "^7.12.5",
- "react-is": "^16.12.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-virtual-list": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.2.6.tgz",
- "integrity": "sha512-8FiQLDzm3c/tMX0d62SQtKDhLH7zFlSI6pWBAPt+TUntEqd3Lz9zFAmpvTu8gkvUom/HCsDSZs4wfV4wDPWC0Q==",
- "requires": {
- "classnames": "^2.2.6",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.0.7"
- }
- },
- "re-resizable": {
- "version": "6.9.0",
- "resolved": "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.9.0.tgz",
- "integrity": "sha512-3cUDG81ylyqI0Pdgle/RHwwRYq0ORZzsUaySOCO8IbEtNyaRtrIHYm/jMQ5pjcNiKCxR3vsSymIQZHwJq4gg2Q==",
- "requires": {
- "fast-memoize": "^2.5.1"
- }
- },
- "react": {
- "version": "16.14.0",
- "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
- "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2"
- }
- },
- "react-animations": {
- "version": "1.0.0",
- "resolved": "https://registry.yarnpkg.com/react-animations/-/react-animations-1.0.0.tgz",
- "integrity": "sha512-ePPpVgdKnNEXm+LP1ww5s3n0JzebBw9QdRfxRqogzeg1PDIn6kf0pmvgeTeVZQXXpGmHImkIeTiaQR1O6xjntA=="
- },
- "react-async-script": {
- "version": "1.2.0",
- "resolved": "https://registry.yarnpkg.com/react-async-script/-/react-async-script-1.2.0.tgz",
- "integrity": "sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==",
- "requires": {
- "hoist-non-react-statics": "^3.3.0",
- "prop-types": "^15.5.0"
- }
- },
- "react-color": {
- "version": "2.19.3",
- "resolved": "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz",
- "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==",
- "requires": {
- "@icons/material": "^0.2.4",
- "lodash": "^4.17.15",
- "lodash-es": "^4.17.15",
- "material-colors": "^1.2.1",
- "prop-types": "^15.5.10",
- "reactcss": "^1.2.0",
- "tinycolor2": "^1.4.1"
- }
- },
- "react-dazzle": {
- "version": "1.4.0",
- "resolved": "https://registry.yarnpkg.com/react-dazzle/-/react-dazzle-1.4.0.tgz",
- "integrity": "sha512-TX1dTt6ljHWNV1f+IJ7OU8MpjWLLwAJ8VXAb2AGlyXWL2xmLh6VbZH5IlU2NPhhkGIoxZAX7C1deuBuD8hx5Rw==",
- "requires": {
- "immutability-helper": "^2.3.1",
- "jquery": "^3.3.1",
- "popper.js": "^1.14.1",
- "prop-types": "^15.5.10",
- "react-dnd": "^2.6.0",
- "react-dnd-html5-backend": "^2.6.0"
- }
- },
- "react-dnd": {
- "version": "2.6.0",
- "resolved": "https://registry.yarnpkg.com/react-dnd/-/react-dnd-2.6.0.tgz",
- "integrity": "sha1-f6JWds+CfViokSk+PBq1naACVFo=",
- "requires": {
- "disposables": "^1.0.1",
- "dnd-core": "^2.6.0",
- "hoist-non-react-statics": "^2.1.0",
- "invariant": "^2.1.0",
- "lodash": "^4.2.0",
- "prop-types": "^15.5.10"
- },
- "dependencies": {
- "hoist-non-react-statics": {
- "version": "2.5.5",
- "resolved": "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
- "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
- }
- }
- },
- "react-dnd-html5-backend": {
- "version": "2.6.0",
- "resolved": "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-2.6.0.tgz",
- "integrity": "sha1-WQzRzKeEQbsnTt1XH+9MCxbdz44=",
- "requires": {
- "lodash": "^4.2.0"
- }
- },
- "react-dom": {
- "version": "16.14.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
- "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.19.1"
- }
- },
- "react-draggable": {
- "version": "4.4.3",
- "resolved": "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.3.tgz",
- "integrity": "sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w==",
- "requires": {
- "classnames": "^2.2.5",
- "prop-types": "^15.6.0"
- }
- },
- "react-emoji": {
- "version": "0.5.0",
- "resolved": "https://registry.yarnpkg.com/react-emoji/-/react-emoji-0.5.0.tgz",
- "integrity": "sha1-FLkcxrPOPDJG90Dn713i7AvuZks=",
- "requires": {
- "emoji-annotation-to-unicode": "^0.3.0",
- "emoji-emoticon-to-unicode": "^0.2.2",
- "escape-string-regexp": "^1.0.3",
- "lodash.compact": "^3.0.0",
- "object-assign": "^2.0.0"
- },
- "dependencies": {
- "object-assign": {
- "version": "2.1.1",
- "resolved": "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz",
- "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo="
- }
- }
- },
- "react-fast-compare": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
- "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
- },
- "react-google-recaptcha": {
- "version": "2.1.0",
- "resolved": "https://registry.yarnpkg.com/react-google-recaptcha/-/react-google-recaptcha-2.1.0.tgz",
- "integrity": "sha512-K9jr7e0CWFigi8KxC3WPvNqZZ47df2RrMAta6KmRoE4RUi7Ys6NmNjytpXpg4HI/svmQJLKR+PncEPaNJ98DqQ==",
- "requires": {
- "prop-types": "^15.5.0",
- "react-async-script": "^1.1.1"
- }
- },
- "react-helmet": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz",
- "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==",
- "requires": {
- "object-assign": "^4.1.1",
- "prop-types": "^15.7.2",
- "react-fast-compare": "^3.1.1",
- "react-side-effect": "^2.1.0"
- }
- },
- "react-intl": {
- "version": "3.12.1",
- "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-3.12.1.tgz",
- "integrity": "sha512-cgumW29mwROIqyp8NXStYsoIm27+8FqnxykiLSawWjOxGIBeLuN/+p2srei5SRIumcJefOkOIHP+NDck05RgHg==",
- "requires": {
- "@formatjs/intl-displaynames": "^1.2.0",
- "@formatjs/intl-listformat": "^1.4.1",
- "@formatjs/intl-relativetimeformat": "^4.5.9",
- "@formatjs/intl-unified-numberformat": "^3.2.0",
- "@formatjs/intl-utils": "^2.2.0",
- "@types/hoist-non-react-statics": "^3.3.1",
- "@types/invariant": "^2.2.31",
- "hoist-non-react-statics": "^3.3.2",
- "intl-format-cache": "^4.2.21",
- "intl-messageformat": "^7.8.4",
- "intl-messageformat-parser": "^3.6.4",
- "shallow-equal": "^1.2.1"
- }
- },
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "react-lifecycles-compat": {
- "version": "3.0.4",
- "resolved": "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
- "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
- },
- "react-linkify": {
- "version": "1.0.0-alpha",
- "resolved": "https://registry.yarnpkg.com/react-linkify/-/react-linkify-1.0.0-alpha.tgz",
- "integrity": "sha512-7gcIUvJkAXXttt1fmBK9cwn+1jTa4hbKLGCZ9J1U6EOkyb2/+LKL1Z28d9rtDLMnpvImlNlLPdTPooorl5cpmg==",
- "requires": {
- "linkify-it": "^2.0.3",
- "tlds": "^1.199.0"
- }
- },
- "react-native-swipeout": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/react-native-swipeout/-/react-native-swipeout-2.3.6.tgz",
- "integrity": "sha512-t9suUCspzck4vp2pWggWe0frS/QOtX6yYCawHnEes75A7dZCEE74bxX2A1bQzGH9cUMjq6xsdfC94RbiDKIkJg==",
- "requires": {
- "create-react-class": "^15.6.0",
- "prop-types": "^15.5.10",
- "react-tween-state": "^0.1.5"
- }
- },
- "react-perfect-scrollbar": {
- "version": "1.5.8",
- "resolved": "https://registry.yarnpkg.com/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz",
- "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==",
- "requires": {
- "perfect-scrollbar": "^1.5.0",
- "prop-types": "^15.6.1"
- }
- },
- "react-redux": {
- "version": "7.2.2",
- "resolved": "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.2.tgz",
- "integrity": "sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==",
- "requires": {
- "@babel/runtime": "^7.12.1",
- "hoist-non-react-statics": "^3.3.2",
- "loose-envify": "^1.4.0",
- "prop-types": "^15.7.2",
- "react-is": "^16.13.1"
- }
- },
- "react-refresh": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz",
- "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==",
- "dev": true
- },
- "react-resizable": {
- "version": "1.11.0",
- "resolved": "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.11.0.tgz",
- "integrity": "sha512-VoGz2ddxUFvildS8r8/29UZJeyiM3QJnlmRZSuXm+FpTqq/eIrMPc796Y9XQLg291n2hFZJtIoP1xC3hSTw/jg==",
- "requires": {
- "prop-types": "15.x",
- "react-draggable": "^4.0.3"
- }
- },
- "react-reveal": {
- "version": "1.2.2",
- "resolved": "https://registry.yarnpkg.com/react-reveal/-/react-reveal-1.2.2.tgz",
- "integrity": "sha512-JCv3fAoU6Z+Lcd8U48bwzm4pMZ79qsedSXYwpwt6lJNtj/v5nKJYZZbw3yhaQPPgYePo3Y0NOCoYOq/jcsisuw==",
- "requires": {
- "prop-types": "^15.5.10"
- }
- },
- "react-rnd": {
- "version": "10.2.4",
- "resolved": "https://registry.yarnpkg.com/react-rnd/-/react-rnd-10.2.4.tgz",
- "integrity": "sha512-wseACIsxa1wuZz9XatO3/JAZR748Sddehh0NtJz1Yj3X5BQm5pwRShiadfnWrUajJATurHbN0NVTUn+jEkHkPw==",
- "requires": {
- "re-resizable": "6.9.0",
- "react-draggable": "4.4.3",
- "tslib": "2.0.3"
- }
- },
- "react-router": {
- "version": "5.2.0",
- "resolved": "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz",
- "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==",
- "requires": {
- "@babel/runtime": "^7.1.2",
- "history": "^4.9.0",
- "hoist-non-react-statics": "^3.1.0",
- "loose-envify": "^1.3.1",
- "mini-create-react-context": "^0.4.0",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.2",
- "react-is": "^16.6.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- },
- "dependencies": {
- "path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- }
- }
- }
- }
- },
- "react-router-config": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz",
- "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.1.2"
- }
- },
- "react-router-dom": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz",
- "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==",
- "requires": {
- "@babel/runtime": "^7.1.2",
- "history": "^4.9.0",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.2",
- "react-router": "5.2.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- }
- },
- "react-side-effect": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz",
- "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ=="
- },
- "react-tween-state": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/react-tween-state/-/react-tween-state-0.1.5.tgz",
- "integrity": "sha1-6YsGZVHvuTy5LdG+FJlcLj3q4zk=",
- "requires": {
- "raf": "^3.1.0",
- "tween-functions": "^1.0.1"
- }
- },
- "react-virtualized": {
- "version": "9.22.2",
- "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.2.tgz",
- "integrity": "sha512-5j4h4FhxTdOpBKtePSs1yk6LDNT4oGtUwjT7Nkh61Z8vv3fTG/XeOf8J4li1AYaexOwTXnw0HFVxsV0GBUqwRw==",
- "requires": {
- "@babel/runtime": "^7.7.2",
- "clsx": "^1.0.4",
- "dom-helpers": "^5.1.3",
- "loose-envify": "^1.4.0",
- "prop-types": "^15.7.2",
- "react-lifecycles-compat": "^3.0.4"
- }
- },
- "reactcss": {
- "version": "1.2.3",
- "resolved": "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz",
- "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
- "requires": {
- "lodash": "^4.0.1"
- }
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg=="
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "realpath-native": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
- "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==",
- "requires": {
- "util.promisify": "^1.0.0"
- }
- },
- "redux": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz",
- "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==",
- "requires": {
- "@babel/runtime": "^7.9.2"
- }
- },
- "redux-saga": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-0.16.2.tgz",
- "integrity": "sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w=="
- },
- "regenerator-runtime": {
- "version": "0.13.7",
- "resolved": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "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="
- },
- "repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ=="
- },
- "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.yarnpkg.com/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "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"
- },
- "dependencies": {
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- }
- }
- },
- "request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "requires": {
- "lodash": "^4.17.19"
- }
- },
- "request-promise-native": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
- "requires": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
- },
- "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=="
- },
- "resolve": {
- "version": "1.19.0",
- "resolved": "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz",
- "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
- "requires": {
- "is-core-module": "^2.1.0",
- "path-parse": "^1.0.6"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "requires": {
- "resolve-from": "^5.0.0"
- }
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
- },
- "resolve-pathname": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
- "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
- },
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "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-align": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rmc-align/-/rmc-align-1.0.0.tgz",
- "integrity": "sha512-3gEa5/+hqqoEVoeQ25KoRc8DOsXIdSaVpaBq1zQFaV941LR3xvZIRTlxTDT/IagYwoGM1KZea/jd7cNMYP34Rg==",
- "requires": {
- "babel-runtime": "6.x",
- "dom-align": "1.x",
- "rc-util": "4.x"
- },
- "dependencies": {
- "rc-util": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz",
- "integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
- "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"
- }
- }
- }
- },
- "rmc-calendar": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/rmc-calendar/-/rmc-calendar-1.1.4.tgz",
- "integrity": "sha512-xxQZaPFDnpHt4IFO8mukYrXSgC1W8LcNVp+EoX4iyeOJFimungOKB/iP5/cy+st8yXq8lUgk9TXsHNtM6Xo6ZA==",
- "requires": {
- "babel-runtime": "^6.26.0",
- "rc-animate": "^2.4.4",
- "rmc-date-picker": "^6.0.8"
- }
- },
- "rmc-cascader": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/rmc-cascader/-/rmc-cascader-5.0.3.tgz",
- "integrity": "sha512-PxDhMjWViDdG4SMZqoXtAthGwgDyYnyxxZEE17IDDYsiCHpWtOhoIL8nsI+/hZ212UT/XF2LpqCsOlMoJiYk+w==",
- "requires": {
- "array-tree-filter": "2.1.x",
- "babel-runtime": "6.x",
- "rmc-picker": "~5.0.0"
- }
- },
- "rmc-date-picker": {
- "version": "6.0.10",
- "resolved": "https://registry.npmjs.org/rmc-date-picker/-/rmc-date-picker-6.0.10.tgz",
- "integrity": "sha512-/9+I6lm3EDEl6M7862V6++zFuxwsM0UEq8wSHbotYIPPmyB/65gx1cviblghOv2QfB0O9+U2w3qEJlRP/WsMrA==",
- "requires": {
- "babel-runtime": "6.x",
- "rmc-picker": "~5.0.0"
- }
- },
- "rmc-dialog": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/rmc-dialog/-/rmc-dialog-1.1.1.tgz",
- "integrity": "sha512-28aJqtPTX6v13Z/aU1WBy1AFIXkE74PxZXde7JvtEIy9hQDTjH8fqOi822BpzAbXCyNE7jF9iFomy3H2ClsDJA==",
- "requires": {
- "babel-runtime": "6.x",
- "rc-animate": "2.x"
- }
- },
- "rmc-drawer": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/rmc-drawer/-/rmc-drawer-0.4.11.tgz",
- "integrity": "sha512-YfB9XEJ8iM0MMuLWAK4313uOxSM8NAljC8Cqun1KamXutglYTuRviUuTLNSOzV8HHPp5kNpsVduvPCGLWXvThw==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.4",
- "prop-types": "^15.5.10"
- }
- },
- "rmc-feedback": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/rmc-feedback/-/rmc-feedback-2.0.0.tgz",
- "integrity": "sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.5"
- }
- },
- "rmc-input-number": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/rmc-input-number/-/rmc-input-number-1.0.5.tgz",
- "integrity": "sha512-prPkEtoOVde77GnEnEaBeWjBobMOPgGqU5bd0gxfp1kt1pUN740mMpVAcH7uxpJjVfmw+kuGWtiz4S7CueagSg==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.0",
- "rmc-feedback": "^2.0.0"
- }
- },
- "rmc-list-view": {
- "version": "0.11.5",
- "resolved": "https://registry.npmjs.org/rmc-list-view/-/rmc-list-view-0.11.5.tgz",
- "integrity": "sha512-eMOC5394tLNawcdEEhF7boMpQgpjJGDdL5lS+LblAWdBec7Q4EYkUdnrKNbt+O9k5RGM6nSLAGZK5oB4FN85Lg==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.5",
- "fbjs": "^0.8.3",
- "prop-types": "^15.5.8",
- "warning": "^3.0.0",
- "zscroller": "~0.4.0"
- },
- "dependencies": {
- "warning": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
- "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
- "requires": {
- "loose-envify": "^1.0.0"
- }
- }
- }
- },
- "rmc-notification": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rmc-notification/-/rmc-notification-1.0.0.tgz",
- "integrity": "sha512-9sPxjltFvtRLt2v312Hu7OXwk53pHkBYgINRDmnJ3A5NF1qtJeCCcdN0Xr0fzJ6sbQvtGju822tWHdzYA9u7Vw==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "2.x",
- "prop-types": "^15.5.8",
- "rc-animate": "2.x",
- "rc-util": "^4.0.4"
- },
- "dependencies": {
- "rc-util": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz",
- "integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
- "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"
- }
- }
- }
- },
- "rmc-nuka-carousel": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/rmc-nuka-carousel/-/rmc-nuka-carousel-3.0.1.tgz",
- "integrity": "sha512-w2EPTERMUUZqcUSKFuejjin7xsMlhrLrtS0A/igTXpFJGq3kemDKcRi7q3pSYDuZBHYBl5iV4UqsLLkjdFtrYA==",
- "requires": {
- "exenv": "^1.2.0",
- "raf": "^3.3.2"
- }
- },
- "rmc-picker": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/rmc-picker/-/rmc-picker-5.0.10.tgz",
- "integrity": "sha512-KZ70+WjcaZHnG5GyCxWCPFWAZ12s6NqyrbW73LeqH0WEqaTMMs0sOrk2f4mQAZ/CGT0XcFN6VZLw7Ozoxfn7LA==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.6",
- "rmc-dialog": "^1.1.1",
- "rmc-feedback": "^2.0.0"
- }
- },
- "rmc-pull-to-refresh": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/rmc-pull-to-refresh/-/rmc-pull-to-refresh-1.0.13.tgz",
- "integrity": "sha512-iYLsURiR7G/sKmRA6p2kq6ZXicn7Hyeo6VQFljssV1eMW+fzDgihhaz0kv5mza0f88vphGJvjOihT9E6+xGb6Q==",
- "requires": {
- "babel-runtime": "6.x",
- "classnames": "^2.2.5"
- }
- },
- "rmc-steps": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/rmc-steps/-/rmc-steps-1.0.1.tgz",
- "integrity": "sha512-8ijtwp4D1CYTtI2yerXJYqCv+GQbiBc9T12nrFngd/vM0y+58CnznGphTAueF6IWf7qbxBwcjTrcFgg7bP2YGA==",
- "requires": {
- "babel-runtime": "^6.23.0",
- "classnames": "^2.2.3"
- }
- },
- "rmc-tabs": {
- "version": "1.2.29",
- "resolved": "https://registry.npmjs.org/rmc-tabs/-/rmc-tabs-1.2.29.tgz",
- "integrity": "sha512-wiJS9WSJi9JH9GQO+FqncX+zaHP31qHa/S8nDW9UXUx0qbCX294QcJEnvfB+WmsfUws7rXjs6sOQp5EDiObnHg==",
- "requires": {
- "babel-runtime": "6.x",
- "rc-gesture": "~0.0.18"
- }
- },
- "rmc-tooltip": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/rmc-tooltip/-/rmc-tooltip-1.0.1.tgz",
- "integrity": "sha512-fSDArf2BlMVrHExmBiqb2TkCRJHshvXFJQ/7tMraLellwaJLNiwrxtWpW329k3S+zTtoVG8UxFS1TjBGEsMzRg==",
- "requires": {
- "babel-runtime": "6.x",
- "rmc-trigger": "1.x"
- }
- },
- "rmc-trigger": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/rmc-trigger/-/rmc-trigger-1.0.12.tgz",
- "integrity": "sha512-AccQniX7PX7Pm8hBhHEsnf3JU6CA61Xc7fAt2WbO+oXrGaI/jqN8C3COhhOXG54S5iTOjLS26j858zshwAxR9A==",
- "requires": {
- "babel-runtime": "6.x",
- "rc-animate": "2.x",
- "rc-util": "4.x",
- "rmc-align": "~1.0.0"
- },
- "dependencies": {
- "rc-util": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz",
- "integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
- "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"
- }
- }
- }
- },
- "rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA=="
- },
- "run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
- "dev": true
- },
- "rxjs": {
- "version": "6.6.3",
- "resolved": "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz",
- "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.yarnpkg.com/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=",
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "sane": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
- "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
- "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"
- },
- "dependencies": {
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "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=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "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=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "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"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- },
- "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=",
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
- }
- },
- "saxes": {
- "version": "3.1.11",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz",
- "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
- "requires": {
- "xmlchars": "^2.1.1"
- }
- },
- "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.28",
- "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz",
- "integrity": "sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w==",
- "requires": {
- "compute-scroll-into-view": "^1.0.17"
- }
- },
- "seamless-immutable": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/seamless-immutable/-/seamless-immutable-7.1.4.tgz",
- "integrity": "sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A=="
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
- },
- "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-equal": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
- "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
- },
- "shallowequal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
- "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
- },
- "shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "optional": true
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "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==",
- "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=",
- "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=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "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==",
- "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=",
- "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==",
- "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==",
- "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==",
- "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==",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "socket.io-client": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.0.4.tgz",
- "integrity": "sha512-qMvBuS+W9JIN2mkfAWDCxuIt+jpIKDf8C0604zEqx1JrPaPSS6cN0F3B2GYWC83TqBeVJXW66GFxWV3KD88n0Q==",
- "requires": {
- "@types/component-emitter": "^1.2.10",
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "~1.3.0",
- "debug": "~4.1.0",
- "engine.io-client": "~4.0.0",
- "parseuri": "0.0.6",
- "socket.io-parser": "~4.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "socket.io-parser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.2.tgz",
- "integrity": "sha512-Bs3IYHDivwf+bAAuW/8xwJgIiBNtlvnjYRc4PbXgniLmcP1BrakBoq/QhO24rgtgW7VZ7uAaswRGxutUnlAK7g==",
- "requires": {
- "@types/component-emitter": "^1.2.10",
- "component-emitter": "~1.3.0",
- "debug": "~4.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "sort-keys": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
- "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
- "dev": true,
- "requires": {
- "is-plain-obj": "^1.0.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.yarnpkg.com/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==",
- "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-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==",
- "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=="
- }
- }
- },
- "source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw=="
- },
- "spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.7",
- "resolved": "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
- "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ=="
- },
- "split-on-first": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
- "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
- "dev": true
- },
- "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==",
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "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"
- }
- },
- "stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
- },
- "stack-utils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz",
- "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==",
- "requires": {
- "escape-string-regexp": "^2.0.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
- }
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "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=",
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
- },
- "store": {
- "version": "2.0.12",
- "resolved": "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz",
- "integrity": "sha1-jFNOKguDH3K3X8XxEZhXxE711ZM="
- },
- "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"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "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==",
- "dev": 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"
- }
- },
- "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==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.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"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "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==",
- "dev": 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"
- }
- },
- "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==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "strict-uri-encode": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
- "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
- "dev": true
- },
- "string-convert": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
- "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c="
- },
- "string-length": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz",
- "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==",
- "requires": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- }
- }
- },
- "string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- }
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
- "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
- "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "requires": {
- "safe-buffer": "~5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- }
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- }
- }
- },
- "strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w=="
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-hyperlinks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
- "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
- "requires": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "symbol-observable": {
- "version": "1.2.0",
- "resolved": "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz",
- "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
- },
- "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=="
- },
- "terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "requires": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- }
- },
- "terser": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz",
- "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==",
- "dev": true,
- "requires": {
- "commander": "^2.20.0",
- "source-map": "~0.7.2",
- "source-map-support": "~0.5.19"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- }
- }
- },
- "test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- }
- },
- "throat": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
- "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA=="
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "timeago.js": {
- "version": "4.0.2",
- "resolved": "https://registry.yarnpkg.com/timeago.js/-/timeago.js-4.0.2.tgz",
- "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w=="
- },
- "timers-browserify": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
- "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
- "dev": true,
- "requires": {
- "setimmediate": "^1.0.4"
- }
- },
- "tiny-invariant": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
- "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
- },
- "tiny-warning": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
- "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
- },
- "tinycolor2": {
- "version": "1.4.2",
- "resolved": "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz",
- "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA=="
- },
- "tlds": {
- "version": "1.216.0",
- "resolved": "https://registry.yarnpkg.com/tlds/-/tlds-1.216.0.tgz",
- "integrity": "sha512-y9A+eMRKLdAOclcFRTk3durpvCWiEdWcQhCOopCO654pckH9+o5Z5VgBsTTAFqtyxB8yFRXSG1q7BCCeHyrm0w=="
- },
- "tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "requires": {
- "os-tmpdir": "~1.0.2"
- }
- },
- "tmpl": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
- "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
- },
- "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.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
- },
- "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=",
- "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=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "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": "5.0.1",
- "resolved": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "requires": {
- "is-number": "^7.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="
- },
- "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==",
- "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=",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
- "tslib": {
- "version": "2.0.3",
- "resolved": "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz",
- "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
- },
- "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.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tween-functions": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz",
- "integrity": "sha1-GuOlDnxguz3vd06scHrLynO7w/8="
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
- "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-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
- },
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
- },
- "typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "requires": {
- "is-typedarray": "^1.0.0"
- }
- },
- "ua-parser-js": {
- "version": "0.7.28",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz",
- "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g=="
- },
- "uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
- },
- "umi": {
- "version": "3.4.20",
- "resolved": "https://registry.npmjs.org/umi/-/umi-3.4.20.tgz",
- "integrity": "sha512-bmpE0UQXULw98VND7jzuV0AmC00vBP+jiRH5O5XajuH+cisstu4f1lDsGDfZ0HbMB3go9ELE66UIeLiWkaGqHA==",
- "dev": true,
- "requires": {
- "@umijs/bundler-webpack": "3.4.20",
- "@umijs/core": "3.4.20",
- "@umijs/deps": "3.4.20",
- "@umijs/preset-built-in": "3.4.20",
- "@umijs/runtime": "3.4.20",
- "@umijs/types": "3.4.20",
- "@umijs/utils": "3.4.20",
- "react": "16.x",
- "react-dom": "16.x",
- "v8-compile-cache": "2.3.0"
- }
- },
- "umi-request": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/umi-request/-/umi-request-1.3.5.tgz",
- "integrity": "sha512-PqGz1mbLTkLjvL7ovM5Tmx/ChfY819T6P6VIsp4n15Lldn9Q85VYil4WuHSPpnur7I0thbWBuMnfLY7j5QWstg==",
- "requires": {
- "isomorphic-fetch": "^2.2.1",
- "qs": "^6.9.1"
- }
- },
- "unbox-primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
- "requires": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "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==",
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.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=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "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==",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- }
- }
- }
- },
- "uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
- "dev": true
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "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=",
- "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=",
- "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="
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- }
- }
- },
- "uri-js": {
- "version": "4.4.0",
- "resolved": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz",
- "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
- "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="
- },
- "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=="
- },
- "use-subscription": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz",
- "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==",
- "dev": true,
- "requires": {
- "object-assign": "^4.1.1"
- }
- },
- "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.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "util.promisify": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz",
- "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==",
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "for-each": "^0.3.3",
- "has-symbols": "^1.0.1",
- "object.getownpropertydescriptors": "^2.1.1"
- }
- },
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "optional": true
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "v8-to-istanbul": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz",
- "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==",
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
- }
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "value-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
- "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "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
- },
- "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==",
- "requires": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "w3c-xmlserializer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
- "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
- "requires": {
- "domexception": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "xml-name-validator": "^3.0.0"
- }
- },
- "walker": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
- "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
- "requires": {
- "makeerror": "1.0.x"
- }
- },
- "warning": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
- "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
- "requires": {
- "loose-envify": "^1.0.0"
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
- "dev": true,
- "requires": {
- "defaults": "^1.0.3"
- }
- },
- "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=="
- },
- "webpack-chain": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz",
- "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==",
- "dev": true,
- "requires": {
- "deepmerge": "^1.5.2",
- "javascript-stringify": "^2.0.1"
- },
- "dependencies": {
- "deepmerge": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
- "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
- "dev": true
- }
- }
- },
- "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==",
- "requires": {
- "iconv-lite": "0.4.24"
- }
- },
- "whatwg-fetch": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
- "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
- },
- "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=="
- },
- "whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
- },
- "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=="
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "requires": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "ws": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz",
- "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA=="
- },
- "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=="
- },
- "xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
- },
- "xmlhttprequest-ssl": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
- "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- },
- "y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ=="
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "yaml": {
- "version": "1.10.0",
- "resolved": "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz",
- "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==",
- "dev": true
- },
- "yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "dependencies": {
- "yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
- "yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
- },
- "zscroller": {
- "version": "0.4.8",
- "resolved": "https://registry.npmjs.org/zscroller/-/zscroller-0.4.8.tgz",
- "integrity": "sha512-G5NiNLKx2+QhhvZi2yV1jjVXY50otktxkseX2hG2N/eixohOUk0AY8ZpbAxNqS9oJS/NxItCsowupy2tsXxAMw==",
- "requires": {
- "babel-runtime": "6.x"
- }
- }
- }
-}
diff --git a/packages/comty/package.json b/packages/comty/package.json
deleted file mode 100644
index 0500b8e6..00000000
--- a/packages/comty/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "name": "comty",
- "version": "0.12.8",
- "description": "An prototype of a social network",
- "author": "RageStudio",
- "license": "LGPL-2.1",
- "types": "index.d.ts",
- "scripts": {
- "start": "umi dev",
- "build": "umi build",
- "update:deps": "yarn upgrade-interactive --latest"
- },
- "dependencies": {
- "@icons-pack/react-simple-icons": "^3.8.0",
- "@lingui/react": "^3.3.0",
- "@types/lodash": "4.14.168",
- "@umijs/preset-react": "1.8.7",
- "antd": "4.15.5",
- "axios": "^0.21.1",
- "chart.js": "^2.9.4",
- "classnames": "^2.2.6",
- "colors": "^1.4.0",
- "concat-stream": "^2.0.0",
- "cookie_js": "^1.4.0",
- "cryptr": "^6.0.2",
- "dotenv": "^8.2.0",
- "enquire-js": "^0.2.1",
- "feather-reactjs": "^2.0.13",
- "howler": "^2.2.1",
- "html2canvas": "^1.0.0-rc.7",
- "jsonwebtoken": "^8.5.1",
- "less-vars-to-js": "^1.3.0",
- "localforage": "^1.7.4",
- "lodash": "^4.17.21",
- "moment": "^2.28.0",
- "path-to-regexp": "^6.1.0",
- "platform": "^1.3.6",
- "react-animations": "^1.0.0",
- "react-color": "^2.19.3",
- "react-dazzle": "^1.4.0",
- "react-draggable": "^4.4.3",
- "react-emoji": "^0.5.0",
- "react-google-recaptcha": "^2.0.1",
- "react-helmet": "^6.1.0",
- "react-linkify": "^1.0.0-alpha",
- "react-perfect-scrollbar": "^1.5.8",
- "react-redux": "^7.2.2",
- "react-resizable": "^1.11.0",
- "react-reveal": "^1.2.2",
- "react-rnd": "^10.2.3",
- "react-virtualized": "^9.21.2",
- "request": "^2.88.2",
- "socket.io-client": "^3.0.4",
- "stack-trace": "0.0.10",
- "store": "^2.0.12",
- "timeago.js": "^4.0.2"
- },
- "devDependencies": {
- "@lingui/babel-preset-react": "^2.9.2",
- "@lingui/cli": "^3.3.0",
- "@lingui/loader": "^3.3.0",
- "@types/node": "^14.14.20",
- "concurrently": "^5.3.0",
- "cross-env": "^7.0.3",
- "umi": "3.4.20"
- }
-}
diff --git a/packages/comty/plugins/index.js b/packages/comty/plugins/index.js
deleted file mode 100644
index 0bae7ffd..00000000
--- a/packages/comty/plugins/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-const http = require('http')
-const vm = require("vm")
-const concat = require("concat-stream")
-const async = require("async")
-
-export function http_require(url, callback) {
- http.get(url, (res) => {
- res.setEncoding('utf8')
- res.pipe(concat({encoding: 'string'}, function(data) {
- callback(null, vm.runInThisContext(data))
- }))
- })
-}
-
-export function usePlugins(array, callback){
- async.map(array, http_require, function(err, results) {
- if(callback){
- callback(err, results)
- }
- })
-}
\ No newline at end of file
diff --git a/packages/comty/public/dark_full_logo.svg b/packages/comty/public/dark_full_logo.svg
deleted file mode 100644
index 78e90e9a..00000000
--- a/packages/comty/public/dark_full_logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-BalckComtyNG-Logo
\ No newline at end of file
diff --git a/packages/comty/public/dark_logo.svg b/packages/comty/public/dark_logo.svg
deleted file mode 100644
index ef799d4a..00000000
--- a/packages/comty/public/dark_logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-black_icon_new2019_black
\ No newline at end of file
diff --git a/packages/comty/public/favicon.ico b/packages/comty/public/favicon.ico
deleted file mode 100644
index ad1b1170..00000000
Binary files a/packages/comty/public/favicon.ico and /dev/null differ
diff --git a/packages/comty/public/favicon.png b/packages/comty/public/favicon.png
deleted file mode 100644
index 0f5ca319..00000000
Binary files a/packages/comty/public/favicon.png and /dev/null differ
diff --git a/packages/comty/public/full_logo.svg b/packages/comty/public/full_logo.svg
deleted file mode 100644
index cc7477fb..00000000
--- a/packages/comty/public/full_logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-ComtyNG-Logo
\ No newline at end of file
diff --git a/packages/comty/public/logo.svg b/packages/comty/public/logo.svg
deleted file mode 100644
index cda37e29..00000000
--- a/packages/comty/public/logo.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/packages/comty/schemas/badges_list.json b/packages/comty/schemas/badges_list.json
deleted file mode 100644
index c676da36..00000000
--- a/packages/comty/schemas/badges_list.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {"id": "alpha_test","title": "Alpha Tester","color": "green","icon": "Bug","tip": "Oh yeah!"},
- {"id": "nsfw_flag","title": "NSFW","color": "volcano","require": "nsfw_flag","tip": "NSFW"},
- {"id":"pro","title":"CPRO™","color":"purple","require":"pro","icon":"RocketOutlined","tip":"CPRO™"},
- {"id":"dev","title":"DEVELOPER","color":"default","require":"dev","icon":"GitBranch","tip":"DEVELOPER"},
- {"id":"professional_retarder","title":"Professional Retarder","color":"gold","require":"","icon":"SmileOutlined","tip":"hump...."},
- {"id":"el_walter_pro","title":"Pro Chikito","color":"#a0d911","require":"","icon":"🐱🐉🧜♀️","tip":"Chikito"},
- {"id":"patreon","title":"Patreon Member","color":"","require":"","icon":"Patreon","tip":"GoodBoy!"}
-]
-
diff --git a/packages/comty/schemas/contextMenu.json b/packages/comty/schemas/contextMenu.json
deleted file mode 100644
index 71f24f6b..00000000
--- a/packages/comty/schemas/contextMenu.json
+++ /dev/null
@@ -1,11 +0,0 @@
-[
- {
- "key": "inspect_element",
- "title": "Inspect",
- "icon": "Command",
- "require": "embedded",
- "params": {
- "onClick": false
- }
- }
-]
\ No newline at end of file
diff --git a/packages/comty/schemas/links.json b/packages/comty/schemas/links.json
deleted file mode 100644
index 1b45ace7..00000000
--- a/packages/comty/schemas/links.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "github":"https://github.com/srgooglo/comty",
- "trellojoin": "https://trello.com/invite/b/UbwvlG1I/2bc02725b9b210d2e9e9a82c5040b895/comty-development",
- "patreon": "https://www.patreon.com/rstudio"
-}
\ No newline at end of file
diff --git a/packages/comty/schemas/post_options.json b/packages/comty/schemas/post_options.json
deleted file mode 100644
index 694d162a..00000000
--- a/packages/comty/schemas/post_options.json
+++ /dev/null
@@ -1,4 +0,0 @@
-[
- {"key":"pro_boost","icon":"RocketOutlined","type":"switch","title":"CPRO™ Boost","description":"","require":"pro","value":false},
- {"key":"allow_comments","icon":"CommentOutlined","type":"switch","title":"Allow Comments","description":"","require":"","value":true}
-]
\ No newline at end of file
diff --git a/packages/comty/schemas/settings_general.json b/packages/comty/schemas/settings_general.json
deleted file mode 100644
index 06866df4..00000000
--- a/packages/comty/schemas/settings_general.json
+++ /dev/null
@@ -1,37 +0,0 @@
-[
- {
- "id": "session_noexpire",
- "icon": "Watch",
- "type": "Switch",
- "title": "No expire session",
- "description": "Force the app to not expire any session"
- },
- {
- "id": "search_ontype",
- "icon": "CornerDownRight",
- "type": "Switch",
- "title": "Auto search on input",
- "description": "Search automaticly when type something"
- },
- {
- "id": "post_hidebar",
- "icon": "Menu",
- "type": "Switch",
- "title": "Auto hide postbar",
- "description": "Hide post actions bar when loose focus"
- },
- {
- "id": "post_autoposition",
- "icon": "AlignCenter",
- "type": "Switch",
- "title": "Center on click",
- "description": "Center posts element when then is clicked"
- },
- {
- "id": "verbosity",
- "icon": "Terminal",
- "type": "Switch",
- "title": "Verbosity",
- "description": "Show all development logs of the application"
- }
-]
diff --git a/packages/comty/schemas/sidebar_menu.json b/packages/comty/schemas/sidebar_menu.json
deleted file mode 100644
index 5c9248a9..00000000
--- a/packages/comty/schemas/sidebar_menu.json
+++ /dev/null
@@ -1,92 +0,0 @@
-[
- {
- "id": "main",
- "icon": "Home",
- "title": "Main",
- "attributes": {
- "require": "login",
- "desktop": false
- }
- },
- {
- "id": "explore",
- "title": "Explore",
- "icon": "Compass"
- },
- {
- "id": "saves",
- "title": "Saves",
- "icon": "Bookmark",
- "attributes": {
- "require": "login",
- "mobile": false
- }
- },
- {
- "id": "messages",
- "title": "Messages",
- "icon": "MessageSquare",
- "attributes": {
- "require": "login"
- }
- },
- {
- "id": "rooms",
- "title": "Rooms",
- "icon": "Box",
- "attributes": {
- "require": "login"
- }
- },
- {
- "id": "workshop",
- "title": "Workshop",
- "icon": "Package",
- "attributes": {
- "require": "login"
- }
- },
- {
- "id": "streams",
- "title": "Streams",
- "icon": "Tv",
- "attributes": {
- "require": "login"
- }
- },
- {
- "id": "debug",
- "title": "Debug",
- "icon": "Tool",
- "attributes": {
- "position": "bottom",
- "require": "dev"
- }
- },
- {
- "id": "settings",
- "title": "Settings",
- "icon": "Settings",
- "attributes": {
- "position": "bottom"
- }
- },
- {
- "id": "logout",
- "title": "Logout",
- "icon": "LogOut",
- "attributes": {
- "position": "bottom",
- "require": "login"
- }
- },
- {
- "id": "login",
- "title": "Signin",
- "icon": "LogIn",
- "attributes": {
- "position": "bottom",
- "require": "guest"
- }
- }
-]
\ No newline at end of file
diff --git a/packages/comty/schemas/theme_settings.json b/packages/comty/schemas/theme_settings.json
deleted file mode 100644
index 56064c1c..00000000
--- a/packages/comty/schemas/theme_settings.json
+++ /dev/null
@@ -1,38 +0,0 @@
-[
- {
- "id": "backgroundImage",
- "icon": "Image",
- "title": "Background",
- "description": "Change the background of the app"
- },
- {
- "id": "overlay",
- "icon": "Sidebar",
- "title": "Overlay",
- "description": "Description blah blah"
- },
- {
- "id": "color",
- "icon": "Droplet",
- "title": "Colors",
- "description": "Texts, Buttons, Sliders ...etc"
- },
- {
- "id": "text",
- "icon": "FontColorsOutlined",
- "title": "Text",
- "description": "Sizes, Fonts"
- },
- {
- "id": "sounds",
- "icon": "Volume2",
- "title": "Sounds",
- "description": "BlipBlopBLup"
- },
- {
- "id": "darkmode",
- "icon": "Moon",
- "title": "Dark Mode",
- "description": "Yeaah, no more daying"
- }
-]
\ No newline at end of file
diff --git a/packages/comty/src/components/About/index.js b/packages/comty/src/components/About/index.js
deleted file mode 100644
index 927de12f..00000000
--- a/packages/comty/src/components/About/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import { clientInfo, GUID, package_json } from 'core'
-import { Monitor, Package, Radio, Layers } from 'components/Icons'
-import * as antd from 'antd'
-
-export default class App_About extends React.Component {
- renderStableTag() {
- return {clientInfo.buildStable? "Stable" : "Not Stable"}
- }
- render() {
- return (
-
-
-
- {clientInfo.siteName}
- {GUID}
-
- {clientInfo.os.toString()}
- v{clientInfo.version}
- {clientInfo.packageStage}
- Render with {clientInfo.layout}
- {this.renderStableTag()}
-
-
-
- )
- }
-}
diff --git a/packages/comty/src/components/About/index.less b/packages/comty/src/components/About/index.less
deleted file mode 100644
index eef5c428..00000000
--- a/packages/comty/src/components/About/index.less
+++ /dev/null
@@ -1,18 +0,0 @@
-.aboutWrapper {
- margin: auto;
- max-width: 70vw;
- width: 450px;
- vertical-align: middle;
- position: relative;
- background-color: rgba(73, 72, 72, 0.349);
-
- img {
- width: 100%;
- padding: 15px;
- }
-}
-
-.appName {
- font-family: "Poppins", sans-serif;
- font-size: 27px;
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/CardComponent/index.tsx b/packages/comty/src/components/CardComponent/index.tsx
deleted file mode 100644
index 0cebeb6c..00000000
--- a/packages/comty/src/components/CardComponent/index.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import * as React from 'react'
-import * as antd from 'antd'
-import { LoadingOutlined } from 'components/Icons'
-
-interface CardComponent_props {
- style: object;
- type: string;
- children: any;
-}
-
-const CardComponent = (props: CardComponent_props) => {
- let frag;
- const rd_error =
- const rd_loading =
-
- if (props.type == "error") frag = (rd_error)
- if (props.type == "skeleton") frag = (rd_loading)
- if (!props.type) frag = (props.children)
-
- return(
-
- {frag}
-
- )
-}
-
-CardComponent.defaultProps = {
- style: null,
- type: null,
- children: Empty
-}
-
-export default CardComponent
\ No newline at end of file
diff --git a/packages/comty/src/components/FloatComponent/index.tsx b/packages/comty/src/components/FloatComponent/index.tsx
deleted file mode 100644
index ed72754e..00000000
--- a/packages/comty/src/components/FloatComponent/index.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import { verbosity } from '@nodecorejs/utils'
-import { XCircle } from 'components/Icons'
-import ReactDOM from 'react-dom'
-import * as antd from 'antd'
-import React from 'react'
-import { Rnd } from 'react-rnd'
-import { getDvaApp } from 'umi'
-import { Provider } from 'react-redux'
-
-const renderDiv = document.createElement('div')
-class FloatComponent extends React.Component {
- handleClose() {
- Destroy()
- }
-
- render() {
- const renderProps = this.props.renderBox ?? { }
- const defaultBoxWidth = renderProps.width ?? 500
- const defaultBoxHeight = renderProps.height ?? 600
- return (
-
-
-
-
-
-
- {this.props.title ?? null}
-
-
- {this.props.children}
-
-
- )
- }
-}
-
-export function Destroy() {
- verbosity.log('destroying')
- const unmountResult = ReactDOM.unmountComponentAtNode(renderDiv)
- if (unmountResult && renderDiv.parentNode) {
- renderDiv.parentNode.removeChild(renderDiv)
- }
-}
-
-
-export function Open(props) {
- const dvaApp = getDvaApp()
- const divId = props.id ?? "floatComponent"
- const MountParent = document.getElementById("root")
- const thisChild = document.getElementById(divId)
-
- verbosity.log(props)
-
- if (thisChild) {
- MountParent.removeChild(thisChild)
- }
-
- let RenderComponent =
- MountParent.appendChild(renderDiv).setAttribute('id', divId)
- ReactDOM.render({RenderComponent} , renderDiv)
-}
-
-export default Open
\ No newline at end of file
diff --git a/packages/comty/src/components/Icons/custom.js b/packages/comty/src/components/Icons/custom.js
deleted file mode 100644
index c1d9be1b..00000000
--- a/packages/comty/src/components/Icons/custom.js
+++ /dev/null
@@ -1,13 +0,0 @@
-const marginedStyle = { width: "1em", height: "1em", marginRight: "10px", verticalAlign: "-0.125em" }
-
-export const verifiedBadge = () =>
-export const lightningBolt = () =>
-export const sparkles = () =>
-export const statusOnline = () =>
-export const fingerprint = () =>
-export const colorSwatch = () =>
-export const collection = () =>
-export const cubeTransparent = () =>
-export const keyRound = () =>
-export const searchCircles = () =>
-export const template = () =>
\ No newline at end of file
diff --git a/packages/comty/src/components/Icons/index.js b/packages/comty/src/components/Icons/index.js
deleted file mode 100644
index 72af797d..00000000
--- a/packages/comty/src/components/Icons/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from 'feather-reactjs'
-export * from '@ant-design/icons'
-export * from './custom'
-export * from '@icons-pack/react-simple-icons'
diff --git a/packages/comty/src/components/Invalid/index.js b/packages/comty/src/components/Invalid/index.js
deleted file mode 100644
index 6537e0c6..00000000
--- a/packages/comty/src/components/Invalid/index.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import styles from './index.less'
-import errNumbers from 'config/handlers/numToError.js'
-import { Meh } from 'components/Icons'
-
-const InvalidSkeleton = (props) => {
- return(
-
-
-
- Sorry but, something did not work as it should...
-
-
- )
-}
-
-const InvalidSession = (props) => {
- return(
-
- )
-}
-
-const InvalidIndex = (props) => {
- return(
-
-
- Sorry but, We could not index this {props.messageProp1}
-
-
- )
-}
-
-const Custom = (props) => {
- return(
-
- )
-}
-
-export default class Invalid extends React.Component{
- render(){
- const Components = {
- SESSION_INVALID: ,
- INVALID_INDEX: ,
- skeleton: ,
- custom:
- }
- const { type, typeByCode } = this.props
- if (type != null || typeByCode != null) {
- let tmpType = null
-
- type? tmpType = type : null
- typeByCode? tmpType = errNumbers[typeByCode] : null
-
- if (Components[tmpType] != null) {
- return Components[tmpType]
- }
-
- }
- return }
- title="A function called this component due to an error, but apparently it also caused an error when configuring these parameters."
- message="it seems that someone is not having a good day"
- />
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Invalid/index.less b/packages/comty/src/components/Invalid/index.less
deleted file mode 100644
index f3318f34..00000000
--- a/packages/comty/src/components/Invalid/index.less
+++ /dev/null
@@ -1,23 +0,0 @@
-.invalidSkeleton{
- :global{
- .ant-card{
- border-radius: 7px;
- }
- .ant-card-body{
- display: flex;
- padding: 0;
- }
- .ant-skeleton{
- padding: 24px;
- }
- }
-}
-
-
-.floatCardWrapper{
- display: flex;
- justify-content: center;
- align-content: center;
- align-items: center;
- height: 100%;
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/ContextMenu/index.less b/packages/comty/src/components/Layout/ContextMenu/index.less
deleted file mode 100644
index 94e5fc34..00000000
--- a/packages/comty/src/components/Layout/ContextMenu/index.less
+++ /dev/null
@@ -1,35 +0,0 @@
-.contextualMenu {
- position: absolute;
- background-color: rgba(36, 36, 36, 0.7);
- border-radius: 4px;
- padding: 10px 5px;
- z-index: 1000;
- width: 250px;
- height: auto;
- color: #e3e3e3;
- display: flex;
- flex-direction: column;
- font-size: 14px;
- user-select: none;
-
- > div{
- transition: all 100ms linear;
- cursor: pointer;
- display: flex;
-
- align-items: center;
- border-radius: 4px;
- padding: 0 0 0 10px;
- color: #e3e3e3;
- width: 100%;
- height: 35px;
- }
- > div:hover{
- background-color: #e3e3e3;
- color: rgba(36, 36, 36, 0.7);
- }
- > div:active{
- transform: scale(0.98);
- filter: brightness(110%);
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/ContextMenu/index.tsx b/packages/comty/src/components/Layout/ContextMenu/index.tsx
deleted file mode 100644
index 3945265a..00000000
--- a/packages/comty/src/components/Layout/ContextMenu/index.tsx
+++ /dev/null
@@ -1,143 +0,0 @@
-import { verbosity } from '@nodecorejs/utils'
-import styles from './index.less'
-import ReactDOM from 'react-dom'
-import React from 'react'
-
-let onRend = false
-const renderDiv = document.createElement('div')
-export interface ContextMenuComponent_props {
- renderList: any;
- yPos: number;
- xPos: number;
- app: any;
- dispatch: any;
-}
-
-export class ContextMenuComponent extends React.PureComponent{
- listening: boolean
- wrapperRef: any
- eventListener: () => void
- renderDiv: HTMLDivElement
- state: any
-
- constructor(props:any){
- super(props)
- this.state = {
- renderList: null,
- loading: true
- }
-
- this.renderDiv = renderDiv
- this.listening = false
- this.setWrapperRef = this.setWrapperRef.bind(this)
- this.handleClickOutside = this.handleClickOutside.bind(this)
-
- this.eventListener = () => {
- document.addEventListener('click', this.handleClickOutside, false)
- this.listening = true
- }
- }
-
- setWrapperRef(node){
- this.wrapperRef = node
- }
-
- handleClickOutside(event) {
- if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {
- this.listening = false
- DestroyContextMenu()
- document.removeEventListener('click', this.eventListener, false)
- }
- }
-
- filterArray(data: any[]) {
- let tmp: any = []
- return new Promise(resolve => {
- data.forEach(async (element: { require: string; }) => {
- if (typeof(element.require) !== 'undefined') {
- const validRequire = await window.requireQuery(element.require)
- validRequire? tmp.push(element) : null
- }else{
- tmp.push(element)
- }
- })
- resolve(tmp)
- })
- }
-
- async queryMenu(data){
- this.setState({ renderList: await this.filterArray(data), loading: false })
- }
-
- handle(e:any, props:any){
- if(!e || typeof(e) == 'undefined') {
- return false
- }
- typeof(e.onClick) !== 'undefined' && e.onClick ? e.onClick(props) : null
- typeof(e.keepOnClick) !== 'undefined' && e.keepOnClick ? null : DestroyContextMenu()
- }
-
- renderElements(){
- if (!Array.isArray(this.state.renderList)) {
- return null
- }
- return this.state.renderList.map((e:any) => {
- return(
- this.handle(e.params, this.props)} key={e.key}>
- {e.icon}{e.title}
-
- )
- })
- }
-
- componentDidMount(){
- if (this.props.renderList) {
- this.queryMenu(this.props.renderList)
- }
- }
-
- componentDidUpdate(){
- !this.listening ? this.eventListener() : null
- }
-
- render(){
- if (this.state.loading) {
- return null
- }
- return (
-
- )
- }
-}
-
-export function DestroyContextMenu(){
- verbosity.log('destroying')
- const unmountResult = ReactDOM.unmountComponentAtNode(renderDiv)
- if (unmountResult && renderDiv.parentNode) {
- renderDiv.parentNode.removeChild(renderDiv)
- onRend = false
- }
-}
-
-export function OpenContextMenu(props){
- verbosity.log(props)
- const renderComponent = React.createElement(ContextMenuComponent, props)
- if (onRend) {
- DestroyContextMenu()
- }
- document.body.appendChild(renderDiv).setAttribute('id', 'contextMenu')
- ReactDOM.render(renderComponent, renderDiv)
- onRend = true
-}
-
-
-export default OpenContextMenu
diff --git a/packages/comty/src/components/Layout/Overlay/components/cards/__searchBar.js b/packages/comty/src/components/Layout/Overlay/components/cards/__searchBar.js
deleted file mode 100644
index 5b0734be..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/cards/__searchBar.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import React from 'react'
-import styles from './__searchBar.less'
-import { newSearch } from "core/models/overlay"
-
-export default class __searchBar extends React.Component {
- state = {
- value: '',
- }
- openSearcher = () => {
- const { value } = this.state
- if (value.length < 1) return false
- if (value == /\s/) return false
- newSearch({ keyword: value });
- }
- onChange = e => {
- const { value } = e.target
- this.setState({ value: value })
- }
-
- handleKey = (e) => {
- if (e.key == 'Enter') {
- this.openSearcher()
- }
- }
- render() {
- return (
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Overlay/components/cards/__searchBar.less b/packages/comty/src/components/Layout/Overlay/components/cards/__searchBar.less
deleted file mode 100644
index 7d62a66a..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/cards/__searchBar.less
+++ /dev/null
@@ -1,33 +0,0 @@
-@import '~theme/index.less';
-
-.search_bar {
- height: 24px;
- position: relative;
-
- input {
- height: 100%;
- width: 100%;
- background-color: transparent;
- border: 0!important;
- outline: 0!important;
- color: @__app_backgroundAccent;
- padding: 0 0 0 48px;
- background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56.966 56.966' fill='%23c1c7cd'%3e%3cpath d='M55.146 51.887L41.588 37.786A22.926 22.926 0 0046.984 23c0-12.682-10.318-23-23-23s-23 10.318-23 23 10.318 23 23 23c4.761 0 9.298-1.436 13.177-4.162l13.661 14.208c.571.593 1.339.92 2.162.92.779 0 1.518-.297 2.079-.837a3.004 3.004 0 00.083-4.242zM23.984 6c9.374 0 17 7.626 17 17s-7.626 17-17 17-17-7.626-17-17 7.626-17 17-17z'/%3e%3c/svg%3e");
- background-repeat: no-repeat;
- background-size: 16px;
- background-position: 0 48%;
- font-family: @__app_secondaryFont;
- font-weight: 600;
- font-size: 15px;
- &::placeholder {
- color: @__app_backgroundAccent;
- }
- transition: all 150ms ease-in-out;
-
- }
-
- input:focus{
- background-position: 20px 48%;
- transition: all 150ms ease-in-out;
- }
- }
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Overlay/components/cards/__suggestions.js b/packages/comty/src/components/Layout/Overlay/components/cards/__suggestions.js
deleted file mode 100644
index f58f2e03..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/cards/__suggestions.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import React from 'react'
-import { Feather } from 'components'
-import styles from './__suggestions.less'
-
-import {Card_Component} from '../index.js'
-
-export default class __suggestions extends React.Component{
- state = {
- trendings: [],
- loading: true
- }
- componentDidMount(){
- const { data } = this.props
- if(data){
- this.setState({ trendings: data, loading: false })
- }
- if(!data){
- this.setState({ loading: false })
- }
- }
-
- render(){
- if (this.state.loading) return
- return
-
-
Suggestions
-
-
- }
-
- }
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Overlay/components/cards/__suggestions.less b/packages/comty/src/components/Layout/Overlay/components/cards/__suggestions.less
deleted file mode 100644
index 0a624396..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/cards/__suggestions.less
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.suggestions_wrapper{
-
-}
diff --git a/packages/comty/src/components/Layout/Overlay/components/cards/__trendings.js b/packages/comty/src/components/Layout/Overlay/components/cards/__trendings.js
deleted file mode 100644
index d63103c6..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/cards/__trendings.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { Feather } from 'components'
-import styles from './__trendings.less'
-
-import {Card_Component} from '../index.js'
-
-export default class __trendings extends React.Component {
- state = {
- trendings: [],
- loading: true
- }
- componentDidMount(){
- const { data } = this.props
- if(data){
- this.setState({ trendings: data, loading: false })
- }
- }
-
- render(){
- if (this.state.loading) return
- return Trending now
-
-
-
(
-
-
#{item.tag}
-
{item.trend_use_num} Posts
-
)}
- />
-
- }
- }
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Overlay/components/cards/__trendings.less b/packages/comty/src/components/Layout/Overlay/components/cards/__trendings.less
deleted file mode 100644
index 15daad06..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/cards/__trendings.less
+++ /dev/null
@@ -1,29 +0,0 @@
-@import '~theme/index.less';
-
-.trendings{
- word-break: break-all;
- padding: 0 5px 0 10px;
- height: auto;
- font-weight: 500;
-
- .hash{
- margin: 5px 0 3px;
- cursor: pointer;
- }
-
- span{
- margin: 0;
- color: #2196F3;
- font-size: 12px;
- max-height: 35px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
-
- p{
- color: #333;
- font-size: 9px;
- }
-
- }
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Overlay/components/index.js b/packages/comty/src/components/Layout/Overlay/components/index.js
deleted file mode 100644
index 80501ac6..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import Primary from './layout/Primary.tsx'
-
-export {
- Primary
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Overlay/components/layout/Primary.tsx b/packages/comty/src/components/Layout/Overlay/components/layout/Primary.tsx
deleted file mode 100644
index 29780e84..00000000
--- a/packages/comty/src/components/Layout/Overlay/components/layout/Primary.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import * as React from 'react'
-import * as antd from 'antd'
-import { LeftOutlined } from 'components/Icons'
-
-export interface overlay_primary_props {
- y?: number;
- getRef: React.Ref;
- isMobile: boolean;
- fragment: any;
- mode: string;
- closable: boolean;
-}
-
-const renderExit = }
- onClick={() => window.overlaySwap.close()}
-> Back
-
-const overlay_primary = (props: overlay_primary_props) => {
- const { element, mode, isMobile } = props
- return (
-
- {props.mode === 'full' || props.mode === 'half' ? renderExit : null}
- {element}
-
- )
-}
-
-overlay_primary.defaultProps = {
- mode: false,
- element: null,
- isMobile: false,
- closable: true,
- y: 0,
-}
-
-export default overlay_primary
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Overlay/index.js b/packages/comty/src/components/Layout/Overlay/index.js
deleted file mode 100644
index 9cfef2e7..00000000
--- a/packages/comty/src/components/Layout/Overlay/index.js
+++ /dev/null
@@ -1,119 +0,0 @@
-import React from 'react'
-import { verbosity } from '@nodecorejs/utils'
-import { connect } from 'umi'
-import classnames from 'classnames'
-
-import { Primary } from './components'
-import { objectToArrayMap } from '@nodecorejs/utils'
-
-const includeAllowedProps = [ "size" ]
-
-@connect(({ app }) => ({ app }))
-export default class Overlay extends React.Component {
- constructor(props) {
- super(props)
- this.state = {
- loading: true,
- }
- this.setWrapperRef = this.setWrapperRef.bind(this)
- this.handleClickOutside = this.handleClickOutside.bind(this)
- this.keydownFilter = this.keydownFilter.bind(this)
-
- window.overlaySwap = this.swap
- }
-
- swap = {
- isOpen: () => {
- return this.props.app.overlayActive
- },
- close: () => {
- this.props.dispatch({
- type: 'app/updateState',
- payload: {
- overlayActive: false,
- overlayElement: null
- },
- });
- },
- open: (payload) => {
- if (!payload) return false;
- verbosity.log('Dispatching fragment =>', payload)
- this.props.dispatch({
- type: 'app/updateState',
- payload: {
- overlayActive: true,
- overlayElement: payload
- }
- })
- }
- }
-
- keydownFilter(event) {
- if (event.keyCode === 27) {
- this.swap.close()
- }
- }
-
- handleClickOutside(event) {
- if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {
- this.swap.close()
- }
- }
-
- componentDidUpdate() {
- if (this.props.app.overlayElement) {
- document.addEventListener('keydown', this.keydownFilter, false)
- document.addEventListener('mousedown', this.handleClickOutside)
- } else {
- document.removeEventListener('mousedown', this.handleClickOutside)
- }
- }
-
- setWrapperRef(node) {
- this.wrapperRef = node;
- }
-
- render() {
- let props = {}
- const { overlayElement, overlayActive } = this.props.app
-
- const isOnMode = (mode) => {
- if (!overlayActive || typeof (overlayElement.mode) == "undefined") {
- return false
- }
- return overlayElement.mode === mode ? true : false
- }
-
- const renderElement = () => {
- if (overlayElement && overlayActive) {
- return
- }
- return null
- }
-
- try {
- objectToArrayMap(overlayElement).forEach((e) => {
- if (includeAllowedProps.includes(e.key)) {
- props[e.key] = e.value
- }
- })
- } catch (error) {
- // terrible (⓿_⓿)
- }
-
- return (
-
- {renderElement()}
-
- )
- }
-}
diff --git a/packages/comty/src/components/Layout/Overlay/reducers.js b/packages/comty/src/components/Layout/Overlay/reducers.js
deleted file mode 100644
index cdb28093..00000000
--- a/packages/comty/src/components/Layout/Overlay/reducers.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import * as app from 'app'
-
-export async function post(id,callback){
- if(!id) return false
- const payload = { post_id: id }
- app.comty_post.get((err, response) => {
- try {
- return callback(JSON.parse(response)['post_data'])
- } catch (error) {
- console.log(error)
- }
- }, payload)
-}
-
-export async function comments(id,callback){
- if(!id) return false
- const payload = { post_id: id }
- app.comty_post.get((err, response) => {
- try {
- return callback(JSON.parse(response)['post_comments'])
- }catch (error) {
- console.log(error)
- }
- }, payload)
-}
-
-export function search(key,callback){
- if (!key) return false
-
- const payload = { key: key }
- app.comty_search.keywords((err, response) => {
- return callback(response)
- }, payload)
-}
-
diff --git a/packages/comty/src/components/Layout/RightSider/components/invalid/index.js b/packages/comty/src/components/Layout/RightSider/components/invalid/index.js
deleted file mode 100644
index a66d03bc..00000000
--- a/packages/comty/src/components/Layout/RightSider/components/invalid/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { CardComponent } from 'components'
-
-export default () => {
- return (
-
- Invalid Component
-
- )
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/RightSider/components/profileCard/index.js b/packages/comty/src/components/Layout/RightSider/components/profileCard/index.js
deleted file mode 100644
index 59185280..00000000
--- a/packages/comty/src/components/Layout/RightSider/components/profileCard/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import router from 'core/libs/router'
-import withConnector from 'core/libs/withConnector'
-import { CardComponent } from 'components'
-
-@withConnector
-export default class ProfileCard extends React.Component {
- render() {
- const { session_data, session_valid, session_uuid } = this.props.app
-
- if (session_valid) {
- return(
-
-
router.goProfile(session_data["username"])} style={{ display: 'flex', lineHeight: '30px', wordBreak: 'break-all' }} >
-
-
- @{session_data.username}
- #{session_uuid}
-
-
-
- )
- }
- return null
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/RightSider/components/searchBar/index.js b/packages/comty/src/components/Layout/RightSider/components/searchBar/index.js
deleted file mode 100644
index dfb4c36c..00000000
--- a/packages/comty/src/components/Layout/RightSider/components/searchBar/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import { newSearch } from "core/models/overlay"
-
-export default class __searchBar extends React.Component {
- state = {
- value: '',
- }
- openSearcher = () => {
- const { value } = this.state
- if (value.length < 1) return false
- if (value == /\s/) return false
- newSearch({ keyword: value });
- }
- onChange = e => {
- const { value } = e.target
- this.setState({ value: value })
- }
-
- handleKey = (e) => {
- if (e.key == 'Enter') {
- this.openSearcher()
- }
- }
- render() {
- return (
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/RightSider/components/searchBar/index.less b/packages/comty/src/components/Layout/RightSider/components/searchBar/index.less
deleted file mode 100644
index 7d62a66a..00000000
--- a/packages/comty/src/components/Layout/RightSider/components/searchBar/index.less
+++ /dev/null
@@ -1,33 +0,0 @@
-@import '~theme/index.less';
-
-.search_bar {
- height: 24px;
- position: relative;
-
- input {
- height: 100%;
- width: 100%;
- background-color: transparent;
- border: 0!important;
- outline: 0!important;
- color: @__app_backgroundAccent;
- padding: 0 0 0 48px;
- background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56.966 56.966' fill='%23c1c7cd'%3e%3cpath d='M55.146 51.887L41.588 37.786A22.926 22.926 0 0046.984 23c0-12.682-10.318-23-23-23s-23 10.318-23 23 10.318 23 23 23c4.761 0 9.298-1.436 13.177-4.162l13.661 14.208c.571.593 1.339.92 2.162.92.779 0 1.518-.297 2.079-.837a3.004 3.004 0 00.083-4.242zM23.984 6c9.374 0 17 7.626 17 17s-7.626 17-17 17-17-7.626-17-17 7.626-17 17-17z'/%3e%3c/svg%3e");
- background-repeat: no-repeat;
- background-size: 16px;
- background-position: 0 48%;
- font-family: @__app_secondaryFont;
- font-weight: 600;
- font-size: 15px;
- &::placeholder {
- color: @__app_backgroundAccent;
- }
- transition: all 150ms ease-in-out;
-
- }
-
- input:focus{
- background-position: 20px 48%;
- transition: all 150ms ease-in-out;
- }
- }
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/RightSider/index.js b/packages/comty/src/components/Layout/RightSider/index.js
deleted file mode 100644
index d3dc6369..00000000
--- a/packages/comty/src/components/Layout/RightSider/index.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import React from 'react'
-import classnames from 'classnames'
-import withConnector from 'core/libs/withConnector'
-import { objectToArrayMap } from '@nodecorejs/utils'
-
-import InvalidComponent from './components/invalid'
-import ProfileCard from './components/profileCard'
-import SearchBar from './components/searchBar'
-
-const MapToComponent = {
- profileCard: ,
- searchBar:
-}
-
-// to do: add order by numeric range
-let DefaultElements = [
- "searchBar",
- "profileCard"
-]
-
-@withConnector
-export default class RightSider extends React.Component {
-
- state = {
- fragments: []
- }
-
- renderElements() {
- try {
- return this.state.fragments.map((element) => {
- return
- {element.fragment ?? null}
-
- })
- } catch (error) {
- console.log(error)
- return
- }
- }
-
- componentDidMount() {
- if (typeof (window.rightSidebar) == "undefined") {
- window.RightSider = {}
- }
- window.RightSider.addFragment = (fragment) => {
- let updated = this.state.fragments
- updated.push(fragment)
- this.setState({ fragments: updated })
- }
-
- DefaultElements.forEach((e) => {
- window.RightSider.addFragment({ id: e, fragment: MapToComponent[e] })
- })
-
- }
-
- render() {
- return (
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Sider/default/index.js b/packages/comty/src/components/Layout/Sider/default/index.js
deleted file mode 100644
index 670eb769..00000000
--- a/packages/comty/src/components/Layout/Sider/default/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as Icons from 'components/Icons'
-import styles from './index.less'
-import classnames from 'classnames'
-import { connect } from 'umi'
-import { objectToArrayMap, queryObjectToString } from 'core'
-
-@connect(({ app }) => ({ app }))
-export default class Sider_Default extends React.Component {
- state = {
- type: "desktop",
- loading: true,
- menus: null
- }
-
- toogleCollapse() {
- window.toogleSidebarCollapse()
- }
-
- componentDidMount() {
- this.setState({ menus: this.props.menus, loading: false })
- }
-
- renderMenus(data, position) {
- if (!position) return null
- return data.map(e => {
- if (!e.attributes) e.attributes = {}
- let componentPosition = e.attributes.position || "top"
-
- return componentPosition == position
- ? (
-
- {e.title}
-
- )
- : null
- })
- }
-
- render() {
- const { handleClickMenu } = this.props
- if (this.state.loading) {
- return null
- }
- return (
-
-
{ window.toogleSidebarCollapse() }}
- collapsed={this.props.app.sidebar_collapsed || false}
- trigger={null}
- className={styles.left_sider_container}
- width="175px"
- style={{ flex: 'unset' }}
- >
- { handleClickMenu({ key: '' }) }} className={classnames(styles.left_sider_header, { [styles.emb]: this.props.app.embedded })}>
-
-
-
-
- {this.renderMenus(this.state.menus, "top")}
-
-
-
-
- {this.renderMenus(this.state.menus, "bottom")}
-
-
-
-
-
- )
- }
-}
diff --git a/packages/comty/src/components/Layout/Sider/default/index.less b/packages/comty/src/components/Layout/Sider/default/index.less
deleted file mode 100644
index f4e02b67..00000000
--- a/packages/comty/src/components/Layout/Sider/default/index.less
+++ /dev/null
@@ -1,147 +0,0 @@
-@import '~theme/index.less';
-
-
-.left_sider_wrapper {
- -webkit-app-region: no-drag;
- user-select: none;
- border-color: transparent;
- font-size: 15px;
- font-family: @__app_secondaryFont;
- font-weight: 600;
-
- width: 65%;
- height: 100vh;
-
- z-index: 40;
- float: left;
- position: relative;
- background-color: transparent;
- backdrop-filter: blur(2px);
-
- :global {
- .ant-layout-sider {
- background-color: transparent;
- float: right;
-
- .ant-menu {
- font-weight: 700;
- color: unset;
- vertical-align: middle;
- // margin: 0 0 0 5px;
- // border-right: 0!important;
- }
- }
- }
-}
-
-.left_sider_header {
- cursor: pointer;
- margin: 15px 0 0 22px;
- -webkit-user-drag: none;
- .logotype{
- -webkit-app-region: no-drag;
- max-height: 70px;
- height: 35px;
- }
-
- &.emb{
- margin: 5px 0 0 22px;
- }
-
- &.logged{
-
- }
-}
-
-.left_sider_footer {
- margin: 0 0 12px;
- :global {
- text-align: center;
- bottom: 0;
- position: absolute;
- width: 100%;
- .anticon{
- font-size: 15px!important;
- }
- .ant-menu-item{
- height: 35px!important;
- margin-bottom: 0!important;
- line-height: 30px;
- }
- }
-}
-
-.left_sider_container {
- border-right: transparent;
- height: 100%;
- z-index: 50;
-}
-
-.left_sider_menuContainer {
- height: 100%;
- margin: 18px 0 8px;
-
- :global {
- .ant-layout-sider-children {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- }
-
- .ant-menu-item {
- -webkit-app-region: no-drag;
- transition: @transition-ease-inout;
-
- border-radius: 4px 8px 8px 4px;
- padding: 2px 0 2px 24px;
- border-right: 0!important;
-
- text-align: left;
- }
-
- .ant-menu-item:hover {
- border-radius: 8px;
- transform: translate(10px,0);
-
- backdrop-filter: blur(2px);
- box-shadow: -2px 2px 1px 0 rgba(51, 51, 51, 0.13);
- color: rgb(102, 102, 102);
- }
-
- .ant-menu-item-selected {
- background-color: unset;
- // background: linear-gradient(90deg, rgb(255, 230, 0) 2%, rgba(255,255,255,0.5) 10%);
- }
-
- .anticon {
- font-size: @left_sider_sizeIcons;
- }
-
- .ant-layout-sider-collapsed, .ant-menu-inline-collapsed {
- .ant-menu-item {
- > span{
- visibility: hidden;
- }
- }
- .ant-menu-item:hover {
- box-shadow: unset;
- }
-
- }
-
- .ant-menu-item a {
- color: @__app_color;
- }
- }
-}
-
-.left_sider_menuItems {
- background-color: transparent;
- margin-bottom: 8px;
- //width: 100%;
- font-weight: 500;
-
- animation: fadein 0.5s;
-
-
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/Sider/index.js b/packages/comty/src/components/Layout/Sider/index.js
deleted file mode 100644
index b7b96645..00000000
--- a/packages/comty/src/components/Layout/Sider/index.js
+++ /dev/null
@@ -1,98 +0,0 @@
-import React from 'react'
-import config from 'config'
-import { router } from 'core/libs'
-import { connect } from 'umi'
-import MenuList from 'schemas/sidebar_menu.json'
-
-import Sider_Mobile from './mobile'
-import Sider_Default from './default'
-
-@connect(({ app, extended }) => ({ app, extended }))
-class Sider extends React.Component {
- state = {
- loading: true,
- menuAtrributes: [],
- menus: []
- }
-
- handleClickMenu = e => {
- const elementAtrributes = this.state.menuAtrributes[e.key]
-
- if (typeof (this.state.menuAtrributes[e.key]) !== "undefined") {
- if (typeof (elementAtrributes.onClick) == "function") {
- elementAtrributes.onClick()
- }
- }
-
- router.go(`/${e.key}`) // by default push to router
- }
-
- async menuQuery(data) {
- if (!data) return false
- this.setState({ loading: true })
-
- const filterArray = (data) => {
- return new Promise(resolve => {
- let menuMap = []
- let menuAtrributes = []
- data.forEach(async (element) => {
- if (!element.attributes) {
- element.attributes = {}
- }
- let validRequire = typeof (element.attributes.require) !== 'undefined' ? await window.requireQuery(element.attributes.require) : true
-
- if (validRequire) {
- menuAtrributes[element.id] = element.attributes
- menuMap.push(element)
- }
- })
- this.setState({ menuAtrributes })
- resolve(menuMap)
- })
- }
-
- this.setState({ menus: await filterArray(data), loading: false })
- }
-
- componentDidMount() {
- this.menuQuery(MenuList)
- }
-
- filterMenusByType(type) {
- let arrayResults = []
- this.state.menus.forEach((e) => {
- if (typeof (e.attributes) !== "undefined") {
- const isType = typeof (e.attributes[type]) !== "undefined" ? e.attributes[type] : true // Returns as valid by default if is not set
- if (isType) {
- arrayResults.push(e)
- }
- }
- })
- return arrayResults
- }
-
- renderByType(type) {
- const sider_props = { handleClickMenu: this.handleClickMenu, logo: config.app.LogoPath }
- const filteredMenus = this.filterMenusByType(type)
- switch (type) {
- case "desktop": {
- return
- }
- case "mobile": {
- return
- }
- default: {
- return null // include invalid default
- }
- }
- }
-
-
- render() {
- const { isMobile } = this.props
- if (this.state.loading) return null
- return this.renderByType(isMobile ? "mobile" : "desktop")
- }
-}
-
-export default Sider
diff --git a/packages/comty/src/components/Layout/Sider/mobile/index.js b/packages/comty/src/components/Layout/Sider/mobile/index.js
deleted file mode 100644
index 7cf5f3ba..00000000
--- a/packages/comty/src/components/Layout/Sider/mobile/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import styles from './index.less'
-
-export default class Sider_Mobile extends React.Component {
-
- renderMenus(data){
- return data.map(e => {
- return {e.icon}
- })
- }
-
- render() {
- const { handleClickMenu, menus } = this.props
- return (
-
-
-
- {this.renderMenus(menus)}
-
-
-
- )
- }
-}
diff --git a/packages/comty/src/components/Layout/Sider/mobile/index.less b/packages/comty/src/components/Layout/Sider/mobile/index.less
deleted file mode 100644
index 5c229c18..00000000
--- a/packages/comty/src/components/Layout/Sider/mobile/index.less
+++ /dev/null
@@ -1,45 +0,0 @@
-@import '~theme/index.less';
-
-.left_sider_wrapper {
- overflow: hidden!important;
- position: absolute;
- z-index: 500;
- bottom: 0;
- right: 0;
- left: 0;
-
- height: 50px;
- width: 100%;
-
- border-color: transparent;
- font-size: 13px;
- font-family: @__app_generalFont;
- padding: 0 27px;
-
- :global {
- .ant-layout-sider {
- background-color: transparent;
- height: 100%;
-
- .ant-menu-item {color: @left_sider_color;}
- .anticon {font-size: @left_sider_sizeIcons;}
- .ant-menu-item{margin: auto; padding: 0;}
-
- .ant-menu {
- background-color: #2d2d2d;
- height: 100%;
- border-radius: 27px 27px 0 0;
- padding: 0 27px;
- display: flex;
- }
-
- .ant-menu-horizontal {
- line-height: 46px;
- white-space: nowrap;
- border: 0;
- border-bottom: 0;
- box-shadow: none;
- }
- }
- }
-}
diff --git a/packages/comty/src/components/Layout/WindowNavbar/index.js b/packages/comty/src/components/Layout/WindowNavbar/index.js
deleted file mode 100644
index c40fa160..00000000
--- a/packages/comty/src/components/Layout/WindowNavbar/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import { Minus, X } from 'components/Icons'
-import { connect } from 'umi';
-
-@connect(({ app }) => ({ app }))
-export default class WindowNavbar extends React.Component{
- handleMinimize(){
- this.props.dispatch({
- type: "app/ipcInvoke",
- payload: {
- key: "minimize-window"
- }
- })
- }
- handleClose(){
- this.props.dispatch({
- type: "app/ipcInvoke",
- payload: {
- key: "hide-window"
- }
- })
- }
- render(){
- if (!this.props.dispatch) return null
- return(
-
-
-
this.handleMinimize()} />
-
this.handleClose()}/>
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/WindowNavbar/index.less b/packages/comty/src/components/Layout/WindowNavbar/index.less
deleted file mode 100644
index 13f74bb0..00000000
--- a/packages/comty/src/components/Layout/WindowNavbar/index.less
+++ /dev/null
@@ -1,48 +0,0 @@
-@import '~theme/index.less';
-@aumentSize: 10px;
-
-.navbar{
- -webkit-app-region: drag;
- text-align: right;
-
- height: @__app_winavar_height;
- width: 100%;
- position: absolute;
- z-index: 5000;
- top: 0;
- right: 0;
- background-color: rgba(54, 54, 54, 0.1);
- transition: all 150ms ease-in-out;
-}
-
-.navbar:hover{
- background-color: rgba(54, 54, 54, 0.65);
- height: calc(@__app_winavar_height + @aumentSize);
-}
-
-.controls{
- -webkit-app-region: no-drag;
- display: flex;
- text-align: right;
- float: right;
- width: auto;
- margin: auto;
- height: 100%;
- > div{
- padding: 0 14px;
- svg{
- margin: 0!important;
- padding: 0;
- height: 100%;
- }
- }
- > div:hover{
- background-color: rgba(54, 54, 54, 0.8);
- color: #fdfdfd;
- }
- transition: all 150ms ease-in-out;
-}
-
-.controls:hover{
- background-color: rgba(54, 54, 54, 0.705);
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Layout/index.js b/packages/comty/src/components/Layout/index.js
deleted file mode 100644
index 654137dc..00000000
--- a/packages/comty/src/components/Layout/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import Sider from './Sider'
-import RightSider from './RightSider'
-import Overlay from './Overlay'
-import WindowNavbar from './WindowNavbar'
-import ContextMenu from './ContextMenu/index.tsx'
-
-export { RightSider, Sider, Overlay, WindowNavbar, ContextMenu }
diff --git a/packages/comty/src/components/ListedMenu/index.less b/packages/comty/src/components/ListedMenu/index.less
deleted file mode 100644
index cc1c5ca8..00000000
--- a/packages/comty/src/components/ListedMenu/index.less
+++ /dev/null
@@ -1,94 +0,0 @@
-@import '~theme/index.less';
-
-.main {
- font-family: "Nunito", sans-serif;
- margin: 20px 0 0;
- display: flex;
- width: 100%;
- height: auto;
- overflow: auto;
- color: @__Global_layout_color;
- background-color: #ffffff;
- padding: 15px;
- border-radius: 10px;
-
- :global {
- .ant-list-item {
- padding-top: 7px;
- padding-bottom: 7px;
- }
-
- .ant-list-split .ant-list-item {
- border-bottom: 0;
- }
-
- .ant-list-item-meta-title {
- color: rgba(0, 0, 0, 0.733);
- font-size: 14px;
- }
- }
-
- .menuList {
- user-select: none;
- width: 224px;
- :global {
- .ant-menu-inline {
- color: @__Global_layout_color;
- background-color: transparent;
- border: none;
- }
- .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
- font-weight: bold;
- }
- }
- }
-
- .menuContainer {
- flex: 1;
- padding-top: 8px;
- padding-right: 40px;
- padding-bottom: 8px;
- padding-left: 40px;
-
- .title {
- margin-bottom: 12px;
- color: @__Global_layout_color;
- font-weight: 500;
- font-size: 20px;
- line-height: 28px;
- }
- }
-
- &.inline{
-
- }
-
- &.horizontal{
- flex-direction: column;
- .menuList{
- padding: 15px;
- width: 100%;
- }
- }
-
- &.vertical{
-
- }
-
-}
-
-
-@media screen and (max-width: @screen-md) {
- .main {
- flex-direction: column;
-
- .leftMenu {
- width: 100%;
- border: none;
- }
-
- .right {
- padding: 40px;
- }
- }
-}
diff --git a/packages/comty/src/components/ListedMenu/index.tsx b/packages/comty/src/components/ListedMenu/index.tsx
deleted file mode 100644
index 4f09fecb..00000000
--- a/packages/comty/src/components/ListedMenu/index.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import React from 'react'
-import { Menu, Result } from 'antd'
-import classnames from 'classnames'
-
-import styles from './index.less'
-import { __proto__filterSchematizedArray } from 'core'
-
-export default class ListedMenu extends React.Component {
- state = {
- renderOptionTitle: true,
- loading: true,
- selectKey: '',
- menus: [],
- mode: this.props.mode ?? "inline"
- }
-
- async queryMenu() {
- this.setState({ loading: true })
- this.setState({ menus: await __proto__filterSchematizedArray(this.props.menuArray), loading: false })
- }
-
- getMenu() {
- return this.state.menus.map(item => (
-
- {item.icon} {item.title}
-
- ))
- }
-
- selectKey = (key: any) => {
- this.setState({
- selectKey: key,
- })
- }
-
- renderChildren = () => {
- let titlesArray: never[] = []
- this.state.menus.forEach(e => { titlesArray[e.key] = e })
-
- const OptionTitle = () => {
- if (this.state.renderOptionTitle) {
- return
-
{titlesArray[this.state.selectKey].icon || null}{titlesArray[this.state.selectKey].title || null}
-
- }
- return null
- }
-
- if (this.state.selectKey && titlesArray[this.state.selectKey]) {
- return <>
-
- {this.props.childrens[this.state.selectKey]}
- >
- } else {
- return (
-
- )
- }
- }
-
- componentDidMount() {
- const { childrens, menuArray, defaultKey } = this.props
- const keyIndex = new URLSearchParams(location.search).get('key')
-
- if (keyIndex && typeof (this.props.childrens[keyIndex]) !== "undefined") {
- this.selectKey(keyIndex)
- } else if (defaultKey != null) {
- this.selectKey(defaultKey)
- }
-
- if (this.props.renderOptionTitle != null) {
- this.setState({ renderOptionTitle: this.props.renderOptionTitle })
- }
-
- if (childrens != null && menuArray != null) {
- this.queryMenu()
- }
- }
-
- render() {
- const { selectKey, loading } = this.state
- const isMode = (e: string) => {
- return this.state.mode === `${e}`
- }
-
- if (loading) {
- return <>>
- }
- return (
-
-
-
- {this.props.icon ?? null} {this.props.title ?? "Menu"}
-
- this.selectKey(key)}
- >
- {this.getMenu()}
-
-
-
{this.renderChildren()}
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Loader/index.js b/packages/comty/src/components/Loader/index.js
deleted file mode 100644
index 602982f1..00000000
--- a/packages/comty/src/components/Loader/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from 'react'
-import classNames from 'classnames'
-import styles from './index.less'
-
-const Loader = (loading) => {
- return (
-
-
- )
-}
-
-
-export default Loader
diff --git a/packages/comty/src/components/Loader/index.less b/packages/comty/src/components/Loader/index.less
deleted file mode 100644
index b072bbba..00000000
--- a/packages/comty/src/components/Loader/index.less
+++ /dev/null
@@ -1,107 +0,0 @@
-@import '~theme/index.less';
-
-.wrapper {
- user-select: none;
- position: absolute;
- z-index: 1000;
- right: 0;
- bottom: 0;
- width: auto;
- height: 29px;
-
- margin: 30px;
- background-color: #2d2d2dc2;
- border-radius: 28px;
-
- &.end {
- animation: unshow 0.8s linear;
- .newloader>div {
- animation: loader 0.8s linear;
- }
- opacity: 0;
- display: none;
- }
-
- .newloader {
- transform: scale(0.28);
- width: 54px;
- height: 23px;
- }
-
- .newloader>div {
- width: 6px;
- height: 20px;
- position: absolute;
- left: -10px;
- bottom: 15px;
- border-radius: 5px;
- transform-origin: 10px 35px;
- transform: rotate(0deg);
- animation: loader 0.8s infinite;
- }
-
- .newloader>div:nth-child(2) {
- transform: rotate(45deg);
- animation-delay: 0.1s;
- }
-
- .newloader>div:nth-child(3) {
- transform: rotate(90deg);
- animation-delay: 0.2s;
- }
-
- .newloader>div:nth-child(4) {
- transform: rotate(135deg);
- animation-delay: 0.3s;
- }
-
- .newloader>div:nth-child(5) {
- transform: rotate(180deg);
- animation-delay: 0.4s;
- }
-
- .newloader>div:nth-child(6) {
- transform: rotate(225deg);
- animation-delay: 0.5s;
- }
-
- .newloader>div:nth-child(7) {
- transform: rotate(270deg);
- animation-delay: 0.6s;
- }
-
- .newloader>div:nth-child(8) {
- transform: rotate(315deg);
- animation-delay: 0.7s;
- }
-}
-
-@keyframes loader {
- 0% {
- background: transparent;
- left: -10px;
- transform-origin: 10px 35px;
- }
-
- 30% {
- background: #fff;
- }
-
- 100% {
- background: transparent;
- left: 10px;
- transform-origin: -10px 35px;
- }
-}
-
-@keyframes unshow {
- 0% {
- opacity: 1;
- display: block;
- }
-
- 100% {
- opacity: 0;
- display: none;
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/MediaPlayer/index.js b/packages/comty/src/components/MediaPlayer/index.js
deleted file mode 100644
index 3854396b..00000000
--- a/packages/comty/src/components/MediaPlayer/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import React from 'react'
-import classnames from 'classnames'
-import styles from './index.less'
-
-export default class MediaPlayer extends React.PureComponent {
- player() {
- const { file } = this.props
- let type
-
- const ImageExtensions = ['.png', '.jpg', '.jpeg', '.gif']
- const VideoExtensions = ['.mp4', '.mov', '.avi']
- const AudioExtensions = ['.mp3', '.ogg', '.wav']
-
- const FilesAllowed = ImageExtensions.concat(
- VideoExtensions,
- AudioExtensions
- )
-
- for (const prop in FilesAllowed) {
- if (file.includes(`${ImageExtensions[prop]}`)) {
- type = 'image'
- }
- if (file.includes(`${VideoExtensions[prop]}`)) {
- type = 'video'
- }
- if (file.includes(`${AudioExtensions[prop]}`)) {
- type = 'audio'
- }
- }
-
- if (type == 'video') {
- // const payload = {type: 'video', sources: [{src: file,}]}
- // return (
- //
- // )
- return (
-
-
-
- )
- }
- if (type == 'audio') {
- return (
-
-
-
- )
- }
- if (type == 'image') {
- return
- }
- }
- render() {
- return (
-
- {this.player()}
-
- )
- }
-}
diff --git a/packages/comty/src/components/MediaPlayer/index.less b/packages/comty/src/components/MediaPlayer/index.less
deleted file mode 100644
index eb853b44..00000000
--- a/packages/comty/src/components/MediaPlayer/index.less
+++ /dev/null
@@ -1,84 +0,0 @@
-.PlayerContainer {
- width: 100%;
-
- img {
- width: 100%;
- overflow: hidden;
- margin: auto;
- }
-
- video {
- max-height: 600px;
- width: 100%;
- overflow: hidden;
- }
-
- audio {
- width: 100%;
- }
-
-
- &.entire {
- max-width: 52%;
- max-height: 80%;
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translate(-70%, -50%);
-
- img {
- object-fit: contain;
- height: 100%;
- width: 100%;
- max-width: 52vw;
- max-height: 80vh;
- }
-
- audio {
- height: 100%;
- width: 100%;
- }
-
- video {
- object-fit: contain;
- height: 100%;
- width: 100%;
- max-width: 52vw;
- max-height: 80vh;
- }
- }
-
- &.mobile {
- max-width: unset;
- max-height: unset;
- top: unset;
- left: unset;
- transform: unset;
-
- width: 100%;
- position: relative;
- height: 60vh;
- display: flex;
-
- img {
- object-fit: contain;
- height: auto;
- width: 100%;
- max-width: unset;
- max-height: unset;
- }
-
- audio {
- height: 100%;
- width: 100%;
- }
-
- video {
- object-fit: contain;
- height: auto;
- width: 100%;
- max-width: unset;
- max-height: unset;
- }
- }
-}
diff --git a/packages/comty/src/components/Page/Page.less b/packages/comty/src/components/Page/Page.less
deleted file mode 100644
index 1c0a5e54..00000000
--- a/packages/comty/src/components/Page/Page.less
+++ /dev/null
@@ -1,16 +0,0 @@
-@import '~theme/index.less';
-
-.contentInner {
- background: #fff;
- padding: 24px;
- box-shadow: @shadow-1;
- min-height: ~'calc(100vh - 230px)';
- position: relative;
-}
-
-@media (max-width: 767px) {
- .contentInner {
- padding: 12px;
- min-height: ~'calc(100vh - 160px)';
- }
-}
diff --git a/packages/comty/src/components/Page/index.js b/packages/comty/src/components/Page/index.js
deleted file mode 100644
index 97e100ce..00000000
--- a/packages/comty/src/components/Page/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import classnames from 'classnames';
-import styles from './Page.less';
-
-export default class Page extends Component {
- render() {
- const { className, children, loading = false, inner = false } = this.props;
- const loadingStyle = {
- height: 'calc(100vh - 184px)',
- overflow: 'hidden',
- };
- return (
-
- {loading ? 'Loading' : ''}
- {children}
-
- );
- }
-}
-
-Page.propTypes = {
- className: PropTypes.string,
- children: PropTypes.node,
- loading: PropTypes.bool,
- inner: PropTypes.bool,
-};
diff --git a/packages/comty/src/components/ParamsList/index.js b/packages/comty/src/components/ParamsList/index.js
deleted file mode 100644
index 26331254..00000000
--- a/packages/comty/src/components/ParamsList/index.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import React from 'react';
-import * as antd from 'antd'
-import { RefreshCw } from 'components/Icons'
-import { objectToArrayMap } from '@nodecorejs/utils'
-import { getCircularReplacer, decycle } from 'core'
-
-const serializeFlags = {
- __cycle_flag: true // with id 0
-}
-
-function isFlagId(e, id) {
- return serializeFlags[Object.keys(e)[id ?? 0]]
-}
-
-const getErrorRender = (e, error) => {
- return (
-
-
- This could not be rendered > ({e.key}) [{typeof (e.value)}]
-
-
-
-
-
- {error.toString()}
-
-
-
-
-
- )
-}
-
-const getDecoratorStr = (e, json) => {
- try {
- switch (typeof (e.value)) {
- case "string": {
- return `(${json.length}) characters`
- }
- case "object": {
- if (e.value == null) {
- return `Empty (null/undefined)`
- }
- if (isFlagId(e.value, 0)) {
- return Cylic
- }
- if (typeof (e.value.length) !== "undefined") {
- return `Lenght (${e.value.length})`
- }
- if (typeof (Object.keys(e.value).length) !== "undefined") {
- return `Lenght (${Object.keys(e.value).length})`
- }
- return `Immeasurable (by error) (not valid object)`
- }
- case "array": {
- return `Lenght (${e.value.length})`
- }
- case "boolean": {
- return {e.value ? "true" : "false"}
- }
- case "number": {
- return {e.value}
- }
- default:
- return `Immeasurable / Invalid`
- }
- } catch (error) {
- return Immeasurable (by error)
- }
-}
-
-const getContent = (e) => {
- try {
- switch (typeof (e.value)) {
- case "string": {
- return e.value
- }
- case "object": {
- if (e.value == null) {
- return `${e.value}`
- }
- if (isFlagId(e.value, 0)) {
- return
- This cannot be rendered because a cylic has been detected
-
- }
- if (Object.keys(e.value).length > 0) { // trying create nested
- return
- {DebugPanel(e.value)}
-
- }
- return JSON.stringify(e.value, getCircularReplacer())
- }
- case "array": {
- return JSON.stringify(e.value, getCircularReplacer())
- }
- case "boolean": {
- return `${e.value}`
- }
- default:
- return `${e.value}`
- }
- } catch (error) {
- return getErrorRender(e, error)
- }
-}
-
-const getType = (e) => {
- if (e !== null && isFlagId(e, 0)) {
- return `[loop]`
- }
- return `[${typeof (e)}]`
-}
-
-export default function DebugPanel(data) {
- if (!data) return false
- return objectToArrayMap(decycle(data)).map(e => {
- try {
- const content = getContent(e)
- return (
-
- {getType(e.value)} {e.key} | {getDecoratorStr(e, content)} } >
-
- {content}
-
-
-
- )
- } catch (error) {
- return getErrorRender(e, error)
- }
- })
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/PostCard/components/like/index.js b/packages/comty/src/components/PostCard/components/like/index.js
deleted file mode 100644
index 2cdaba23..00000000
--- a/packages/comty/src/components/PostCard/components/like/index.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import * as core from 'core'
-import classnames from 'classnames'
-import { verbosity } from '@nodecorejs/utils'
-
-export default class LikeBtn extends React.Component {
- state = {
- hoveringCounter: false,
- liked: this.props.liked,
- count: this.props.count,
- clicked: false,
- }
-
- handleClick() {
- let done = false
- if (typeof (this.props.handleClick) !== "undefined") {
- this.setState({ clicked: true })
-
- this.props.handleClick((callback) => {
- if (typeof (callback) !== "object") {
- this.setState({ count: callback })
- } else {
- verbosity.log(`Invalid response`)
- this.setState({ clicked: false, liked: false })
- }
- setTimeout(() => {
- this.setState({ clicked: false, liked: !this.state.liked })
- }, 150)
- done = true
- }, setTimeout(() => {
- if (!done) {
- verbosity.log(`like click timeout!`)
- this.setState({ clicked: false })
- }
- }, 3000))
-
- } else {
- return false
- }
- }
-
- handleLeave() {
- if (this.state.hoveringCounter) {
- this.setState({hoveringCounter: false })
- }
- }
-
- handleOver() {
- if (!this.state.hoveringCounter) {
- this.setState({hoveringCounter: true })
- }
- }
-
- getDecoratorCount(count) {
- return {this.state.hoveringCounter? `${count}` : core.abbreviateCount(new Number(count).toString())}
- }
-
- render() {
- const { liked, clicked, count } = this.state
- return (
- this.handleLeave()} onMouseOver={() => this.handleOver()}>
-
{ this.handleClick() }} className={classnames(styles.like_button, { [styles.clickanim]: clicked })} >
-
-
-
-
- {this.getDecoratorCount(count)}
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/PostCard/components/like/index.less b/packages/comty/src/components/PostCard/components/like/index.less
deleted file mode 100644
index 38c33f72..00000000
--- a/packages/comty/src/components/PostCard/components/like/index.less
+++ /dev/null
@@ -1,225 +0,0 @@
-@blur-transition-duration: 150ms;
-@blurFilter-transition-duration: 150ms;
-
-.like_button,
- .like_button:before,
- .like_button:after {
- position: relative;
- box-sizing: border-box;
- }
-
- .ripple,
- .ripple:before,
- .ripple:after {
- position: relative;
- box-sizing: border-box;
- }
-
- .likesIndicator{
- cursor: default;
- margin: auto;
- position: absolute;
- z-index: 12;
- bottom: 0;
- left: 0;
- background-color: #fff;
- border-radius: 0 12px 12px 0;
- color: #333;
- width: 52px;
- height: fit-content;
- transition: all 150ms ease-in-out;
- transform: translate(30px, -4px);
- padding: 5px 14px;
- min-width: fit-content;
-
- &.hover{
- width: 90px;
- }
- text-align: center;
- }
-
- .likeCounter {
- font-family: "Poppins", sans-serif;
-
- opacity: 0;
- transform: perspective(100px) translateZ(10px);
- filter: blur(10px);
- letter-spacing: 0;
-
- &.active {
- opacity: 1;
- //transform: perspective(100px) translateZ(0px);
- filter: blur(0px);
-
- transition: opacity @blur-transition-duration linear, transform @blur-transition-duration linear, filter @blurFilter-transition-duration linear, letter-spacing @blur-transition-duration linear;
- }
-
- &.past {
- opacity: 0;
- //transform: perspective(100px) translateZ(-10px);
- filter: blur(1px);
- letter-spacing: 0.15em;
- transition: opacity @blur-transition-duration linear, transform @blur-transition-duration linear, filter @blurFilter-transition-duration linear, letter-spacing @blur-transition-duration linear;
- }
- }
-
-
- .like_button {
- --color-heart: #EA442B;
- --easing: cubic-bezier(.7, 0, .3, 1);
- --duration: .5s;
-
- font-size: 40px;
- border: none;
- border-radius: 50%;
- background: white;
- width: 1em;
- height: 1em;
- padding: 0;
- margin: 0;
- outline: none;
- z-index: 13;
- transition: transform var(--duration) var(--easing);
- cursor: pointer;
-
- &:before {
- z-index: -1;
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border-radius: inherit;
- transition: inherit;
- }
-
- &:after {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: #fff;
- border-radius: inherit;
- z-index: -1;
- }
-
-
-
-
- @keyframes depress {
-
- from,
- to {
- transform: none;
- }
-
- 50% {
- transform: translateY(5%) scale(0.9);
- }
- }
-
- @keyframes depress-shadow {
-
- from,
- to {
- transform: none;
- }
-
- 50% {
- transform: scale(0.5);
- }
- }
- }
-
- .like_wrapper {
- display: flex;
- align-items: center;
- justify-content: center;
- z-index: 5;
-
- >* {
- margin: auto;
- grid-area: 1 / 1;
- }
- }
-
- .heart {
- width: 100%;
- height: 100%;
- display: block;
-
- >path {
- stroke: var(--color-heart);
- stroke-width: 2;
- transition: fill var(--duration) var(--easing);
- fill: var(--color-heart);
- }
-
- &.empty {
- >path {
- stroke: var(--color-heart);
- stroke-width: 2;
- transition: fill var(--duration) var(--easing);
- fill: transparent;
- }
- }
-
- &.clickanim {
- animation: heart-bounce var(--duration) var(--easing);
-
- @keyframes heart-bounce {
- 40% {
- transform: scale(0.7);
- }
-
- 0%,
- 80%,
- 100% {
- transform: scale(1);
- }
- }
- }
-
- animation: none;
- }
-
- .ripple {
- position: absolute;
- height: 100%;
- width: 100%;
- border-radius: 50%;
- overflow: hidden;
- z-index: 1;
-
- &:before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border: .4em solid var(--color-heart);
- border-radius: inherit;
- transform: scale(0);
- }
-
- &.clickanim {
- &:before {
- animation: ripple-out var(--duration) var(--easing);
-
- @keyframes ripple-out {
- from {
- transform: scale(0);
- }
-
- to {
- transform: scale(5);
- }
- }
- }
- }
-
- }
diff --git a/packages/comty/src/components/PostCard/index.js b/packages/comty/src/components/PostCard/index.js
deleted file mode 100644
index d945dcb7..00000000
--- a/packages/comty/src/components/PostCard/index.js
+++ /dev/null
@@ -1,265 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import styles from './index.less'
-import { MediaPlayer } from 'components'
-import * as Icons from 'components/Icons'
-
-import { Clipboard, Aperture, FlagOutlined, MessageSquare, MoreOutlined, PushpinFilled, EllipsisOutlined, verifiedBadge } from 'components/Icons'
-import * as core from 'core'
-import Icon from '@ant-design/icons'
-import classnames from 'classnames'
-import { verbosity } from '@nodecorejs/utils'
-
-import settings from 'core/libs/settings'
-import { router } from 'core/libs'
-import LikeBtn from './components/like/index.js'
-import { connect } from 'umi'
-import { clipboard } from 'core/libs/browser'
-
-const { Meta } = antd.Card
-
-const defaultPayload = {
- id: null,
- post_time: null,
- postText: null,
- postFile: null,
- publisher: null,
- post_likes: null,
- is_post_pinned: null,
- is_liked: null,
- post_comments: null,
- get_post_comments: null,
- postPinned: false,
- postReported: false,
- postBoosted: false,
- ReportIgnore: false,
-}
-
-const moreMenuList = [
- {
- key: "save_post",
- icon: "Save",
- textEnable: "Save post",
- textDisable: "Unsave post"
- },
- {
- key: "report_post",
- icon: "AlertCircle",
- text: "Report"
- }
-]
-
-const contextMenuList = [
- {
- key: "inspect_element",
- title: "Copy URL",
- icon: ,
- params: {
- onClick: (e) => {
- clipboard.copyText(core.generatePostURI(e.id))
- }
- }
- },
- {
- key: "screenshot",
- title: "Save screenshot",
- icon: ,
- params: {
- itemProps: {
- style: { color: "#40a9ff" }
- },
- onClick: (e) => {
- core.createScreenshotFromElement(document.getElementById(e.id))
- }
- }
- }
-]
-
-@connect(({ app }) => ({ app }))
-export default class PostCard extends React.PureComponent {
- state = {
- visibleMoreMenu: false,
- payload: this.props.payload,
- }
-
- elementRef = React.createRef()
-
- handleDispatchInvoke(key, payload) {
- this.props.dispatch({
- type: "app/ipcInvoke",
- payload: { key: key, payload: payload }
- })
- }
-
- goElementById(id) {
- if (settings("post_autoposition")) {
- document.getElementById(id).scrollIntoView({
- behavior: "smooth",
- block: "center",
- inline: "center"
- })
- }
- }
-
- toogleMoreMenu() {
- this.setState({ visibleMoreMenu: !this.state.visibleMoreMenu })
- }
-
- renderReportedPost() {
- if (this.state.ReportIgnore) return null
- return (
-
-
-
It seems that this post has been reported
-
The content may be inappropriate or compromising
-
{
- this.setState({ ReportIgnore: true })
- }}
- >
- Ignore
-
-
- )
- }
-
- renderContent(payload) {
- return (
-
- {payload.postText ? (
-
-
-
- ) : null}
- {payload.postFile_full ? (
-
-
-
- ) : null}
-
- )
- }
-
- componentDidMount() {
- window.contextMenu.addEventListener(
- {
- priority: 100,
- onEventRender: contextMenuList,
- ref: this.elementRef.current,
- props: { id: this.state.payload.id }
- }
- )
- }
-
- handleLikeClick = (id, callback) => {
- if (typeof (this.props.handleActions)) {
- this.props.handleActions("like", id, (callbackResponse) => {
- let updated = this.state.payload
- if (callbackResponse.code == 200) {
-
- updated.is_liked = !this.state.payload.is_liked
- updated.post_likes = callbackResponse.response.count ?? 0
- this.setState({ payload: updated })
-
- if (typeof (callback) !== "undefined") {
- callback(callbackResponse.response.count)
- }
-
- } else {
- verbosity.log(`Api error response ${callbackResponse.code}`)
- }
- })
- } else {
- verbosity.log(`socket connection not available`)
- }
- }
-
- getMenuValue(id) {
- return true // fetch from local state
- }
-
- handleMenuClick(id) {
- return true // mapToFunction
- }
-
- renderMoreMenu() {
- return moreMenuList.map((e) => {
- return ( this.handleMenuClick(e.id)} key={e.id ?? ""}>
- {React.createElement(Icons[e.icon])}{e.textDisable && e.textEnable? (this.getMenuValue(e.id) ? e.textEnable : e.textDisable) : e.title?? e.text ?? "Who knows"}
- )
- })
- }
-
- render() {
- const {
- id,
- post_time,
- postText,
- postFile,
- publisher,
- post_likes,
- is_post_pinned,
- is_liked,
- post_comments,
- get_post_comments
- } = this.state.payload || defaultPayload
-
- const menuMore = (
-
- {this.renderMoreMenu()}
-
- )
-
- const actions = [
- { this.handleLikeClick(id, (response) => { callback(response) }) }} count={post_likes} liked={core.booleanFix(is_liked)} />,
- 0 ? true : false}>
-
- ,
- ]
-
- return (
-
-
{ this.goElementById(this.state.payload.id) }}
- actions={actions}
- hoverable
- >
- {this.state.postReported ? this.renderReportedPost() : null}
-
- }
- title={
-
-
router.goProfile(publisher.username)} className={styles.titleUser}>
- @{publisher.username}
- {core.booleanFix(publisher.verified) ? ( ) : null}
- {core.booleanFix(publisher.nsfw_flag) ? ( NSFW ) : null}
-
-
-
- {core.booleanFix(is_post_pinned) ? (
) : null}
-
-
- }
- description={{post_time} }
- bordered="false"
- />
- {this.renderContent(this.state.payload)}
-
-
-
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/PostCard/index.less b/packages/comty/src/components/PostCard/index.less
deleted file mode 100644
index d890bd11..00000000
--- a/packages/comty/src/components/PostCard/index.less
+++ /dev/null
@@ -1,234 +0,0 @@
-@import '~theme/index.less';
-
-.post_card_flaggedWarning {
- border-radius: @post_card_general_border-rd;
- width: 100%;
- text-align: center;
- position: absolute;
- z-index: 20;
- background: @post_card_flaggedWarning_backgroud;
- font-family: @__app_generalFont;
- padding: @post_card_flaggedWarning_padding;
-
- :global {
- .anticon {
- font-size: @post_card_flaggedWarning_iconSize;
- }
- }
-}
-
-.post_card_wrapper {
- user-select: none;
- box-shadow: @post_card_wrapper_shadow;
- border-radius: @post_card_general_border-rd;
- max-width: 510px;
- min-width: 265px;
- width: auto;
- margin: 23px auto 50px;
-
- :global {
- .ant-card-meta-detail>div:not(:last-child) {
- margin: 0
- }
-
- .ant-card {
- cursor: default;
-
- border-radius: @post_card_general_border-rd;
- border: 0;
- border-top: 1px solid #4646460c;
- }
-
- .ant-card-body {
- padding: 0;
- }
-
- .ant-card-actions {
- border-top: 0;
- background: @post_card_wrapper_actions_backgroud;
- height: 30px;
- position: relative;
- transition: opacity @__Global_Components_transitions_dur linear, position @__Global_Components_transitions_dur linear, transform @__Global_Components_transitions_dur linear;
- border-radius: 0 0 10px 10px;
- opacity: 0;
-
- &.showMode {
- opacity: 1;
- transform: translate(0, 15px);
- }
- }
-
- .ant-card-actions:hover {
- opacity: 1;
- transform: translate(0, 15px);
- transition: opacity @__Global_Components_transitions_dur linear, position @__Global_Components_transitions_dur linear, transform @__Global_Components_transitions_dur linear;
- }
-
- .ant-card-actions>li>.anticon {
- font-size: 16px;
- line-height: 22px;
- width: 40px;
- height: 40px;
- background: @post_card_wrapper_actions_icon_backgroud;
- border-radius: 23px;
- }
-
- .ant-card-actions>li {
- margin: -20px 0 0;
- border-right: 0;
-
- .ant-badge-count {
- width: 20px;
- text-align: left;
-
- span {
- font-size: 12px;
- }
-
- .ant-scroll-number-only>p.ant-scroll-number-only-unit {
- height: 20px;
- width: 20px;
- margin: 0;
- line-height: 20px;
- padding: 0 0 0 1px;
- }
- }
-
- span {
- font-size: 16px;
- line-height: 22px;
- width: 40px;
- height: 40px;
- background: @post_card_wrapper_actions_icon_backgroud;
- border-radius: 23px;
- margin: auto;
- }
-
- svg {
- height: 20px;
- width: 20px;
- height: 100%;
- vertical-align: middle;
- }
- #feather_icon{ margin-right: unset!important; }
- }
- }
-}
-
-.post_include {
- padding: 13px 0 5px;
- transition: all 150ms linear;
-
- &.blur {
- filter: blur(10px);
- }
-}
-
-.showMode {
- :global {
- ul {
- opacity: 1 !important;
- transform: translate(0, 15px);
- }
- }
-}
-
-.post_card_title {
- display: flex;
-
- h4 {
- cursor: pointer;
- }
-
-}
-
-.postAvatar {
- position: absolute;
- left: -8px;
- top: -8px;
- display: flex;
-}
-
-.titleUser {
- display: flex;
- font-family: @__app_generalFont;
- margin: 0 0 0 50px;
-}
-
-.textAgo {
- display: flex;
- font-size: 10px;
- margin: 0 0 0 53px;
-}
-
-.PostTags {
- float: right;
- width: 100%;
- z-index: 10;
-
- :global {
- .anticon {
- color: @post_card_wrapper_tags_color_default;
- float: right;
- margin: -0 6px 0 0;
- font-size: 17px;
- }
-
- }
-}
-
-.post_card_content {
- word-break: break-all;
- display: flex;
- border-radius: 3px;
- margin: 23px 24px;
-
- h3 {
- user-select: all;
- font-family: @__app_generalFont;
- color: @post_card_wrapper_post_content_color;
- font-weight: @post_card_wrapper_post_content_weight;
- font-size: @post_card_wrapper_post_content_fontSize;
- letter-spacing: @post_card_wrapper_post_content_letterSpacing;
- }
-}
-
-.post_card_file {
- display: flex;
- margin: 23px 0 5px;
- max-height: 600px;
- overflow: hidden;
-
- h3 {
- color: rgb(85, 85, 85);
- font-weight: 470;
- }
-}
-
-.likebtn {
- :global {
- svg {
- color: rgba(0, 0, 0, 0.45);
- }
-
- svg:hover {
- color: rgb(233, 35, 68);
- transition: all 0.2s linear;
- }
- }
-}
-
-.ellipsisIcon {
- color: rgba(0, 0, 0, 0.45);
- width: 100%;
- position: absolute;
- text-align: center;
- margin: auto;
- font-size: 30px;
- transition: opacity 150ms linear;
-}
-
-.ellipsisIcon:hover {
- opacity: 0;
- transition: opacity 150ms linear;
-}
diff --git a/packages/comty/src/components/PostCreator/index.js b/packages/comty/src/components/PostCreator/index.js
deleted file mode 100644
index 3807ed00..00000000
--- a/packages/comty/src/components/PostCreator/index.js
+++ /dev/null
@@ -1,304 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { imageToBase64 } from 'core'
-import * as Icons from 'components/Icons'
-import styles from './index.less'
-import { connect } from 'umi'
-import config from 'config'
-import { settings, newSetting } from 'core/libs/settings'
-
-const PrivacyList = [
- {
- id: 0,
- type: "any",
- icon: "Globe",
- decoratorText: "Share with everyone"
- },
- {
- id: 1,
- type: "only_followers",
- icon: "UserCheck",
- decoratorText: "Share with people I follow"
- },
- {
- id: 2,
- type: "only_follow",
- icon: "Users",
- decoratorText: "Share with people follow me"
- },
- {
- id: 3,
- type: "private",
- icon: "Shield",
- decoratorText: "Dont share, only me"
- },
- {
- id: 4,
- type: "anon",
- icon: "EyeOff",
- decoratorText: "Anonymous"
- }
-]
-
-@connect(({ app }) => ({ app }))
-class PostCreator extends React.PureComponent {
- state = {
- maxFileSize: config.stricts.api_maxpayload,
- maxTextLenght: config.stricts.post_maxlenght,
-
- renderValid: false,
- loading: false,
-
- textLenght: config.stricts.post_maxlenght,
- rawText: '',
- posting: false,
- postingResult: false,
- privacity: 0,
-
- uploader: false,
- uploaderFile: null,
- uploaderFileOrigin: null,
- }
-
- dropRef = React.createRef()
-
- ToogleUploader() {
- this.setState({ uploader: !this.state.uploader })
- }
-
- handleDeleteFile = () => {
- this.setState({ uploaderFile: null })
- }
-
- handleFileUpload = info => {
- if (info.file.status === 'uploading') {
- this.setState({ loading: true })
- }
- if (info.file.status === 'done') {
- this.setState({ uploaderFileOrigin: info.file.originFileObj, uploader: false })
-
- imageToBase64(info.file.originFileObj, fileURL => {
- this.setState({ uploaderFile: fileURL, loading: false })
- })
- }
- }
-
- beforeUpload = file => {
- const filter =
- file.type === 'image/jpeg' ||
- file.type === 'audio/mp3' ||
- file.type === 'audio/wav' ||
- file.type === 'audio/ogg' ||
- file.type === 'image/png' ||
- file.type === 'image/jpg' ||
- file.type === 'image/gif' ||
- file.type === 'video/mp4'
- if (!filter) {
- antd.message.error(`${file.type} This file is not valid!`)
- }
- const maxsize = file.size / 1024 / 1024 < stricts.api_maxpayload
- if (!maxsize) {
- antd.message.error(
- `Image must smaller than ${stricts.api_maxpayload} KB!`
- )
- }
- return filter && maxsize
- }
-
- handleChanges = ({ target: { value } }) => {
- this.setState({
- rawText: value,
- textLenght: this.state.maxTextLenght - value.length,
- })
- }
-
- handleKeysProgressBar() {
- return this.state.textLenght <= (this.state.maxTextLenght / 100) * 30? 'exception' : 'active'
- }
-
- handleDragIn = e => {
- e.preventDefault()
- e.stopPropagation()
-
- this.state.uploader? this.setState({ uploader: true }) : null
- }
-
- handleDragOut = e => {
- e.preventDefault()
- e.stopPropagation()
-
- this.state.uploader? null : this.setState({ uploader: false })
- }
-
- componentDidMount() {
- if (this.props.app.session_data) {
- this.setState({renderValid: true})
- }
-
- // const _this = this
- // $('body').bind('paste', function(je) {
- // var e = je.originalEvent
- // for (var i = 0; i < e.clipboardData.items.length; i++) {
- // var item = e.clipboardData.items[i]
- // if (item.type.indexOf('image') != -1) {
- // //item.
- // let a;
- // a = item.getAsFile()
- // _this.setState({ uploaderFileOrigin: a })
- // ReadFileAsB64(a, res => {
- // _this.setState({ uploaderFile: res })
- // })
- // } else {
- // // ignore not images
- // }
- // }
- // })
- // let div = this.dropRef.current
- // div.addEventListener('dragenter', this.handleDragIn)
- // div.addEventListener('dragleave', this.handleDragOut)
- }
-
- componentWillUnmount() {
- // let div = this.dropRef.current
- // div.removeEventListener('dragenter', this.handleDragIn)
- // div.removeEventListener('dragleave', this.handleDragOut)
- }
-
- canPost() {
- const isTypedSomething = this.state.textLenght < this.state.maxTextLenght
- const isUploadedFile = this.state.uploaderFile ? true : false
-
- return isUploadedFile || isTypedSomething
- }
-
- renderShareOptions = () => {
- return PrivacyList.map(e => {
- if (!e) return null
- return(
-
- {e.icon? React.createElement(Icons[e.icon]) : null} {e.decoratorText? e.decoratorText : "Bruh"}
-
- )
- })
- }
-
- render() {
- const userData = this.props.app.session_data
- const { textLenght, uploaderFile } = this.state
-
- const ShareOptionsMenu = () => {
- return(
- this.setState({ privacity: e.key })}>
- {this.renderShareOptions()}
-
- )
- }
-
- const PostCreator_Uploader = () => {
- return(
-
-
-
- Drop your file here o click for upload
-
-
- )
- }
-
- const PostCreator_InputText = () => {
- return(
- <>
-
-
-
-
-
-
- ) : this.state.posting ? (
-
- ) : (
-
- )
- }
- />
-
- >
- )
- }
-
-
- if(!this.state.renderValid) return null
- return (
-
-
-
- {this.state.uploader ?
:
}
-
-
- {uploaderFile ? this.renderPostPlayer(uploaderFile) : null}
-
-
-
- )
- }
-}
-export default PostCreator
\ No newline at end of file
diff --git a/packages/comty/src/components/PostCreator/index.less b/packages/comty/src/components/PostCreator/index.less
deleted file mode 100644
index 3bfffddb..00000000
--- a/packages/comty/src/components/PostCreator/index.less
+++ /dev/null
@@ -1,317 +0,0 @@
-@import '~theme/index.less';
-
-.cardWrapper {
- // box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
- border-radius: 7px;
- max-width: 510px;
- min-width: 265px;
- width: auto;
- margin: 7px auto 50px;
-
- :global {
- textarea {
- font-weight: 500;
- resize: none;
- outline: none !important;
- border: 0 !important;
- }
-
- textarea:focus {
- outline: none !important;
- border: 0 !important;
- }
-
- textarea:hover {
- outline: none !important;
- border: 0 !important;
- }
-
- .ant-card-meta-detail>div:not(:last-child) {
- margin: 0
- }
-
- .ant-card {
- border-radius: 7px;
- border: 0;
- border-top: 1px solid #4646460c;
- }
-
- .ant-card-body {
- padding: 5px 15px;
- }
-
- .ant-card-actions {
- border-top: 0;
- background: #EBEBEB;
- opacity: 0;
- height: 30px;
- position: relative;
- transition: opacity 150ms linear, position 150ms linear, transform 150ms linear;
- border-radius: 0 0 10px 10px;
- }
-
- .ant-card-actions:hover {
- opacity: 1;
- transform: translate(0, 15px);
- transition: opacity 150ms linear, position 150ms linear, transform 150ms linear;
- }
-
- .ant-card-actions>li {
- margin: -20px 0 0;
- border-right: 0;
-
- i {
-
- vertical-align: middle;
- height: 40px;
- width: 40px;
- background-color: #fff;
- border-radius: 24px;
- }
-
- svg {
- height: 20px;
- width: 20px;
- height: 100%;
- vertical-align: middle;
- }
- }
- }
-}
-
-.titleAvatar {
- width: 45px;
- height: 45px;
- display: flex;
-
- :global {
- img {
- width: 45px;
- height: 45px;
- border-radius: 12px;
- }
- }
-}
-
-.inputWrapper {
- display: flex;
- z-index: 10;
- position: relative;
- width: 100%;
- padding: 18px 7px 0;
- transition: height 150ms linear;
-
- :global {
- .ant-btn-primary {
- z-index: 10;
- position: relative;
- border-radius: 0 10px 10px 0;
- height: 100%;
- vertical-align: bottom;
- border: none;
- box-shadow: none;
- }
-
- .ant-input {
- z-index: 10;
- position: relative;
- border-color: transparent !important;
- box-shadow: none;
- border-radius: 3px 0 0;
- height: 100%;
- padding: 5px 10px;
- transition: height 150ms linear;
- width: 100%;
-
- }
-
- .ant-input:hover {
- border-color: #1890ff;
- }
-
- .ant-input-affix-wrapper {
- height: 100%;
- }
- }
-}
-
-.progressHandler {
- z-index: 10;
- position: relative;
- margin: 0 7px;
-
- :global {
- .ant-progress-bg {
- border-radius: 0 0 10px 10px;
- }
-
- .ant-progress-inner {
- border-radius: 0 0 14px 14px;
- width: calc(100% - 32px);
- vertical-align: top;
- }
- }
-}
-
-.postExtra {
- width: 100%;
- height: 100%;
- position: relative;
- margin: 0 0 40px;
- svg {
- vertical-align: -0.125em;
- }
- .shareWith {
- color: rgb(53, 53, 53);
- float: right;
- font-size: 11px;
- line-height: 30px;
- }
-
- :global {
- .MuiSvgIcon-root {
- width: 1em;
- height: 1em;
- display: inline-block;
- font-size: 18px;
- transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
- flex-shrink: 0;
- margin: 8px;
- line-height: 1px;
- user-select: none;
- }
-
- .ant-btn .anticon {
- transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
- margin: 8px;
- }
-
- .ant-btn {
- width: 35px;
- height: 35px;
- float: left;
- padding: 0;
- border-radius: 11px;
- margin: 0 10px;
- background-color: #eeeeee;
- border-color: transparent;
- }
-
- .ant-btn:hover {
- border-color: transparent;
- }
-
- }
-}
-
-.uploader {
- display: flex;
- position: relative;
- border-radius: 10px;
- z-index: 30;
- width: 100%;
- height: 100%;
-
- span {
- width: 100%;
- }
-
- :global {
- .ant-upload.ant-upload-drag {
- background: #fafafa;
- border: 1px dashed #d9d9d9;
- border-radius: 12px;
- transition: border-color 0.3s;
- }
-
- .anticon svg {
- display: inline-block;
- font-size: 30px;
- }
- }
-}
-
-.imagePreviewWrapper {
- position: relative;
- width: 100%;
- height: 100%;
- // top: -100px;
- margin: 0 0 15px;
- background-color: #eeeeee;
-
- .imagePreview {
- z-index: 5;
- position: relative;
- width: 50%;
- margin: auto;
- border-radius: 8px;
- transition: all 150ms linear;
-
- img {
- width: 100%;
- border: 0.5px rgba(56, 56, 56, 0.459) solid;
- }
-
- video {
- width: 100%;
- border: 0.5px rgba(56, 56, 56, 0.459) solid;
- }
-
- transition: all 150ms linear;
-
- }
-
- .imageOverlay {
- z-index: 10;
- position: relative;
- opacity: 0;
- transition: all 150ms linear;
- margin: auto;
- }
-}
-
-.imagePreviewWrapper:hover .imagePreview {
- opacity: 0.5;
- transition: all 150ms linear;
-}
-
-.imagePreviewWrapper:hover .imageOverlay {
- opacity: 1;
- transition: all 150ms linear;
-
-}
-
-.proccessUnset {
- opacity: 0;
- transition: opacity 250ms linear;
- animation: proccessUnset 250ms linear;
-}
-
-.proccessSet {
- transition: opacity 250ms linear;
- animation: proccessSet 250ms linear;
-}
-
-@keyframes proccessSet {
- 0% {
- opacity: 0;
- }
-
- 100% {
- opacity: 1;
- }
-}
-
-@keyframes proccessUnset {
- 0% {
- opacity: 1;
- }
-
- 100% {
- opacity: 0;
- }
-}
-
-.fontct {
- font-family: "Poppins", sans-serif;
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/PostFeed/index.js b/packages/comty/src/components/PostFeed/index.js
deleted file mode 100644
index 7c67702a..00000000
--- a/packages/comty/src/components/PostFeed/index.js
+++ /dev/null
@@ -1,143 +0,0 @@
-import React from 'react'
-import { List } from 'antd'
-import { connect } from 'umi'
-import settings from 'core/libs/settings'
-import { verbosity } from '@nodecorejs/utils'
-import { PostCard, PostCreator, Invalid } from 'components'
-import * as antd from 'antd'
-import styles from './index.less'
-
-@connect(({ app, socket }) => ({ app, socket }))
-export default class PostsFeed extends React.Component {
- state = {
- socket: null,
- feed: null,
- renderError: false
- }
-
- addPostToRender(payload) {
- let postSchema = {
- id: this.state.feed[0].id + 1,
- post_time: "who knows",
- postText: "empty",
- publisher: "me",
- post_likes: 2500
- }
-
- if (typeof(payload) !== "undefined") {
- postSchema = { ...postSchema, ...payload }
- }
-
- let updated = this.state.feed
- updated.push(postSchema)
- this.setState({ feed: updated })
- this.goPostById(postSchema.id)
- }
-
- goPostById(id) {
- document.getElementById(id).scrollIntoView({
- behavior: "smooth",
- block: "center",
- inline: "center"
- })
- }
-
- getUserIdByProps(id) {
- if(typeof(id) == "string") {
- return new Number(id)
- }
- return id
- }
-
- fetchFeed() {
- const { socket } = this.state
- if (socket) {
- const requestPayload = {
- from: this.props.from ?? "feed",
- post_id: this.props.fromID ?? 0,
- userToken: this.props.app.session_token,
- id: this.getUserIdByProps(this.props.fromID) ?? this.props.app.session_uuid
- }
-
- const requestCallback = (data) => {
- console.log(data)
- if (Array.isArray(data.response)) {
- this.setState({ feed: data.response })
- } else {
- verbosity.log(`error gathering posts >`, data)
- this.setState({ renderError: true })
- }
- }
-
- socket._emit("get", requestPayload, requestCallback)
- }
- }
-
- handlePostActions(action, post_id, callback) {
- const { socket } = this.state
- if (socket) {
- const requestPayload = {
- userToken: this.props.app.session_token,
- post_id,
- action
- }
-
- socket._emit("actions", requestPayload, (res) => callback(res))
- }
- }
-
- componentDidMount() {
- window.addPostToRender = (...context) => this.addPostToRender(...context)
-
- if (this.props.app.session_valid) {
- this.props.dispatch({
- type: "socket/use",
- persistent: true,
- scope: "posts",
- then: (data) => {
- this.setState({ socket: data })
- this.fetchFeed()
- }
- })
- }
-
- }
-
- componentWillUnmount() {
- if (this.state.socket) {
- this.state.socket.remove()
- }
- }
-
- render() {
- if (!this.props.app.session_valid) {
- return
- }
-
- if (!this.state.feed) {
- return (
-
-
-
- )
- }
-
- if (this.state.renderError) {
- return (
-
- )
- }
-
- return (
-
-
(
- this.handlePostActions(...context)} payload={item} />
- )}
- />
-
- )
- }
-}
diff --git a/packages/comty/src/components/PostFeed/index.less b/packages/comty/src/components/PostFeed/index.less
deleted file mode 100644
index 8f4566f7..00000000
--- a/packages/comty/src/components/PostFeed/index.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.exploreWrapper{
-
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Splash/index.js b/packages/comty/src/components/Splash/index.js
deleted file mode 100644
index 6f024ab4..00000000
--- a/packages/comty/src/components/Splash/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import React from "react"
-import "./index.less"
-
-export default class Splash extends React.Component {
- render() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/Splash/index.less b/packages/comty/src/components/Splash/index.less
deleted file mode 100644
index 500162f5..00000000
--- a/packages/comty/src/components/Splash/index.less
+++ /dev/null
@@ -1,179 +0,0 @@
-.splash-wrapper {
- background-color: #252525;
- position: absolute;
- z-index: 0;
-
- top: 0;
- right: 0;
- width: 100vw;
- height: 100vh;
- animation: background-fade 5.1s linear 0.5s;
- animation-fill-mode: forwards;
-}
-
-.glow {
- width: 100vw;
- height: 100vh;
- position: absolute;
- z-index: 1;
- top: 0;
- right: 0;
- opacity: 0;
-
- animation: glow-splash 4.1s ease-out 0.5s;
- animation-fill-mode: forwards;
-
- filter: blur(160px);
- backface-visibility: hidden;
- transform: translate3d(0, 0, 0);
- will-change: contents;
- background: conic-gradient(
- from 230.29deg at 51.63% 52.16%,
- #2400ff 0deg,
- #0087ff 67.5deg,
- #ff1d7a 198.75deg,
- #f5381b 251.25deg,
- #ff5335 301.88deg,
- #691eff 360deg
- );
-}
-
-.bouncy-logo {
- will-change: transition, opacity, z-index;
- position: absolute;
- z-index: 3;
-
- width: 100vw;
- height: 100vh;
-
- display: flex;
- flex-direction: column;
- align-content: center;
- align-items: center;
-
- justify-content: center;
-}
-
-.bouncy-logo .ball {
- animation: logo-bounce 0.5s alternate infinite forwards;
-}
-
-.bouncy-logo .ball svg {
- opacity: 1;
- width: 200px;
- height: 200px;
- margin: auto;
-
- stroke-width: 1.5;
- stroke-opacity: 1;
-
- stroke-dasharray: 1000;
- stroke-dashoffset: 1000;
-
- fill: transparent;
-
- animation: logo-reveal 5.1s ease-out 0.5s forwards, logo-stroke 2.1s ease-out 0s forwards,
- logo-transform 5.1s ease-out 0s forwards;
-}
-
-@keyframes glow-splash {
- 0% {
- opacity: 0;
- -webkit-animation-timing-function: cubic-bezier(0.74, 0.25, 0.76, 1);
- animation-timing-function: cubic-bezier(0.74, 0.25, 0.76, 1);
- }
-
- 15% {
- opacity: 1;
- -webkit-animation-timing-function: cubic-bezier(0.12, 0.01, 0.08, 0.99);
- animation-timing-function: cubic-bezier(0.12, 0.01, 0.08, 0.99);
- }
- 97% {
- z-index: 4;
- }
- 100% {
- z-index: 4;
- opacity: 0.28;
- }
-}
-
-@keyframes background-fade {
- 0% {
- -webkit-animation-timing-function: cubic-bezier(0.74, 0.25, 0.76, 1);
- animation-timing-function: cubic-bezier(0.74, 0.25, 0.76, 1);
- }
-
- 15% {
- -webkit-animation-timing-function: cubic-bezier(0.12, 0.01, 0.08, 0.99);
- animation-timing-function: cubic-bezier(0.12, 0.01, 0.08, 0.99);
- }
-
- 60% {
- background-color: #f0f2f5;
- }
-
- 100% {
- background-color: #f0f2f5;
- }
-}
-
-@keyframes logo-bounce {
- from {
- transform: translate(0, -10px);
- }
- to {
- transform: translate(0, 10px);
- }
-}
-
-@keyframes logo-transform {
- 0% {
- animation-timing-function: cubic-bezier(0, 0, 0.3rem, 1);
- transform: scale(5) rotate(65deg);
- filter: blur(10px);
- }
- 17% {
- filter: unset;
- }
- 18% {
- filter: drop-shadow(0 0 80px rgba(255, 255, 255, 1));
- }
- 19% {
- transform: rotate(5deg);
- }
- 100% {
- transform: scale(0.8) rotate(0deg);
- }
-}
-
-@keyframes logo-reveal {
- 0% {
- -webkit-animation-timing-function: cubic-bezier(0, 0, 0.3rem, 1);
- animation-timing-function: cubic-bezier(0, 0, 0.3rem, 1);
- }
- 7% {
- fill: transparent;
- }
- 10% {
- fill: rgba(225, 225, 225, 0.8);
- }
- 40% {
- fill: rgba(225, 225, 225, 0.8);
- }
- 100% {
- fill: rgba(51, 51, 51, 0.8);
- }
-}
-
-@keyframes logo-stroke {
- 0% {
- stroke-opacity: 0;
- }
- 10% {
- stroke-opacity: 1;
- }
- 100% {
- stroke-dashoffset: 0;
- stroke-opacity: 0;
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/StreamingOverlay/index.js b/packages/comty/src/components/StreamingOverlay/index.js
deleted file mode 100644
index 2d6df9fe..00000000
--- a/packages/comty/src/components/StreamingOverlay/index.js
+++ /dev/null
@@ -1,154 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as Icons from 'components/Icons'
-import { connect } from 'umi'
-import { objectToArrayMap } from '@nodecorejs/utils'
-import classnames from 'classnames'
-
-import StatisticConnection from './statistics/connection'
-
-const statisticsComponents = {
- connection:
-}
-
-const statisticsList = [
- {
- id: "connection",
- title: Network ,
- help: "Measure your connection with our servers",
- default: true
- },
- {
- id: "audience",
- title: Audience ,
- help: "Blah blah blah",
- default: false
- }
-]
-
-@connect(({ app, streaming }) => ({ app, streaming }))
-export default class StreamingPanel extends React.Component {
-
- state = {
- activeStatistics: [],
- hidden: {}
- }
-
- isHidden(key) {
- if (typeof (this.state.hidden[key]) == "undefined") {
- return true
- }
-
- return this.state.hidden[key]
- }
-
- handleHidden(key) {
- let updated = this.state.hidden
-
- if (typeof (this.state.hidden[key]) == "undefined") {
- updated[key] = false
- } else {
- updated[key] = !this.state.hidden[key]
- }
-
- this.setState({ hidden: updated })
- }
-
- renderLiveTag() {
- return
- {this.props.streaming?.onStreaming ? "On Live" : "Offline"}
-
- }
-
- renderOptions() {
- return (
-
-
-
Information
-
-
-
- {this.props.streaming?.isConnected ? "Connected" : "Disconnected"}
-
-
-
-
- )
- }
-
- renderStadistics() {
- const { isConnected, spectators } = this.props.streaming
-
- const onChangeCheckbox = (e) => {
- let updated = this.state.activeStatistics
- updated[e] = !updated[e]
-
- this.setState({ updated })
- }
-
- const getCheckboxes = () => {
- return statisticsList.map(e => {
- if (!e.id) {
- return null
- }
- return
- { onChangeCheckbox(e.id) }} defaultChecked={e.default} checked={this.state.activeStatistics[e.id]} key={e.id} >
- {e.title ?? e.id}
-
-
- })
- }
-
- const renderCharts = () => {
- return objectToArrayMap(this.state.activeStatistics).map((e) => {
- if (e.value) {
- return statisticsComponents[e.key]
- }
- return null
- })
- }
-
- return (
-
-
- {getCheckboxes()}
-
-
- {renderCharts()}
-
-
- )
- }
-
-
- render() {
- console.log(this.props.streaming)
- return (
-
-
Your streaming
-
-
-
-
@{this.props.app.session_data.username}
-
-
- {this.renderLiveTag()}
-
-
-
-
- {this.renderOptions()}
- {this.renderStadistics()}
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/StreamingOverlay/statistics/connection/index.js b/packages/comty/src/components/StreamingOverlay/statistics/connection/index.js
deleted file mode 100644
index 6dd83085..00000000
--- a/packages/comty/src/components/StreamingOverlay/statistics/connection/index.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import React from 'react'
-import Chart from 'chart.js'
-
-const elementID = "statistic_connection"
-
-export default class StatisticConnection extends React.Component {
- refComponent = null
-
- createRef (node) {
- this.refComponent = node
- }
-
- init() {
- new Chart(this.refComponent, {
- type: 'bar',
- data: {
- labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
- datasets: [{
- label: '# of Votes',
- data: [12, 19, 3, 5, 2, 3],
- backgroundColor: [
- 'rgba(255, 99, 132, 0.2)',
- 'rgba(54, 162, 235, 0.2)',
- 'rgba(255, 206, 86, 0.2)',
- 'rgba(75, 192, 192, 0.2)',
- 'rgba(153, 102, 255, 0.2)',
- 'rgba(255, 159, 64, 0.2)'
- ],
- borderColor: [
- 'rgba(255, 99, 132, 1)',
- 'rgba(54, 162, 235, 1)',
- 'rgba(255, 206, 86, 1)',
- 'rgba(75, 192, 192, 1)',
- 'rgba(153, 102, 255, 1)',
- 'rgba(255, 159, 64, 1)'
- ],
- borderWidth: 1
- }]
- },
- options: {
- scales: {
- yAxes: [{
- ticks: {
- beginAtZero: true
- }
- }]
- }
- }
- })
- }
-
- render() {
- console.log(this.refComponent)
- return this.createRef(e)} width="400" height="400">
-
-
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/components/index.js b/packages/comty/src/components/index.js
deleted file mode 100644
index f348e92c..00000000
--- a/packages/comty/src/components/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// @alias from 'components'
-
-// Helpers & Misc
-import Loader from './Loader'
-import About from './About'
-import * as Feather from 'feather-reactjs'
-import Invalid from './Invalid'
-import CardComponent from './CardComponent'
-
-// App Layout Components
-import Splash from './Splash'
-import * as AppLayout from './Layout/index.js'
-import ListedMenu from './ListedMenu/index.tsx'
-import FloatComponent from './FloatComponent'
-import ParamsList from './ParamsList'
-import PostsFeed from './PostFeed'
-
-// User Components
-
-// Post Components
-import MediaPlayer from './MediaPlayer'
-import PostCreator from './PostCreator'
-import PostCard from './PostCard'
-
-// Mix & Export all
-export {
- CardComponent,
- PostsFeed,
- Splash,
- ParamsList,
- FloatComponent,
- ListedMenu,
- AppLayout,
- PostCard,
- Invalid,
- Feather,
- About,
- MediaPlayer,
- Loader,
- PostCreator
-}
diff --git a/packages/comty/src/core/index.js b/packages/comty/src/core/index.js
deleted file mode 100644
index 961de2f5..00000000
--- a/packages/comty/src/core/index.js
+++ /dev/null
@@ -1,549 +0,0 @@
-import moment from 'moment';
-import { format } from 'timeago.js';
-import { cloneDeep } from 'lodash';
-import store from 'store';
-import config from 'config';
-import handle from 'core/libs/errorhandler'
-import request from 'request'
-import html2canvas from 'html2canvas'
-import platform from 'platform'
-import path from 'path'
-import fs from 'fs'
-import * as utils from '@nodecorejs/utils'
-
-const { pathToRegexp } = require('path-to-regexp');
-
-export const languages = config.i18n ? config.i18n.languages.map(item => item.key) : [];
-export const defaultLanguage = config.i18n ? config.i18n.defaultLanguage : '';
-
-import * as libs from './libs'
-
-export const package_json = require('../../package.json');
-export const GUID = config.app.guid;
-
-export const clientInfo = {
- buildStable: getBuild()["stable"],
- packageName: package_json.name,
- packageStage: package_json.stage,
- siteName: config.app.siteName,
- version: package_json.version,
- logo: config.app.FullLogoPath,
- logo_dark: config.app.DarkFullLogoPath,
- os: platform.os,
- layout: platform.layout
-}
-
-export function getCircularReplacer() {
- const seen = new WeakSet()
- return (key, value) => {
- if (typeof value === "object" && value !== null) {
- if (seen.has(value)) {
- return { __cycle_flag: true }
- }
- seen.add(value)
- }
- return value
- }
-}
-
-export function __proto__filterSchematizedArray(data) {
- let tmp = []
- return new Promise(resolve => {
- data.forEach(async (element) => {
- if (typeof (element.require) !== 'undefined') {
- const validRequire = await window.requireQuery(element.require)
- validRequire ? tmp.push(element) : null
- } else {
- tmp.push(element)
- }
- })
- resolve(tmp)
- })
-}
-
-export function decycle(obj, stack = []) {
- if (!obj || typeof obj !== 'object')
- return obj;
-
- if (stack.includes(obj)) {
- return { __cycle_flag: true }
- }
-
- let s = stack.concat([obj]);
-
- return Array.isArray(obj)
- ? obj.map(x => decycle(x, s))
- : Object.fromEntries(
- Object.entries(obj)
- .map(([k, v]) => [k, decycle(v, s)]));
-}
-
-export function getBuild() {
- let build = {
- stable: false
- }
- try {
- if (!window.__build) {
- return false
- }
- const buildPath = path.resolve(__dirname, "./dist")
- const data = JSON.parse(fs.readFileSync(`${buildPath}/build.json`))
- if (typeof (data) !== "undefined" && Array.isArray(data)) {
- utils.__legacy__objectToArrayMap(data).forEach((e) => {
- build[e.key] = e.value
- })
- }
- } catch (error) {
- // tf this is not a build sorry
- }
- return build
-}
-
-export function queryIndexer(array, callback, params) {
- if (!array) return false
-
- if (Array.isArray(array)) {
- let opt = {
- regex: /:id/gi
- }
-
- if (params) {
- opt = { ...opt, ...params }
- }
-
- array.forEach((e) => {
- if (e.match != null && e.to != null) {
- const pathMatch = pathMatchRegexp(e.match, window.location.pathname)
- if (pathMatch != null) {
- return callback(e.to.replace(opt.regex, pathMatch[1]))
- }
- }
- })
- }
-}
-
-export function createScreenshotFromElement(element) {
- if (!element) return false
- html2canvas(element, {
- useCORS: true,
- proxy: "localhost:8000",
- scale: 4,
- backgroundColor: "transparent"
- }).then(canvas => {
- downloadEncodedURI({ data: canvas.toDataURL() })
- })
-}
-
-export function generatePostURI(id) {
- if (window.location.origin && id) {
- return `${window.location.origin}/post/${id}`
- }
- return null
-}
-
-export function writeToClipboard(text) {
- navigator.clipboard.writeText(text)
- .then(() => {
- libs.ui.notify.info('Copy to clipboard')
- }, () => {
- /* failure */
- })
-}
-
-// [Experimental], not in use
-export function getglobal(params, callback) {
- if (!params || !params.server) return false
- let tmpResponse = []
-
- let req = {
- global: "__global",
- url: params.server
- }
-
- params.global ? req.global = params.global : null
-
- let urlString = `${req.url}/${req.global}.json`
- console.log(urlString)
-
- request(urlString, (error, response, body) => {
- tmpResponse = body
- callback(tmpResponse)
- })
-}
-
-export function isOs(os) {
- if (process) {
- return process.platform === os ? true : false
- } else {
- return false
- }
-}
-
-export function abbreviateCount(value) {
- let updated = value
- if (value >= 1000) {
- const suffix = ["", "k", "m"]
- let numberToSuffix = Math.floor(("" + value).length / 3)
- let divider = ""
-
- for (let offset = 2; offset >= 1; offset--) {
- divider = parseFloat((numberToSuffix != 0 ? (value / Math.pow(1000, numberToSuffix)) : value).toPrecision(offset))
- let firstDot = (divider + "").replace(/[^a-zA-Z 0-9]+/g, '')
- if (firstDot.length <= 2) {
- break
- }
- }
- if (divider % 1 != 0) {
- divider = divider.toFixed(1)
- }
- updated = divider + suffix[numberToSuffix]
- }
- return updated
-}
-
-export function imageToBase64(img, callback) {
- const reader = new FileReader()
- reader.addEventListener('load', () => callback(reader.result))
- reader.readAsDataURL(img)
-}
-
-export function urlToBase64(url, callback) {
- let xhr = new XMLHttpRequest();
- xhr.onload = function () {
- let reader = new FileReader();
- reader.onloadend = function () {
- callback(reader.result);
- }
- reader.readAsDataURL(xhr.response);
- };
- xhr.open('GET', url);
- xhr.setRequestHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Origin');
- xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
- xhr.responseType = 'blob';
- xhr.send();
-}
-
-export function b64toBlob(b64Data, contentType = '', sliceSize = 512) {
- const byteCharacters = atob(b64Data);
- const byteArrays = [];
-
- for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
- const slice = byteCharacters.slice(offset, offset + sliceSize);
-
- const byteNumbers = new Array(slice.length);
- for (let i = 0; i < slice.length; i++) {
- byteNumbers[i] = slice.charCodeAt(i);
- }
-
- const byteArray = new Uint8Array(byteNumbers);
- byteArrays.push(byteArray);
- }
-
- const blob = new Blob(byteArrays, { type: contentType });
- return blob;
-}
-
-/**
- * Generate a download with encoded uri
- *
- * @param {object} payload - Generation Data
- */
-export function downloadDecodedURI(payload) {
- // TODO: Support encoded
- if (!payload) return false
- let { data, type, charset, filename } = payload
- if (!data || !type) return false
- try {
- if (!filename) {
- filename = `${"download"}_${time.now()}.${type.split("/")[1]}` // TODO: Add package name to title generation
- }
- let tmp = document.createElement('a')
- tmp.href = `data:${type};charset=${charset},${encodeURIComponent(data)}`
- tmp.download = filename
- tmp.click()
- } catch (error) {
- handle({ msg: error, code: 120 })
- }
-}
-
-export function GetPropertyValue(object, dataToRetrieve) {
- dataToRetrieve.split('.').forEach(function (token) {
- if (object) object = object[token];
- })
- return object;
-}
-
-/**
- * Return the last object from array
- *
- * @param array {array}
- * @return object
- */
-export function objectLast(array, n) {
- if (array == null) return void 0;
- if (n == null) return array[array.length - 1];
- return array.slice(Math.max(array.length - n, 0));
-}
-
-/**
- * Object to array scheme RSA-YCORE-ARRAYPROTO.2
- *
- * @param object {object}
- * @return array
- */
-export function arrayToObject(array) {
- if (!array) return false
- let tmp = []
-
- array.forEach((e) => {
- tmp[e.key] = e.value
- })
-
- return tmp
-}
-
-/**
- * Remove an element by id from an object array
- *
- * @param object {object}
- * @param id {string}
- * @return array
- */
-export function objectRemoveId(object, id) {
- let arr = objectToArrayMap(object)
- return arr.filter((e) => {
- return e.id != id;
- });
-}
-/**
- * Remove an element by key from an object array
- *
- * @param object {object}
- * @param key {string}
- * @return array
- */
-export function objectRemoveKey(object, key) {
- let arr = objectToArrayMap(object)
- return arr.filter((e) => {
- return e.key != key;
- });
-}
-
-
-/**
- * Global fix for convert '1, 0' to string boolean 'true, false'
- *
- * @param e {int} Numeric boolean reference
- * @return bool
- */
-export function booleanFix(e) {
- if (e == 1) return true;
- return false;
-}
-
-/**
- * Request FullScreen mode
- *
- */
-export function requestFullscreen() {
- var elem = document.documentElement;
- if (elem.requestFullscreen) {
- elem.requestFullscreen();
- } else if (elem.mozRequestFullScreen) {
- /* Firefox */
- elem.mozRequestFullScreen();
- } else if (elem.webkitRequestFullscreen) {
- /* Chrome, Safari and Opera */
- elem.webkitRequestFullscreen();
- } else if (elem.msRequestFullscreen) {
- /* IE/Edge */
- elem.msRequestFullscreen();
- }
-}
-
-/**
- * Handle time basic functions
- *
- */
-export const time = {
- ago: a => {
- const format = moment(a).format('DDMMYYYY');
- const b = new Date(format).toLocaleString();
- return time.relativeToNow(b);
- },
- stmToAgo: a => {
- const b = a * 1000;
- return format(b);
- },
- relativeToNow: (a, b) => {
- return moment(a, b || 'DDMMYYYY').fromNow();
- },
- now: () => {
- return new Date().toLocaleString();
- }
-};
-
-export function pathMatchRegexp(regexp, pathname) {
- return pathToRegexp(regexp).exec(pathname)
-}
-
-/**
- * Query objects that specify keys and values in an array where all values are objects.
- * @param {array} array An array where all values are objects, like [{key:1},{key:2}].
- * @param {string} key The key of the object that needs to be queried.
- * @param {string} value The value of the object that needs to be queried.
- * @return {object|undefined} Return frist object when query success.
- */
-export function queryArray(array, key, value) {
- if (!Array.isArray(array)) {
- return;
- }
- return array.find(_ => _[key] === value);
-}
-
-/**
- * Convert an array to a tree-structured array.
- * @param {array} array The Array need to Converted.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} children The alias of children of the object in the array.
- * @return {array} Return a tree-structured array.
- */
-export function arrayToTree(
- array,
- id = 'id',
- parentId = 'pid',
- children = 'children',
-) {
- const result = [];
- const hash = {};
- const data = cloneDeep(array);
-
- data.forEach((item, index) => {
- hash[data[index][id]] = data[index];
- });
-
- data.forEach(item => {
- const hashParent = hash[item[parentId]];
- if (hashParent) {
- !hashParent[children] && (hashParent[children] = []);
- hashParent[children].push(item);
- } else {
- result.push(item);
- }
- });
- return result;
-}
-
-/**
- * In an array object, traverse all parent IDs based on the value of an object.
- * @param {array} array The Array need to Converted.
- * @param {string} current Specify the value of the object that needs to be queried.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @return {array} Return a key array.
- */
-export function queryPathKeys(array, current, parentId, id = 'id') {
- const result = [current];
- const hashMap = new Map();
- array.forEach(item => hashMap.set(item[id], item));
-
- const getPath = current => {
- const currentParentId = hashMap.get(current)[parentId];
- if (currentParentId) {
- result.push(currentParentId);
- getPath(currentParentId);
- }
- };
-
- getPath(current);
- return result;
-}
-
-/**
- * Query which layout should be used for the current path based on the configuration.
- * @param {layouts} layouts Layout configuration.
- * @param {pathname} pathname Path name to be queried.
- * @return {string} Return frist object when query success.
- */
-export function queryLayout(layouts, pathname) {
- let result = 'public';
-
- const isMatch = regepx => {
- return regepx instanceof RegExp
- ? regepx.test(pathname)
- : pathToRegexp(regepx).exec(pathname);
- };
-
- for (const item of layouts) {
- let include = false;
- let exclude = false;
- if (item.include) {
- for (const regepx of item.include) {
- if (isMatch(regepx)) {
- include = true;
- break;
- }
- }
- }
-
- if (include && item.exclude) {
- for (const regepx of item.exclude) {
- if (isMatch(regepx)) {
- exclude = true;
- break;
- }
- }
- }
-
- if (include && !exclude) {
- result = item.name;
- break;
- }
- }
-
- return result;
-}
-
-export function getLocale() {
- return store.get('locale') || defaultLanguage;
-}
-
-export function setLocale(language) {
- if (getLocale() !== language) {
- store.set('locale', language);
- window.location.reload();
- }
-}
-
-export function get_value(source, key) {
- if (!key || !source) return false
- try {
- const find = source.find(item => {
- return item.id === key
- })
- return find.value
-
- }
- catch (error) {
- return false
- }
-}
-
-export function iatToString(iat) {
- return new Date(iat * 1000).toLocaleString()
-}
-
-export function generateGUID(lenght = 6) {
- let text = ""
- const possibleChars = "abcdefghijklmnopqrstuvwxyz0123456789"
-
- for (let i = 0; i < 6; i++)
- text += possibleChars.charAt(Math.floor(Math.random() * possibleChars.length))
-
- return text
-}
-
-export function generateRandomId(length = 15) {
- return Math.random().toString(36).substring(0, length);
-}
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/browser/index.ts b/packages/comty/src/core/libs/browser/index.ts
deleted file mode 100644
index a729841a..00000000
--- a/packages/comty/src/core/libs/browser/index.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-const zeroStyles = (element: HTMLElement, ...properties: string[]): void => {
- for (const property of properties) {
- element.style.setProperty(property, '0')
- }
-}
-
-const removeElement = (element: HTMLElement): void => {
- element.parentNode!.removeChild(element)
-}
-
-const createTextArea = (): HTMLTextAreaElement => {
- const textArea: HTMLTextAreaElement = document.createElement('textarea')
- textArea.setAttribute('cols', '0')
- textArea.setAttribute('rows', '0')
- zeroStyles(textArea,
- 'border-width',
- 'bottom',
- 'margin-left', 'margin-top',
- 'outline-width',
- 'padding-bottom', 'padding-left', 'padding-right', 'padding-top',
- 'right',
- )
- textArea.style.setProperty('box-sizing', 'border-box')
- textArea.style.setProperty('height', '1px')
- textArea.style.setProperty('margin-bottom', '-1px')
- textArea.style.setProperty('margin-right', '-1px')
- textArea.style.setProperty('max-height', '1px')
- textArea.style.setProperty('max-width', '1px')
- textArea.style.setProperty('min-height', '1px')
- textArea.style.setProperty('min-width', '1px')
- textArea.style.setProperty('outline-color', 'transparent')
- textArea.style.setProperty('position', 'absolute')
- textArea.style.setProperty('width', '1px')
- document.body.appendChild(textArea)
- return textArea;
-}
-
-export const clipboard = {
- copyText: (data:String) => {
- if (typeof (data) !== "string") {
- return false
- }
- const textArea: HTMLTextAreaElement = createTextArea()
- textArea.value = data
- textArea.select()
- const success: boolean = document.execCommand('copy')
- removeElement(textArea)
- if (!success) {
- return false
- }
- },
- readText: (data:String) => {
- if (typeof (data) !== "string") {
- return false
- }
- const textArea: HTMLTextAreaElement = createTextArea()
- textArea.focus()
- const success: boolean = document.execCommand('paste')
-
- if (!success) {
- removeElement(textArea)
- return false
- }
- const value: string = textArea.value
- removeElement(textArea)
- return value
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/dynamicsdcp/index.js b/packages/comty/src/core/libs/dynamicsdcp/index.js
deleted file mode 100644
index 40e94f5c..00000000
--- a/packages/comty/src/core/libs/dynamicsdcp/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import localforage from 'localforage'
-import { package_json } from 'core'
-
-// Dynamic secure data container processor
-export class DynamicSDCP {
- constructor(props){
- if(props){
- this.props = props
- }
- this.instanceConfig = {
- name: props.name? props.name : `dynamicSDCP_${Math.random().toFixed()}`,
- driver : localforage.WEBSQL, // Force WebSQL; same as using setDriver()
- version : 1.0,
- size : 4980736, // Size of database, in bytes. WebSQL-only for now.
- storeName : package_json.UUID, // Should be alphanumeric, with underscores.
- }
-
- localforage.config(this.instanceConfig)
- this.instance = localforage.createInstance(this.instanceConfig)
- }
- useInstance(){
- console.log('Using ', this.instance)
- }
-}
-
diff --git a/packages/comty/src/core/libs/errorhandler/index.js b/packages/comty/src/core/libs/errorhandler/index.js
deleted file mode 100644
index 771d6ccf..00000000
--- a/packages/comty/src/core/libs/errorhandler/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import { ui } from 'core/libs'
-import { verbosity } from '@nodecorejs/utils'
-import errStrings from 'config/handlers/errToStrings.js'
-import errNumbers from 'config/handlers/numToError.js'
-import errFlags from 'config/handlers/errToFlag.js'
-import flagToBehavior from 'config/handlers/flagToBehavior.js'
-
-const flagToString = {
- CRITICAL: "An critical exception",
- DISRUPT: "An wild error appears!",
- IGNORE: "Warning"
-}
-
-export function notifyErrorHandler(params) {
- if (!params) {
- return false
- }
- ui.notify.open({
- message: flagToString[params.flag] ?? "Unexpected Error",
- description:
-
-
{params.msg ?? "No exception message"}
-
{errStrings[params.out] ?? "Unhandled Exception"} | { params.out?? "UNDEFINED_KEY" }
-
,
- })
-}
-
-export function ErrorHandler(payload, callback){
- if (!payload) {
- return false
- }
-
- const flags = ["CRITICAL", "DISRUPT", "IGNORE"]
- let flag = null
- let out = null
-
- const { msg, outFlag, code } = payload
-
- if (!out && code != null) { // This give priority to resolve with `code` than `outFlag`
- out = errNumbers[code]
- }
-
- if (!out && outFlag != null ) {
- out = outFlag
- }
-
- verbosity.log(msg?? "unhandled message", {type: "error"})
-
- if (out && typeof(errStrings[out]) !== "undefined") {
- flag = errFlags[out]
- }else{
- console.log("(Aborted) no out key | or invalid flag => ", out)
- return false
- }
-
- switch (flag) {
- case flags[0]:
- notifyErrorHandler({ msg, out, flag })
- flagToBehavior[out]({ msg, out, flag, code })
- return false
- case flags[1]:
- flagToBehavior[out]({ msg, out, flag, code })
- return false
- case flags[2]:
- flagToBehavior[out]({ msg, out, flag, code })
- return false
- default:
- console.log('Invalid FLAG')
- break;
- }
-}
-
-
-export default ErrorHandler
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/index.js b/packages/comty/src/core/libs/index.js
deleted file mode 100644
index b355577f..00000000
--- a/packages/comty/src/core/libs/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import * as v3_model from './v3_model'
-import * as ui from './ui'
-export * from './settings'
-export * from './router'
-export * from './dynamicsdcp'
-export * from './browser'
-
-export { v3_model, ui }
diff --git a/packages/comty/src/core/libs/keybinds/index.js b/packages/comty/src/core/libs/keybinds/index.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/packages/comty/src/core/libs/router/index.js b/packages/comty/src/core/libs/router/index.js
deleted file mode 100644
index 94085941..00000000
--- a/packages/comty/src/core/libs/router/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import { history } from 'umi';
-
-export const router = {
- push: e => {
- history.push({
- pathname: `${e}`,
- });
- },
- go: e => {
- router.push(e);
- },
- goProfile: e => {
- router.push(`/@/${e}`);
- },
-};
-
-export const goTo = {
- top: id => {
- const element = document.getElementById(id);
- element.scrollTop = element.scrollHeight + element.clientHeight;
- },
- bottom: id => {
- const element = document.getElementById(id);
- element.scrollTop = element.scrollHeight - element.clientHeight;
- },
- element: element => {
- try {
- document.getElementById(element).scrollIntoView();
- } catch (error) {
- console.debug(error);
- return false;
- }
- },
-};
-
-
-export default router
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/settings/index.js b/packages/comty/src/core/libs/settings/index.js
deleted file mode 100644
index 26695448..00000000
--- a/packages/comty/src/core/libs/settings/index.js
+++ /dev/null
@@ -1,79 +0,0 @@
-import config from 'config'
-
-export function parseLocalStorage() {
- const fromStorage = localStorage.getItem(config.app.storage.settings)
- try {
- return JSON.parse(fromStorage)
- } catch (error) {
- console.log(error)
- }
-}
-
-export function newSetting(key, value) {
- let setting = {}
- setting.id = key
- setting.value = value
- return [setting]
-}
-
-export const settings = {
- get: (key) => {
- let tmp = [];
-
- const keys = Object.keys(config.defaults)
- const values = Object.values(config.defaults)
- const length = keys.length
-
- for (let i = 0; i < length; i++) {
- if (parseLocalStorage()) {
- const storagedValue = parseLocalStorage().find(item => {
- return item.id === keys[i]
- })
- if (typeof (storagedValue) == 'undefined') {
- tmp[keys[i]] = values[i]
- } else {
- tmp[keys[i]] = storagedValue.value
- }
- }
- else {
- tmp[keys[i]] = values[i]
- }
- }
-
- if (key) {
- return tmp[key]
- }
-
- return tmp
- },
- set: (key, value) => {
- let tmp
- let data = parseLocalStorage()
-
- if (data) {
- const finded = data.find(element => {
- return element.id === key
- })
- if (!finded) {
- const parsed = data.concat(newSetting(key, value))
- tmp = parsed
- } else {
- const updated = data.map(element => {
- return element.id === key ? Object.assign(element, { value: value }) : element
- })
- tmp = updated
- }
- } else {
- tmp = newSetting(key, value)
- }
- data = tmp
- try {
- localStorage.setItem(config.app.storage.settings, JSON.stringify(data))
- } catch (error) {
- console.log(error)
- return false
- }
- }
-}
-
-export default (e) => settings.get(e)
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/socket/index.ts b/packages/comty/src/core/libs/socket/index.ts
deleted file mode 100644
index 1951ce9b..00000000
--- a/packages/comty/src/core/libs/socket/index.ts
+++ /dev/null
@@ -1,258 +0,0 @@
-import io from 'socket.io-client'
-import { verbosity } from '@nodecorejs/utils'
-import settings from 'core/libs/settings'
-import { notify } from 'core/libs/ui'
-
-const stateCodes = {
- 0: "closed",
- 1: "connected",
- 2: "connecting",
- 3: "disconnected"
-}
-interface ioConnTypes {
- payload: any;
- listenerKey: string;
- toState: number;
- event: any;
- attempNumber: number;
- startTime: number;
-}
-export default class SocketConnection {
- ioConn: any
- state: {
- connAttemps: number;
- registeredNamespaces: any;
- connectionState: any;
- listeners: any;
- latency: any;
- locked: boolean;
- }
- props: any
- opts: any
- dispatcher: any;
- then: any;
- namespaceConnector: any;
-
- constructor(props: any) {
- if (!props) {
- throw new Error("Mmm some props are not defined")
- }
- this.then = props.then
- this.props = props.payload
- this.dispatcher = props.connector
-
- this.state = {
- locked: this.props.locked ?? false,
- latency: 0,
- listeners: {},
- connectionState: "init",
- connAttemps: Number(0),
- registeredNamespaces: [],
- }
-
- this.opts = {
- isHeader: false,
- namespaceOrigin: "/",
- hostname: "localhost:5000",
- port: "5000",
- reconnection: true,
- reconnectionAttempts: Number(2),
- reconnectionDelay: 1000,
- reconnectionDelayMax: 5000,
- randomizationFactor: 0.5,
- timeout: 20000,
- pingInterval: 5000,
- autoConnect: true,
- query: {},
- upgrade: true,
- forceJSONP: false,
- jsonp: true,
- forceBase64: false,
- enablesXDR: false,
- timestampRequests: true,
- timestampParam: 't',
- policyPort: 843,
- transports: ['polling', 'websocket'],
- transportOptions: {},
- rememberUpgrade: false,
- onlyBinaryUpgrades: false,
- requestTimeout: 0,
- protocols: [],
- agent: false,
- pfx: null,
- key: null,
- passphrase: null,
- cert: null,
- ca: null,
- ciphers: [],
- rejectUnauthorized: true,
- perMessageDeflate: true,
- forceNode: false,
- localAddress: null,
- extraHeaders: {}
- }
-
- if (typeof (this.props) !== "undefined") {
- this.opts = { ...this.opts, ...this.props }
- }
-
- this.createConnection().then(() => {
- this.ioConn.updateConnectionState(2)
- this.setConnectionListeners()
- })
-
- this.namespaceConnector = (namespace: string) => {
- if (!this.state.locked) {
- this.createConnection(namespace).then(() => {
- this.ioConn.updateConnectionState(2)
- this.setConnectionListeners()
- })
- }else{
- verbosity.log(`[${this.opts.namespaceOrigin}] node is locked, cannot switch the namespace`)
- }
- }
- }
-
- createConnection(namespace: void) {
- const getNode = () => {
- const defaultNode = `${this.opts.hostname}${this.opts.namespaceOrigin}`
- if (typeof (namespace) !== "undefined") {
- return `${this.opts.hostname}:${this.opts.port}${namespace}`
- }
- return defaultNode
- }
- return new Promise((resolve) => {
- this.ioConn = io(getNode(), this.opts)
-
- this.ioConn.updateState = (payload: ioConnTypes) => {
- this.state = { ...this.state, ...payload }
- const sendBackPayload = { ...this.state, ioConn: this.ioConn, namespaceConnector: this.namespaceConnector }
- this.dispatcher({ type: "socket/updateStateFromSocket", node: this.opts.namespaceOrigin, payload: sendBackPayload })
- }
-
- this.ioConn.updateListener = (listenerKey: ioConnTypes, toState: ioConnTypes) => {
- if (!listenerKey)
- return false
-
- const getInvert = () => {
- // @ts-ignore
- if (this.state.listeners[listenerKey] != null) {
- // @ts-ignore
- return !this.state.listeners[listenerKey]
- } else {
- return true // this set activated listener by default if not exist any entries
- }
- }
- let updatedObj: any = []
- // @ts-ignore
- updatedObj[listenerKey] = toState ?? getInvert()
-
- let updatedState = this.state.listeners
- updatedState = { ...updatedState, ...updatedObj }
-
- this.ioConn.updateState({ listeners: updatedState })
- }
-
- this.ioConn.updateConnectionState = (code: number) => {
- if (code != null && typeof (code) == "number") {
- // @ts-ignore
- if (this.state.connectionState !== stateCodes[code]) { // avoiding update innecesary
- // @ts-ignore
- this.ioConn.updateState({ connectionState: stateCodes[code] })
- }
- }
- }
-
- this.ioConn._emit = (...context: any) => {
- const listenerKey = context[0]
- if (typeof (this.state.listeners[listenerKey]) == "undefined") {
- this.ioConn.updateListener(listenerKey, true)
- }
- if (this.state.listeners[listenerKey] != null && !this.state.listeners[listenerKey]) {
- verbosity.log(`Listener [${listenerKey}] is broked!`) // TODO: Add verbosity color
- return false
- }
-
- return this.ioConn.emit(...context)
- }
-
- this.ioConn.lock = () => {
- this.ioConn.updateState({ locked: true })
- }
-
- this.ioConn.unlock = () => {
- this.ioConn.updateState({ locked: false })
- }
-
- this.ioConn._close = () => {
- this.ioConn.disconnect()
- this.ioConn.updateConnectionState(0)
- }
-
- this.ioConn.remove = () => {
- this.dispatcher({ type: "socket/destroyNode", node: this.opts.namespaceOrigin })
- }
-
- resolve(true)
- })
- }
-
- setConnectionListeners() {
- this.ioConn.on('connect', () => {
- this.ioConn.updateConnectionState(1)
- verbosity.log(`🌐 Connected to socket (${this.opts.namespaceOrigin})`)
- this.then(this.ioConn) // sending init data
- })
-
- this.ioConn.on("connect_error", (event: ioConnTypes) => {
- if (this.state.connectionState !== "connecting") {
- this.ioConn.updateConnectionState(2)
- }
- if (this.state.connAttemps >= this.opts.reconnectionAttempts) {
- verbosity.log('Maximun nº of attemps reached => max', this.opts.reconnectionAttempts + 1)
- this.ioConn.updateConnectionState(0)
- return false
- }
- verbosity.log(`Strike [${this.state.connAttemps + 1}] / ${this.opts.reconnectionAttempts + 1} !`, event)
- this.state.connAttemps = this.state.connAttemps + 1
- })
-
- this.ioConn.on('reconnect', (attemptNumber: ioConnTypes) => {
- verbosity.log(`✅ Connection reconected with (${attemptNumber}) tries > [socket_event]`)
- this.ioConn.updateConnectionState(1)
- })
-
- this.ioConn.on('disconnect', (event: ioConnTypes) => {
- if (this.opts.isHeader) {
- notify.warn("You are offline")
- }
- verbosity.log(`🔌 Disconnect from socket (${this.opts.namespaceOrigin}) > [socket_event] >`, event)
- this.ioConn.updateConnectionState(3)
- })
-
- this.ioConn.on('connect_timeout', () => {
- verbosity.log(`🕘 Socket timeout (${this.opts.namespaceOrigin}) > [socket_event]`)
- this.ioConn.updateConnectionState(3)
- })
-
- this.ioConn.on('error', (event: ioConnTypes) => {
- verbosity.log(`❌ Socket throw error (${this.opts.namespaceOrigin}) > [socket_event] >`, event)
- })
-
- this.ioConn.on('updateState', (event: ioConnTypes) => {
- this.ioConn.updateState(event)
- })
-
- if (typeof (this.ioConn.io.opts.pingInterval) !== "undefined") {
- if (typeof (this.ioConn.io.opts.pingInterval) == "number") {
- setInterval(() => {
- this.ioConn.emit('latency', Date.now(), (startTime: ioConnTypes) => {
- // @ts-ignore
- const latency = Date.now() - startTime
- this.ioConn.updateState({ latency })
- })
- }, this.ioConn.io.opts.pingInterval)
- }
- }
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/style/index.js b/packages/comty/src/core/libs/style/index.js
deleted file mode 100644
index 87c1c5d6..00000000
--- a/packages/comty/src/core/libs/style/index.js
+++ /dev/null
@@ -1,248 +0,0 @@
-import store from 'store';
-import config from 'config';
-import { verbosity } from '@nodecorejs/utils'
-import ErrorHandler from 'core/libs/errorhandler'
-
-const { appTheme_desiredContrast, storage_theme } = config.app
-
-export const updateRootStyles = (styles) => {
- const rootContainer = document.getElementById(runtime.mountElementId ?? "root")
- if (rootContainer) {
- if (typeof (styles) !== "undefined" && Array.isArray(styles)) {
- try {
- objectToArrayMap(styles).forEach((e) => {
- rootContainer.style[e.key] = e.value
- })
- } catch (error) {
- verbosity.log(error)
- return false
- }
- }
- return false
- }
-}
-
-export const appendStyles = (style) => {
-
-}
-
-export const theme = {
- get: (key) => {
- const raw = store.get(storage_theme)
- if (!raw) return false
- let container = []
- try {
- raw.forEach((e) => { container[e.key] = e.value })
- } catch (error) {
- return ErrorHandler({ msg: error, code: 120 })
- }
- return container
- },
- set: (data) => {
- if (!data || data.length > 2) return false
- try {
- let mix = []
- const obj = Object.entries(data)
- obj.forEach((e) => {
- mix.push({ key: e[0], value: e[1] })
- })
- return store.set(storage_theme, mix)
- } catch (error) {
- console.log(error)
- return false
- }
- },
- raw: () => {
- return store.get(storage_theme)
- }
-}
-
-export function get_style_rule_value(selector, style) {
- const selector_lowercase = selector.toLowerCase();
- const selector_parsed = selector_lowercase.substr(0, 1) === '.' ? selector_lowercase.substr(1) : '.' + selector_lowercase;
-
- for (let i = 0; i < document.styleSheets.length; i++) {
- let styleSheet = document.styleSheets[i];
- let rules = styleSheet.cssRules ? styleSheet.cssRules : styleSheet.rules;
-
- for (var j = 0; j < rules.length; j++) {
- if (rules[j].selectorText) {
- var check = rules[j].selectorText.toLowerCase();
- switch (check) {
- case selector_lowercase:
- case selector_parsed: return rules[j].style[style];
- }
- }
- }
- }
-}
-
-export function getOptimalOpacityFromIMG(payload, callback) {
- const { textColor, overlayColor, img } = payload;
-
- verbosity.log(payload)
- let canvas = document.createElement('canvas');
- let image = new Image();
-
- image.src = img
- image.setAttribute('crossOrigin', '');
- image.onload = () => {
- const imagePixelColors = getImagePixelColorsUsingCanvas(canvas, image);
- if (imagePixelColors) {
- const worstContrastColorInImage = getWorstContrastColorInImage(textColor, imagePixelColors);
- const optimalOpacity = findOptimalOverlayOpacity(textColor, overlayColor, worstContrastColorInImage, appTheme_desiredContrast);
- return callback(optimalOpacity)
- } else {
- return false
- }
- }
-}
-
-export function getImagePixelColorsUsingCanvas(canvas, image) {
- let imagePixelColors = null;
- const ctx = canvas.getContext('2d');
-
- canvas.height = getCanvasHeightToMatchImageProportions(canvas, image);
-
- const sourceImageCoordinates = [0, 0, image.width, image.height];
- const destinationCanvasCoordinates = [0, 0, canvas.width, canvas.height];
-
- ctx.drawImage(
- image,
- ...sourceImageCoordinates,
- ...destinationCanvasCoordinates
- );
-
- // Remember getImageData only works for same-origin or cross-origin-enabled images.
- // See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more info.
- try {
- imagePixelColors = ctx.getImageData(...destinationCanvasCoordinates);
- } catch (error) {
- return ErrorHandler({ msg: error, code: 120 })
- }
-
- if (imagePixelColors) {
- return imagePixelColors
- }
-}
-
-export function getCanvasHeightToMatchImageProportions(canvas, image) {
- return (image.height / image.width) * canvas.width;
-}
-
-export function getWorstContrastColorInImage(textColor, imagePixelColors) {
- let worstContrastColorInImage;
- let worstContrast = Infinity;
-
- for (let i = 0; i < imagePixelColors.data.length; i += 4) {
- let pixelColor = {
- r: imagePixelColors.data[i],
- g: imagePixelColors.data[i + 1],
- b: imagePixelColors.data[i + 2],
- };
-
- let contrast = getContrast(textColor, pixelColor);
- if (contrast < worstContrast) {
- worstContrast = contrast;
- worstContrastColorInImage = pixelColor;
- }
- }
- return worstContrastColorInImage;
-}
-
-export function getContrast(color1, color2) {
- const color1_luminance = getLuminance(color1);
- const color2_luminance = getLuminance(color2);
-
- const lighterColorLuminance = Math.max(color1_luminance, color2_luminance);
- const darkerColorLuminance = Math.min(color1_luminance, color2_luminance);
-
- const contrast = (lighterColorLuminance + 0.05) / (darkerColorLuminance + 0.05);
- return contrast;
-}
-
-export function getLuminance({ r, g, b }) {
- return (0.2126 * getLinearRGB(r) + 0.7152 * getLinearRGB(g) + 0.0722 * getLinearRGB(b));
-}
-
-export function getLinearRGB(primaryColor_8bit) {
- // First convert from 8-bit rbg (0-255) to standard RGB (0-1)
- const primaryColor_sRGB = convert_8bit_RGB_to_standard_RGB(primaryColor_8bit);
-
- // Then convert from sRGB to linear RGB so we can use it to calculate luminance
- const primaryColor_RGB_linear = convert_standard_RGB_to_linear_RGB(primaryColor_sRGB);
-
- return primaryColor_RGB_linear;
-}
-
-export function convert_8bit_RGB_to_standard_RGB(primaryColor_8bit) {
- return primaryColor_8bit / 255;
-}
-
-export function convert_standard_RGB_to_linear_RGB(primaryColor_sRGB) {
- const primaryColor_linear = primaryColor_sRGB < 0.03928 ?
- primaryColor_sRGB / 12.92 :
- Math.pow((primaryColor_sRGB + 0.055) / 1.055, 2.4);
- return primaryColor_linear;
-}
-
-export function getTextContrastWithImagePlusOverlay({ textColor, overlayColor, imagePixelColor, overlayOpacity }) {
- const colorOfImagePixelPlusOverlay = mixColors(imagePixelColor, overlayColor, overlayOpacity);
- const contrast = getContrast(textColor, colorOfImagePixelPlusOverlay);
- return contrast;
-}
-
-export function mixColors(baseColor, overlayColor, overlayOpacity) {
- const mixedColor = {
- r: baseColor.r + (overlayColor.r - baseColor.r) * overlayOpacity,
- g: baseColor.g + (overlayColor.g - baseColor.g) * overlayOpacity,
- b: baseColor.b + (overlayColor.b - baseColor.b) * overlayOpacity,
- }
- return mixedColor;
-}
-
-export function findOptimalOverlayOpacity(textColor, overlayColor, worstContrastColorInImage, appTheme_desiredContrast) {
- const opacityGuessRange = {
- lowerBound: 0,
- midpoint: 0.5,
- upperBound: 1,
- };
-
- let numberOfGuesses = 0;
- const maxGuesses = 8;
- const opacityLimit = 0.99;
-
- while (numberOfGuesses < maxGuesses) {
- numberOfGuesses++;
- const currentGuess = opacityGuessRange.midpoint;
-
- const contrastOfGuess = getTextContrastWithImagePlusOverlay({
- textColor,
- overlayColor,
- imagePixelColor: worstContrastColorInImage,
- overlayOpacity: currentGuess,
- });
-
- const isGuessTooLow = contrastOfGuess < appTheme_desiredContrast;
- const isGuessTooHigh = contrastOfGuess > appTheme_desiredContrast;
-
- if (isGuessTooLow) {
- opacityGuessRange.lowerBound = currentGuess;
- }
- else if (isGuessTooHigh) {
- opacityGuessRange.upperBound = currentGuess;
- }
-
- const newMidpoint = ((opacityGuessRange.upperBound - opacityGuessRange.lowerBound) / 2) + opacityGuessRange.lowerBound;
- opacityGuessRange.midpoint = newMidpoint;
- }
-
- const optimalOpacity = opacityGuessRange.midpoint;
-
- if (optimalOpacity > opacityLimit) {
- return opacityLimit;
- }
-
- return optimalOpacity;
-}
-
diff --git a/packages/comty/src/core/libs/ui/export_data/index.tsx b/packages/comty/src/core/libs/ui/export_data/index.tsx
deleted file mode 100644
index 72374ed8..00000000
--- a/packages/comty/src/core/libs/ui/export_data/index.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import * as React from 'react'
-import * as antd from 'antd'
-import { Code, Download, HardDrive } from 'components/Icons'
-import { downloadDecodedURI } from 'core'
-
-export interface exportData_props {
- data: string;
- type: string;
-}
-
-const exportCodeRender = (data) => {
- if(data.length > 500){
- return
-
-
Hey, this file is too much large!
- So it couldn't be displayed.
-
- }
- return
- {data}
-
-}
-
-const exportData_render = (props: exportData_props) => {
- antd.Modal.confirm({
- title:
Your export
{`${props.type.split("/")[1]}`} ,
- icon: null,
- onOk: () => downloadDecodedURI({data: props.data, type: props.type}),
- okText: <> Download as File> ,
- cancelText: "Done",
- content: exportCodeRender(props.data),
- });
-}
-
-exportData_render.defaultProps = {
- data: '',
- type: 'text/txt',
-}
-
-export default exportData_render
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/ui/index.js b/packages/comty/src/core/libs/ui/index.js
deleted file mode 100644
index dbdba64d..00000000
--- a/packages/comty/src/core/libs/ui/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export * from './notify'
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/ui/modals/modals.js b/packages/comty/src/core/libs/ui/modals/modals.js
deleted file mode 100644
index 40ff20fe..00000000
--- a/packages/comty/src/core/libs/ui/modals/modals.js
+++ /dev/null
@@ -1,126 +0,0 @@
-import React from 'react'
-import * as core from 'core'
-import * as antd from 'antd'
-import * as Icons from 'components/Icons'
-import styles from './modals.less';
-import classnames from 'classnames'
-
-const isMobile = localStorage.getItem('mobile_src')
-
-class __Model_postreport extends React.PureComponent {
- state = {
- step: 1
- }
- end(){
- if(this.props.id){
- const payload = { post_id: this.props.id }
- core.comty_post.__report((err, res) => {
- if (err) {
- return false
- }
- core.notify.info('This post has been reported successfully, our team will review it and inform you about problem resolution ...')
- core.RenderFeed.RefreshFeed()
- core.RenderFeed.goToElement(this.props.id)
- }, payload)
- }
- setTimeout(() => {
- core.SwapMode.close()
- }, 500)
-
- }
- next(){
- let a = this.state.step
-
- if(a<3)a++
- this.setState({step: a })
- }
- status(i){
- const a = this.state.step
- if (a==i) return 'process'
- if (a>i) return 'finish'
- if (a
- Report an post
- This tool is intended for the community in a public way to help identify problematic or abusive content and for legitimate purposes.
- To ensure the proper use of this tool, before proceeding, you must understand the following:
- I understand and agree that my complaint may be sent to the party that posted the content in question.
- I understand that the abuse of this tool may have consequences for my account
- {this.state.term_1 && this.state.term_2? this.next()} >Next : null}
-
- )
- case 2:
- return(
-
-
-
For this report or complaint to be fair, make sure that the reason is for the following reasons:
-
-
- Harmful content or hate speech
-
- Violent or repulsive content
-
- Misleading advertising or spam
-
- Illegal activities
-
- Sexual content
-
- Or any other activity that violates the terms and conditions of use
-
I am sure and understand that the reason for this report is included in the above list.
-
{this.state.term_3?
this.next()} >Next : null}
-
-
- )
- case 3:
- return (
-
-
-
Given the above circumstances, to send this report or report please confirm that you understand and are following that you want to carry out this action
-
I am sure of what I do and I want to send this complaint or report
-
{this.state.term_confirm?
this.end()} >Send report : null}
-
-
- )
- default:
- return null
- }
- }
- validate = {
- term_1: (e) =>{this.setState({ term_1: e.target.checked })},
- term_2: (e) =>{this.setState({ term_2: e.target.checked })},
- term_3: (e) =>{this.setState({ term_3: e.target.checked })},
- confirm: (e) =>{this.setState({ term_confirm: e.target.checked })}
- }
-
- render(){
- return(
-
-
-
- } />
- } />
- } />
-
-
- {this.renderStep()}
-
- )
- }
-}
-
-
-export const app_modals = {
- report_post: (post_id) => {
- antd.Modal.confirm({
- title: 'Report an post',
- icon: ,
- content: 'It seems that you want to report this post, first of all it is necessary that you take into account that this tool is only intended for serious cases and we need you to comply with some questions to be able to report this post and to guarantee the quality of service ...',
- onOk() {
- return core.SwapMode.openFragment(<__Model_postreport id={post_id} />)
- },
- onCancel() {
- return false
- },
- });
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/ui/modals/modals.less b/packages/comty/src/core/libs/ui/modals/modals.less
deleted file mode 100644
index 6235c2cf..00000000
--- a/packages/comty/src/core/libs/ui/modals/modals.less
+++ /dev/null
@@ -1,9 +0,0 @@
-.post_report_main{
- padding: 0 0 0 115px;
- &.mobile{
- padding: 0 0 60px;
- }
-}
-.post_report_body{
- color: #2d2d2d!important;
-}
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/ui/notify/index.js b/packages/comty/src/core/libs/ui/notify/index.js
deleted file mode 100644
index de6dab3e..00000000
--- a/packages/comty/src/core/libs/ui/notify/index.js
+++ /dev/null
@@ -1,92 +0,0 @@
-import { notification, message } from 'antd'
-import { Triangle, FieldTimeOutlined, LoadingOutlined } from 'components/Icons'
-
-export const notify = {
- fatal: (...res) => {
- notification.error({
- message: 'Fatal Error',
- icon: ,
- description: res,
- placement: 'bottomLeft'
- })
- },
- expire: (...res) => {
- notification.error({
- message: 'Hey ',
- icon: ,
- description: res,
- placement: 'bottomLeft',
- })
- },
- info: (...res) => {
- notification.info({
- message: 'Well',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- exception: (...res) => {
- notification.error({
- message: 'WoW!',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- warn: (...res) => {
- notification.warn({
- message: 'Hey!',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- success: (...res) => {
- notification.success({
- message: 'Well',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- error: (...res) => {
- notification.error({
- message: 'Wopss',
- description: (
-
-
An wild error appear! :
-
-
-
- {res.toString()}
-
-
- ),
- placement: 'bottomLeft',
- })
- },
- proccess: (...res) => {
- notification.open({
- icon: ,
- message: 'Please wait',
- description: {res}
,
- placement: 'bottomLeft',
- })
- },
- open: (props) => {
- notification.open({
- placement: props.placement? props.placement : 'bottomLeft',
- duration: props.duration? props.placement : 15,
- icon: props.icon? props.icon : ,
- message: props.message? props.message : '',
- description: props.description? props.description : ''
- })
- },
-
- }
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/v3_model/index.js b/packages/comty/src/core/libs/v3_model/index.js
deleted file mode 100644
index a5ffab5f..00000000
--- a/packages/comty/src/core/libs/v3_model/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import v3_request from 'api/lib/v3_request'
-import endpointList from 'config/endpoints'
-import config from 'config'
-
-const { endpoint_v3prefix } = config.app;
-
-export async function api_request(payload, callback) {
- if (!payload) return false;
- const { endpoint, body, serverKey, userToken } = payload;
-
- let petition = {
- prefix: endpoint_v3prefix,
- endpointList,
- endpoint
- }
-
- body ? (petition.body = body) : null;
- serverKey ? (petition.server_key = serverKey) : null;
- userToken ? (petition.access_token = userToken) : null;
-
- v3_request(petition, (...res) => {
- return callback(...res);
- })
-}
-
diff --git a/packages/comty/src/core/libs/verbosity/index.js b/packages/comty/src/core/libs/verbosity/index.js
deleted file mode 100644
index ad475616..00000000
--- a/packages/comty/src/core/libs/verbosity/index.js
+++ /dev/null
@@ -1,89 +0,0 @@
-import settings from 'core/libs/settings'
-import { objectToArrayMap } from 'core'
-import stackTrace from 'stack-trace'
-import path from 'path'
-import colors from 'colors'
-const verbosity_enabled = settings('verbosity')
-
-export function verbosity(data, params, stackTraceParams){
- if(!verbosity_enabled) return false
- let initData;
- initData = data
-
- let opt = {
- color: "green",
- type: "log"
- }
- let optStackTrace = {
- activeColor: true,
- line: false,
- method: true,
- file: false,
- time: true
- }
-
- const frame = stackTrace.get()[1]
-
- const stackTraceData = {
- time: new Date().toLocaleTimeString(),
- line: `(:${frame.getLineNumber()})`,
- file: path.basename(frame.getFileName()),
- method: `[${frame.getFunctionName()}]`
- }
-
- if (typeof(params) !== "undefined" || params != null) {
- objectToArrayMap(params).forEach((e) => {
- if(typeof(e.value) !== "undefined"){
- opt[e.key] = e.value
- }
- })
- }
-
- if (typeof(stackTraceParams) !== "undefined" || stackTraceParams != null) {
- objectToArrayMap(stackTraceParams).forEach((e) => {
- if(typeof(e.value) !== "undefined"){
- optStackTrace[e.key] = e.value
- }
- })
- }
-
- if (opt.color) {
- colors.enable()
- }
-
- const stackTraceKeys = Object.keys(optStackTrace)
- const stackTraceLength = stackTraceKeys.length
- let modifyCount = 0
- let tmp
-
- for (let i = 0; i < stackTraceLength; i++) {
- const key = stackTraceKeys[i]
- const value = optStackTrace[stackTraceKeys[i]]
- const divisor = (i == (stackTraceLength - 1)? " | " : " > ")
- // console.log(`[${key}] is the ${i == stackTraceLength? "last opt" : `n[${i}]` }`)
- // console.log(i, "/", stackTraceLength -1)
- if(typeof(stackTraceData[key]) !== "undefined" && value){
- if (Array.isArray(initData)) {
- if (modifyCount == 0) {
- tmp = (`${stackTraceData[key]}`[opt.color] + divisor)
- }else{
- tmp = (`${stackTraceData[key]}`[opt.color] + divisor + tmp)
- }
- if (i == (stackTraceLength - 1)){
- data.unshift(tmp)
- }
- }else{
- data = (`${stackTraceData[key]}`[opt.color] + divisor + data)
- }
- modifyCount++
- }
- }
-
- if (Array.isArray(data)) {
- return console[opt.type](...data)
- }
-
- return console[opt.type](data)
-}
-
-export default verbosity
\ No newline at end of file
diff --git a/packages/comty/src/core/libs/withConnector/index.js b/packages/comty/src/core/libs/withConnector/index.js
deleted file mode 100644
index e7b9fbda..00000000
--- a/packages/comty/src/core/libs/withConnector/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import { connect } from 'umi'
-
-export default (children) => {
- return connect(({ app }) => ({ app }))(children)
-}
\ No newline at end of file
diff --git a/packages/comty/src/core/models/helpers/index.js b/packages/comty/src/core/models/helpers/index.js
deleted file mode 100644
index 9b3012f8..00000000
--- a/packages/comty/src/core/models/helpers/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import StreamingOverlay from 'components/StreamingOverlay'
-
-export function goLive(payload) {
- window.overlaySwap.open({
- id: 'search',
- mode: 'half',
- size: "50%",
- element:
- })
-}
\ No newline at end of file
diff --git a/packages/comty/src/core/models/index.js b/packages/comty/src/core/models/index.js
deleted file mode 100644
index 68175e92..00000000
--- a/packages/comty/src/core/models/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import * as session from './session'
-
-export { session }
\ No newline at end of file
diff --git a/packages/comty/src/core/models/overlay/index.js b/packages/comty/src/core/models/overlay/index.js
deleted file mode 100644
index 5dec90bf..00000000
--- a/packages/comty/src/core/models/overlay/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export function newSearch(payload) {
- window.overlaySwap.open({
- id: 'search',
- mode: 'half',
- element: NAH
- })
-}
diff --git a/packages/comty/src/core/models/session/index.js b/packages/comty/src/core/models/session/index.js
deleted file mode 100644
index 6d8f17de..00000000
--- a/packages/comty/src/core/models/session/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import endpoints from 'config/endpoints';
-import { v3_model } from 'core/libs';
-
-function auth(payload, callback) {
- if (!payload) return false;
- const { username, password, server_key } = payload;
-
- if (username && password) {
- const frame = { username: atob(username), password: atob(password) }
- v3_model.api_request(
- {
- body: frame,
- endpoint: endpoints.auth,
- serverKey: server_key
- },
- (err, res) => {
- return callback(err, res);
- },
- );
- } else {
- const res = { status: 100, message: 'Invalid Credentials!' };
- return callback(res, false);
- }
-}
-
-function deauth(payload, callback) {
- if (!payload) return false;
- const frame = { id: payload.id, type: "delete"}
- v3_model.api_request(
- {
- body: frame,
- endpoint: endpoints.sessions,
- serverKey: payload.server_key,
- userToken: payload.userToken
- },
- (err, res) => {
- return callback(err, res);
- },
- );
-}
-
-const backup = {
- get: () => {},
- set: () => {},
-};
-
-
-
-export { auth, deauth, backup };
diff --git a/packages/comty/src/layouts/BaseLayout.js b/packages/comty/src/layouts/BaseLayout.js
deleted file mode 100644
index ac1cde65..00000000
--- a/packages/comty/src/layouts/BaseLayout.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import React from 'react'
-import { Helmet } from 'react-helmet'
-import { Loader } from 'components'
-import { withRouter, connect } from 'umi'
-import { queryLayout } from 'core'
-import WindowNavbar from 'components/Layout/WindowNavbar'
-import config from 'config'
-import { Splash } from 'components'
-
-import PrimaryLayout from './PrimaryLayout'
-import PublicLayout from './PublicLayout'
-
-import 'theme/index.less'
-
-const LayoutMap = {
- primary: PrimaryLayout,
- public: PublicLayout,
-}
-
-@withRouter
-@connect(({ app, loading }) => ({ app, loading }))
-export default class BaseLayout extends React.Component {
- previousPath = ''
- renderLoading = true
-
- render() {
- const { loading, children, location, app } = this.props
- const Container = LayoutMap[queryLayout(config.layouts, location.pathname)]
- const currentPath = location.pathname + location.search
-
- if (currentPath !== this.previousPath) {
- this.renderLoading = true
- }
-
- if (!loading.global) {
- this.previousPath = currentPath
- this.renderLoading = false
- }
-
- if (app.splash.render) {
- return
- }
-
- return (
-
-
- {config.app.siteName}
-
- {this.props.app.electron? : null}
- {Loader(this.renderLoading)}
- {children}
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/layouts/PrimaryLayout.js b/packages/comty/src/layouts/PrimaryLayout.js
deleted file mode 100644
index 5e8458e8..00000000
--- a/packages/comty/src/layouts/PrimaryLayout.js
+++ /dev/null
@@ -1,144 +0,0 @@
-import React from 'react'
-import { withRouter, connect } from 'umi'
-import { AppLayout } from 'components'
-import { enquireScreen, unenquireScreen } from 'enquire-js'
-import store from 'store'
-import classnames from 'classnames'
-
-import config from 'config'
-import { theme } from 'core/libs/style'
-import * as antd from 'antd'
-import contextMenuList from 'schemas/contextMenu'
-
-const { Content } = antd.Layout
-const { Sider, Overlay, RightSider } = AppLayout
-const isActive = (key) => { return key ? key.active : false }
-
-@withRouter
-@connect(({ app, contextMenu, loading }) => ({ app, contextMenu, loading }))
-export default class PrimaryLayout extends React.Component {
- constructor(props) {
- super(props)
- this.state = {
- collapsed: config.defaults.sidebarCollaped ? true : false,
- isMobile: false
- }
-
- // include API extensions
- window.dispatcher = this.props.dispatch
- window.openLink = (e) => {
- if (this.props.app.embedded) {
- this.props.app.electron.shell.openExternal(e)
- } else {
- window.open(e)
- }
- }
-
- window.requireQuery = (require) => {
- return new Promise(resolve => {
- this.props.dispatch({
- type: 'app/requireQuery',
- payload: require,
- callback: (e) => {
- resolve(e)
- }
- })
- })
- }
-
- window.inspectElement = (e) => this.props.dispatch({
- type: "app/ipcInvoke",
- payload: {
- key: "inspectElement",
- payload: { x: e.xPos, y: e.yPos }
- }
- })
-
- window.toogleSidebarCollapse = () => {
- this.props.dispatch({
- type: "app/updateState",
- payload: { sidebar_collapsed: !this.props.app.sidebar_collapsed }
- })
- }
- }
-
- componentDidMount() {
- if (this.props.app.embedded) {
- window.contextMenu.addEventListener(
- {
- priority: 1,
- onEventRender: contextMenuList,
- ref: document.getElementById("root")
- }
- )
- }
-
- this.enquireHandler = enquireScreen(mobile => {
- const { isMobile } = this.state
- if (isMobile !== mobile) {
- window.isMobile = mobile
- this.setState({ isMobile: mobile })
- }
- })
-
- }
-
- componentWillUnmount() {
- unenquireScreen(this.enquireHandler)
- if (this.props.contextMenu) {
- window.contextMenu.destroy()
- }
- }
-
- onCollapseChange = () => {
- const fromStore = store.get('collapsed')
- this.setState({ collapsed: !this.state.collapsed })
- store.set('collapsed', !fromStore)
- }
-
- render() {
- const { location, dispatch, children, app } = this.props
- const { collapsed, isMobile } = this.state
- const { onCollapseChange } = this
- const currentTheme = theme.get()
-
- const SiderProps = { isMobile, collapsed, onCollapseChange }
- const OverlayProps = { isMobile }
-
- window.darkMode = isActive(currentTheme["darkmode"]) ? true : false
- document.getElementsByTagName("body")[0].setAttribute("class", window.darkMode ? "dark" : "light")
-
- return (
-
- {isActive(currentTheme['backgroundImage'])
- ?
: null}
-
-
-
-
- {children ? children : null}
-
-
-
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/layouts/PublicLayout.js b/packages/comty/src/layouts/PublicLayout.js
deleted file mode 100644
index cd95fc88..00000000
--- a/packages/comty/src/layouts/PublicLayout.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import React from 'react'
-import store from 'store'
-
-import { enquireScreen, unenquireScreen } from 'enquire-js'
-
-import * as antd from 'antd'
-
-import styles from './PublicLayout.less'
-
-const { Content } = antd.Layout
-
-export default class PublicLayout extends React.Component {
- constructor(props) {
- super(props)
- window.PrimaryComponent = this
- this.state = {
- isMobile: false,
- }
- }
-
- componentDidMount() {
- this.enquireHandler = enquireScreen(mobile => {
- const { isMobile } = this.state
- if (isMobile !== mobile) {
- this.setState({
- isMobile: mobile,
- })
- store.set('mobile_src', mobile)
- }
- })
- }
-
- componentWillUnmount() {
- unenquireScreen(this.enquireHandler)
- }
-
-
- render() {
- const { children } = this.props
- return (
-
-
-
-
- {children}
-
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/layouts/PublicLayout.less b/packages/comty/src/layouts/PublicLayout.less
deleted file mode 100644
index e69de29b..00000000
diff --git a/packages/comty/src/layouts/index.js b/packages/comty/src/layouts/index.js
deleted file mode 100644
index bb54bbb2..00000000
--- a/packages/comty/src/layouts/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import React from 'react'
-import BaseLayout from './BaseLayout'
-import { withRouter } from 'umi'
-
-@withRouter
-class Layout extends React.Component {
- componentDidMount(){
- const appBody = document.getElementsByTagName("body")[0]
- appBody.setAttribute("id", "appWrapper")
- }
- render() {
- const { children } = this.props
- return (
- {children}
- )
- }
-}
-
-export default Layout
diff --git a/packages/comty/src/models/app.js b/packages/comty/src/models/app.js
deleted file mode 100644
index 22eba0b1..00000000
--- a/packages/comty/src/models/app.js
+++ /dev/null
@@ -1,433 +0,0 @@
-import store from 'store'
-import config from 'config'
-import keys from 'config/keys'
-import { session } from 'core/models'
-import { verbosity } from '@nodecorejs/utils'
-import settings from 'core/libs/settings'
-import { queryIndexer } from 'core'
-import Cryptr from 'cryptr'
-
-import jwt from 'jsonwebtoken'
-import cookie from 'cookie_js'
-
-export default {
- namespace: 'app',
- state: {
- fadeclock: 500,
- splash: {
- render: true,
- fadeout: false
- },
- queryDone: false,
- style_prefix: config.app.defaultStyleClass ?? "app_",
- env_proccess: process.env,
- server_key: keys.server_key,
-
- service_valid: false,
- session_valid: false,
-
- session_authframe: null,
- session_token: null,
- session_data: null,
- session_uuid: null,
-
- sidebar_collapsed: store.get("sidebar_collapse") ?? false,
- overlayActive: false,
- overlayElement: null,
- embedded: false,
- dispatcher: null,
-
- electron: null,
- app_settings: store.get(config.app.storage.settings) || [],
- app_theme: store.get(config.app.storage.theme) || [],
- notifications: [],
- },
- subscriptions: {
- setup({ dispatch }) {
- dispatch({ type: 'updateState', payload: { dispatcher: dispatch } })
- dispatch({ type: 'earlyInit' })
- dispatch({ type: 'updateFrames' })
- dispatch({ type: 'validateSession' })
- dispatch({ type: 'initHeaderSocket' })
- dispatch({ type: 'query' })
- },
- setupHistory({ dispatch, history }) {
- history.listen(location => {
- dispatch({
- type: 'updateState',
- payload: {
- locationPathname: location.pathname,
- locationQuery: location.query,
- },
- })
- })
- },
- setupRequestCancel({ history }) {
- history.listen(() => {
- const { cancelRequest = new Map() } = window
- cancelRequest.forEach((value, key) => {
- if (value.pathname !== window.location.pathname) {
- cancelRequest.delete(key);
- }
- })
- })
- },
- },
- effects: {
- *earlyInit({ dispatcher }, { call, put, select }) {
- const state = yield select(state => state.app)
-
- window.classToStyle = (key) => {
- if (typeof (key) !== "string") {
- try {
- const toString = JSON.stringify(key)
- if (toString) {
- return toString
- } else {
- return null
- }
- } catch (error) {
- return null
- }
- }
- if (typeof (state.style_prefix) !== "undefined") {
- return `${state.style_prefix}${key}`
- }
- return key
- }
-
- try {
- const electron = window.require("electron")
- state.dispatcher({ type: 'updateState', payload: { electron, embedded: true } })
- } catch (error) {
- // nothing
- }
-
- },
- *query({ payload }, { call, put, select }) {
- const state = yield select(state => state.app)
-
- window.Plugins = []
- window.Internal = []
-
- queryIndexer([
- {
- match: '/s;:id',
- to: `/settings?key=:id`,
- },
- {
- match: '/h;:id',
- to: `/hashtag?key=:id`,
- },
- {
- match: '/post/:id',
- to: `/post?key=:id`,
- },
- {
- match: '/@:id',
- to: `/@/:id`,
- }
- ], (callback) => {
- window.location = callback
- })
-
- if (state.session_valid) {
- if (state.session_authframe && state.session_data) {
- state.dispatcher({ type: "closeSplash" })
- } else {
- setTimeout(() => location.reload(), 5000)
- }
- } else {
- state.dispatcher({ type: "closeSplash" })
- }
- },
- *closeSplash({ }, { select }) {
- const state = yield select(state => state.app)
- state.dispatcher({ type: "updateState", payload: { queryDone: true, splash: { render: true, fadeout: state.fadeclock } } })
- setTimeout(() => {
- state.dispatcher({ type: "updateState", payload: { splash: { render: false, fadeout: false } } })
- }, state.fadeclock)
- },
- *initHeaderSocket({ callback }, { call, put, select }) {
- const state = yield select(state => state.app)
-
- state.dispatcher({
- type: 'socket/createNodeSocket', payload: {
- locked: true,
- isHeader: true
- },
- then: () => {
- state.dispatcher({ type: "updateState", payload: { service_valid: true } })
- }
- })
- },
- *refreshToken({ callback }, { call, put, select }) {
- const state = yield select(state => state.app)
- state.dispatcher({
- type: "socket/use",
- scope: "auth",
- invoke: "token",
- query: {
- payload: {
- token: state.session_authframe
- },
- callback: (callbackResponse) => {
- if (typeof (callback) !== "undefined") {
- callback(callbackResponse)
- }
- verbosity.log(callbackResponse)
- if (callbackResponse.code == 100) {
- state.dispatcher({
- type: "setAuth", payload: {
- token: callbackResponse.response.token,
- authFrame: jwt.decode(callbackResponse.response.token),
- dataFrame: state.session_data
- }
- })
- state.dispatcher({ type: "updateState", payload: { session_valid: true } })
- }
- if (callbackResponse.code == 110) {
- verbosity.log(`this session is no valid, erasing data`)
- state.dispatcher({ type: "sessionErase" }) // remove without calling api, its already logged out/invalid
- }
- }
- }
- })
-
- },
- *logout({ payload }, { put, select }) {
- const state = yield select(state => state.app)
-
- session.deauth({
- id: state.session_uuid,
- userToken: state.session_token,
- server_key: state.server_key
- }, (err, res) => {
- verbosity.log(res)
- state.dispatcher({ type: "sessionErase" })
- })
-
- },
- *login({ payload, callback }, { call, put, select }) {
- const state = yield select(state => state.app)
- if (!payload) return false
- const cryptr = new Cryptr(keys.server_key)
-
- state.dispatcher({
- type: "socket/use",
- scope: "auth",
- invoke: "authentication",
- query: {
- payload: {
- username: btoa(payload.username),
- password: cryptr.encrypt(payload.password)
- },
- callback: (callbackResponse) => {
- console.log(callbackResponse)
- const { authFrame, dataFrame, token } = callbackResponse.response
- if (typeof (callback) !== "undefined") {
- callback(callbackResponse.code)
- }
- if (callbackResponse.code == 100) {
- state.dispatcher({ type: "setAuth", payload: { token, authFrame, dataFrame } })
- location.reload()
- }
- }
- }
- })
- },
- *validateSession({ payload }, { put, select }) {
- const state = yield select(state => state.app)
- if (state.session_authframe) {
- if (typeof (state.session_authframe.exp) == "undefined") {
- return false // no support refresh token when is invalid by ws
- }
-
- const now = new Date()
- const createdIat = state.session_authframe.iat * 1000
- const expirationTime = (state.session_authframe.iat + state.session_authframe.exp) * 1000
-
- const isExpired = expirationTime < now.getTime()
-
- verbosity.log(`TOKEN EXPIRES => (${new Date(expirationTime).toLocaleString()})`, `NOW => (${now.toLocaleString()})`)
-
- if (isExpired) {
- verbosity.log(`This session_token is expired`) // TODO: Add verbosity color
- if (settings("session_noexpire")) {
- verbosity.log(`(session_noexpire) is enabled, refreshing token`)
- state.dispatcher({ type: "refreshToken" })
- } else {
- return state.dispatcher({ type: "sessionErase" }) // remove session
- }
- }
-
- if (!state.session_data) {
- verbosity.log(`session_data is not valid but the session is valid, updating from ws`)
- state.dispatcher({ type: "updateUserData" })
- }
-
- state.dispatcher({ type: "updateState", payload: { session_valid: true } })
- }
- },
- *updateUserData({ payload }, { put, select }) {
- const state = yield select(state => state.app)
-
- state.dispatch({
- type: "socket/use",
- scope: "users",
- invoke: "get",
- query: {
- payload: {
- from: "data",
- user_id: state.app.session_uuid,
- userToken: state.app.session_token
- },
- callback: (callbackResponse) => {
- try {
- sessionStorage.setItem(config.app.storage_dataFrame, btoa(JSON.stringify(callbackResponse.response)))
- return state.dispatcher({ type: "updateState", payload: { session_data: callbackResponse.response } })
- } catch (error) {
- verbosity.log(error)
- }
- }
- }
- })
-
- },
- *updateTheme({ payload }, { put, select }) {
- if (!payload) return false
- let container = yield select(state => state.app.app_theme)
- let style_keys = []
- let tmp = []
-
- container.forEach((e) => { style_keys[e.key] = e.value })
-
- if (!style_keys[payload.key]) {
- tmp.push({ key: payload.key, value: payload.value })
- }
- container.forEach((e) => {
- let obj = {}
- if (e.key === payload.key) {
- obj = { key: payload.key, value: payload.value }
- } else {
- obj = { key: e.key, value: e.value }
- }
- tmp.push(obj)
- })
- return tmp ? yield put({ type: 'handleUpdateTheme', payload: tmp }) : null
- },
- *updateFrames({ payload }, { select, put }) {
- try {
- let sessionAuthframe = cookie.get(config.app.storage_authFrame)
- let sessionDataframe = atob(sessionStorage.getItem(config.app.storage_dataFrame))
-
- if (sessionAuthframe) {
- try {
- sessionAuthframe = jwt.decode(sessionAuthframe)
- yield put({
- type: "updateState",
- payload: {
- session_authframe: sessionAuthframe,
- session_token: sessionAuthframe.session_token,
- session_uuid: sessionAuthframe.session_uuid
- }
- })
- } catch (error) {
- cookie.remove(config.app.storage_authFrame)
- }
- }
- if (sessionDataframe) {
- try {
- sessionDataframe = JSON.parse(sessionDataframe)
- yield put({
- type: "updateState",
- payload: {
- session_data: sessionDataframe
- }
- })
- } catch (error) {
- sessionDataframe = null
- sessionStorage.clear()
- }
- }
- } catch (error) {
- verbosity.log(error)
- }
-
- }
- },
- reducers: {
- updateState(state, { payload }) {
- return {
- ...state,
- ...payload,
- };
- },
- setAuth(state, { payload }) {
- if (!payload) return false
- state.session_token = payload.authFrame.session_token
- state.session_uuid = payload.authFrame.session_uuid
- state.session_data = payload.dataFrame
- state.session_authframe = jwt.decode(payload.token)
- state.session_valid = true
-
- cookie.set(config.app.storage_authFrame, payload.token)
- sessionStorage.setItem(config.app.storage_dataFrame, btoa(JSON.stringify(payload.dataFrame)))
- },
- handleUpdateTheme(state, { payload }) {
- verbosity.log(payload)
- store.set(config.app.storage_theme, payload)
- state.app_theme = payload
- },
- requireQuery(state, { payload, callback }) {
- if (!payload || !callback) return false
- switch (payload) {
- case 'login': {
- callback(state.session_valid)
- break;
- }
- case 'guest': {
- callback(!state.session_valid)
- break;
- }
- case 'dev': {
- if (state.session_data) {
- return callback(state.session_data.dev ? true : false)
- }
- return callback(false)
- }
- case 'embedded': {
- callback(state.electron ? true : false)
- break;
- }
- default: {
- break;
- }
- }
- },
- ipcInvoke(state, { payload }) {
- if (!payload || !state.embedded) {
- return false
- }
- const ipc = state.electron.ipcRenderer
- ipc.invoke(payload.key, payload.payload)
- },
- ipcSend(state, { payload }) {
- if (!payload || !state.embedded) {
- return false
- }
- const ipc = state.electron.ipcRenderer
- ipc.send(payload.key, payload.payload)
- },
- sessionErase(state) {
- state.service_valid = false;
- state.session_valid = false;
- state.session_data = null;
- state.session_token = null;
- state.session_authframe = null;
- cookie.remove(config.app.storage_authFrame)
- sessionStorage.clear()
- location.reload()
- },
- },
-}
diff --git a/packages/comty/src/models/contextMenu.js b/packages/comty/src/models/contextMenu.js
deleted file mode 100644
index 4518eec2..00000000
--- a/packages/comty/src/models/contextMenu.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import { OpenContextMenu, DestroyContextMenu } from 'components/Layout/ContextMenu'
-import { verbosity } from '@nodecorejs/utils'
-
-const defaultState = {
- xPos: 0,
- yPos: 0,
- renderList: null,
- eventHandlers: [],
-}
-
-export default {
- namespace: 'contextMenu',
- state: defaultState,
- subscriptions: {
- setup({ dispatch }) {
- window.contextMenu = {
- open: (payload) => {
- if (!payload) return false
- dispatch({ type: "open", payload })
- },
- destroy: () => {
- dispatch({ type: "destroy" })
- },
- addEventListener: (payload) => {
- if (!payload) return false
- dispatch({ type: "handleAddEvent", payload: payload })
- }
- }
-
- document.getElementById("root").addEventListener("contextmenu", (e) => {
- dispatch({ type: "handleEvents", payload: e })
- }, false)
-
- dispatch({ type: "setup" })
- }
- },
- effects: {
- *setup({payload}, { select, put }){
- const state = yield select(state => state.contextMenu)
- window.contextMenu = { ...window.contextMenu, ...state }
- },
- *handleEvents({payload}, { select, put }){
- const eventHandlers = yield select(state => state.contextMenu.eventHandlers)
- verbosity.log("New event recived =>", payload) // TODO: Add verbosity color > { color: "magenta"}
-
- if (Array.isArray(eventHandlers)) {
- let byIndex = []
- let prioritys = []
-
- eventHandlers.forEach((e) => {
- if (typeof(e.ref) !== "undefined") {
- if (e.ref.contains(payload.srcElement)) {
- byIndex[e.priority] = e
- prioritys = Object.keys(byIndex).sort()
- }
- }
- })
-
- prioritys = prioritys.reverse()
- const prioritaryEvent = byIndex[prioritys[0]]
-
- if (prioritaryEvent != null && typeof(prioritaryEvent.onEventRender) !== "undefined") {
- payload.preventDefault()
- window.contextMenu.open({
- renderList: prioritaryEvent.onEventRender,
- ...prioritaryEvent.props,
- yPos: payload.clientY,
- xPos: payload.clientX,
- event: payload
- })
- }else{
- yield put({ type: "close" })
- verbosity.log('not valid events detected')
- }
-
- }else{
- verbosity.log('eventHandlers is not an array, exiting')
- }
-
- },
- *open({payload}, { select, put }){
- OpenContextMenu(payload)
- }
- },
- reducers: {
- updateState(state, { payload }) {
- return {
- ...state,
- ...payload,
- };
- },
- handleAddEvent(state, { payload }){
- let tmp = []
- tmp.push(payload)
-
- const concated = state.eventHandlers.concat(tmp)
- state.eventHandlers = concated
- },
- open(state, { payload }){
- state = {...state, ...payload}
- },
- close(state){
- state = defaultState
- DestroyContextMenu()
- }
- },
-}
diff --git a/packages/comty/src/models/socket.ts b/packages/comty/src/models/socket.ts
deleted file mode 100644
index f79e612d..00000000
--- a/packages/comty/src/models/socket.ts
+++ /dev/null
@@ -1,155 +0,0 @@
-import config from 'config'
-import { verbosity, objectToArrayMap } from '@nodecorejs/utils'
-
-import SocketConnection from 'core/libs/socket/index.ts'
-
-export default {
- namespace: 'socket',
- state: {
- nodes: {},
- socket_address: config.app.endpoint_websocket, //set by default
- socket_port: "7000",
- headerNode: "/"
- },
- effects: {
- *createNodeSocket({ payload, then }, { select, put }) {
- const state = yield select(state => state)
- let opt = {
- namespaceOrigin: state.socket.headerNode,
- hostname: `${state.socket.socket_address}:${state.socket.socket_port}`, // set stated data
- port: state.socket.socket_port,
- reconnectionAttempts: 10
- }
-
- if (typeof (payload) !== "undefined") {
- opt = { ...opt, ...payload }
- }
-
- try {
- new SocketConnection({
- namespaceOrigin: opt.namespaceOrigin,
- connector: state.app.dispatcher,
- payload: opt,
- then: () => {
- if (typeof (then) !== "undefined") {
- return then(true)
- }
- }
- })
- } catch (error) {
- verbosity.log(error)
- }
- },
- *namespaceConnector({ namespace, node }, { select, put }) {
- if (!node || !namespace) {
- verbosity.log(`cannot connect to a namespace without declaring the namespace/node`)
- return false
- }
- const state = yield select(state => state.socket)
- state.nodes[node].namespaceConnector(`/${namespace}`)
- },
- *resetHeader({ }, { put }) {
- yield put({ type: "createNodeSocket" })
- },
- *use({ scope, invoke, query, persistent, then }, { put, select }) {
- const state = yield select(state => state)
- if (!scope) {
- verbosity.log(`scope is missing`)
- return false
- }
- if (typeof(persistent) == "undefined" ) {
- persistent = false
- }
- if (!state.socket.nodes[scope] && scope !== state.socket.headerNode) {
- let opt = {
- namespaceOrigin: `/${scope}`,
- hostname: `${state.socket.socket_address}:${state.socket.socket_port}`,
- port: state.socket.socket_port,
- reconnectionAttempts: 10,
- forceNew: true
- }
-
- new SocketConnection({
- namespaceOrigin: opt.namespaceOrigin,
- connector: state.app.dispatcher,
- payload: opt,
- then: (socket) => {
- if (typeof(then) !== "undefined") {
- then(socket)
- }
- if (typeof(query) !== "undefined") {
- socket._emit(invoke, query.payload, (...callbacks) =>{
- new Promise((resolve, reject) => resolve(query.callback(...callbacks)) ).then(() => {
- if (!persistent) {
- socket.remove()
- }
- })
- })
- }
- }
- })
- }else{
- state.socket.nodes[scope].ioConn._emit(invoke, query.payload, (callback) =>{
- query.callback(callback)
- state.socket.nodes[scope].ioConn.remove()
- })
- }
- },
- *break({ listener, node }, { select, put }) {
- if (!node || !listener) {
- verbosity.log(`cannot change a listener without declaring the node/listener`)
- return false
- }
- const state = yield select(state => state.socket)
- state.nodes[node].ioConn.updateListener(listener, false)
- },
- *resume({ listener, node }, { select, put }) {
- if (!node || !listener) {
- verbosity.log(`cannot change a listener without declaring the node/listener`)
- return false
- }
- const state = yield select(state => state.socket)
- state.nodes[node].ioConn.updateListener(listener, true)
- },
- *toogleListener({ listener, node }, { select, put }) {
- if (!node || !listener) {
- verbosity.log(`cannot change a listener without declaring the node/listener`)
- return false
- }
- const state = yield select(state => state.socket)
- state.nodes[node].ioConn.updateListener(listener)
- },
- *destroyNode({ node }, { select, put }) {
- if (!node) {
- verbosity.log(`cannot destroy a node without declaring it`)
- return false
- }
- const state = yield select(state => state.socket)
- if (state.nodes[node].connectionState !== "closed") {
- verbosity.log("The node is not closed!, closing before destroying")
- state.nodes[node].ioConn._close()
- }
- let updated = {}
-
- objectToArrayMap(state.nodes).forEach(e => {
- if (e.key !== node) {
- updated[e.key] = e.value
- }
- })
-
- yield put({ type: "updateState", payload: { nodes: updated } })
- },
-
- },
- reducers: {
- updateState(state, { payload }) {
- return {
- ...state,
- ...payload,
- };
- },
- updateStateFromSocket(state, { payload, node }) {
- state.nodes[node] = payload
- },
- },
-};
diff --git a/packages/comty/src/models/streaming.js b/packages/comty/src/models/streaming.js
deleted file mode 100644
index a4a1b18c..00000000
--- a/packages/comty/src/models/streaming.js
+++ /dev/null
@@ -1,21 +0,0 @@
-export default {
- namespace: 'streaming',
- state: {
- onStreaming: false,
- isConnected: false,
- },
- effects: {
- *initStreaming({ payload }, { select, put }) {
-
- },
-
- },
- reducers: {
- updateState(state, { payload }) {
- return {
- ...state,
- ...payload,
- };
- }
- }
-}
diff --git a/packages/comty/src/models/user.ts b/packages/comty/src/models/user.ts
deleted file mode 100644
index 8f38a3bc..00000000
--- a/packages/comty/src/models/user.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-export default {
- namespace: 'user',
- state: {},
- effects: {
- *actions({callback, payload}, { call, select }) {
- dispatch({
- type: "socket/use",
- scope: "users",
- invoke: "actions",
- query: {
- payload: {
- from: payload.from,
- user_id: payload.user_id ?? state.app.session_uuid,
- username: payload.username ?? state.app.session_authframe["username"],
- userToken: state.app.session_token
- },
- callback: (callbackResponse) => {
- return callback(callbackResponse)
- }
- }
- })
- },
- *get({ callback, payload }, { call, put, select }) {
- const dispatch = yield select(state => state.app.dispatcher)
- const state = yield select(state => state)
-
- if (!payload) {
- return callback({code: 115, response: "payload is missing/invalid"})
- }
- dispatch({
- type: "socket/use",
- scope: "users",
- invoke: "get",
- query: {
- payload: {
- from: payload.from,
- user_id: payload.user_id ?? state.app.session_uuid,
- username: payload.username ?? state.app.session_authframe["username"],
- userToken: state.app.session_token
- },
- callback: (callbackResponse) => {
- return callback(callbackResponse)
- }
- }
- })
-
-
- },
- *set({ payload }, { call, put, select }) {
-
- },
- },
- reducers: {
- updateState(state, { payload }) {
- return {
- ...state,
- ...payload,
- };
- }
- },
-};
diff --git a/packages/comty/src/pages/404.js b/packages/comty/src/pages/404.js
deleted file mode 100644
index a0c3ba3c..00000000
--- a/packages/comty/src/pages/404.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react'
-import styles from './404.less'
-
-const Error404 = () => (
-
-
-
OBA BLYAT
-
- ERROR 404
-
-
-)
-
-export default Error404
diff --git a/packages/comty/src/pages/404.less b/packages/comty/src/pages/404.less
deleted file mode 100644
index ac10f8cc..00000000
--- a/packages/comty/src/pages/404.less
+++ /dev/null
@@ -1,55 +0,0 @@
-/* devanagari */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v6/pxiEyp8kv8JHgFVrJJbecmNE.woff2) format('woff2');
- unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
-}
-
-/* latin-ext */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v6/pxiEyp8kv8JHgFVrJJnecmNE.woff2) format('woff2');
- unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-/* latin */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v6/pxiEyp8kv8JHgFVrJJfecg.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-.error {
- background-color: transparent;
- color: black;
- text-align: center;
- position: absolute;
- top: 30%;
- margin-top: -50px;
- left: 50%;
- margin-left: -100px;
- width: 200px;
-
- :global .anticon {
- font-size: 48px;
- margin-bottom: 16px;
- }
-
- h1 {
- font-family: 'Poppins', sans-serif;
-
- }
-
- p {
- font-family: 'Poppins', sans-serif;
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/@/[user].js b/packages/comty/src/pages/@/[user].js
deleted file mode 100644
index 5713afdf..00000000
--- a/packages/comty/src/pages/@/[user].js
+++ /dev/null
@@ -1,237 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { verbosity, objectToArrayMap } from '@nodecorejs/utils'
-import * as Icons from 'components/Icons'
-import { connect } from 'umi'
-
-import { pathMatchRegexp, booleanFix } from 'core'
-import HandleError from 'core/libs/errorhandler'
-import GlobalBadges from 'schemas/badges_list.json'
-import { Invalid, PostsFeed} from 'components'
-import FollowButton from './components/follow'
-
-import styles from './index.less'
-
-export class UserLayout extends React.Component {
- state = {
- styleComponent: "UserLayout",
- userString: pathMatchRegexp('/@/:id', location.pathname)[1],
- layoutData: {
- avatar: null,
- cover: null,
- about: null,
- followed: null,
- followers: null
- }
- }
-
- handleClickFollow(user_id) {
- if (typeof (this.props.onFollow) !== "undefined") {
- this.updateFollow(!booleanFix(this.state.layoutData.is_following))
-
- this.props.onFollow(user_id, (callback) => {
- this.updateFollow(callback)
- })
- }
- }
-
- updateFollow(to) {
- let updated = this.state.layoutData
- updated.is_following = to
- this.setState({ layoutData: updated })
- }
-
- componentDidMount() {
- const { layoutData } = this.props
- if (layoutData) {
- this.setState({ layoutData: { ...this.state.layoutData, ...layoutData } })
- }
- }
-
- renderUserBadges() {
- let { layoutData } = this.state
- if (typeof(layoutData.user_tags) == "undefined") {
- return null
- }
- let userTags = objectToArrayMap(layoutData.user_tags)
- let renderTags = []
-
- if (!userTags) {
- return null
- }
-
- try {
- userTags = JSON.parse(userTags[0].value.badges)
- } catch (error) {
- console.log(error)
- }
-
- if (!userTags) {
- return null
- }
-
- objectToArrayMap(GlobalBadges).forEach(e => {
- if(userTags.includes(e.value.id)) {
- renderTags.push(e.value)
- }
- })
-
- try {
- if (Array.isArray(userTags)) {
- return renderTags.map((element) => {
- return(
-
-
- {element.title ?? "maybe"}
-
-
- )
- })
- }
- } catch (error) {
- return null
- }
- return null
- }
-
- render() {
- const { styleComponent } = this.state
- const toStyles = e => styles[`${styleComponent}_${e}`]
- const { followers_count } = this.state.layoutData.details ?? {}
- const isFollowed = booleanFix(this.state.layoutData.is_following)
-
- if (!this.state.layoutData) {
- return null
- }
- return (
-
-
-
-
-
-
-
-
-
- {/* {this.renderUserBadges()} */}
-
-
- {this.state.userString}
-
-
-
-
-
-
-
{ this.handleClickFollow(this.state.layoutData.user_id) }} followed={isFollowed} />
-
-
-
-
-
-
-
-
- )
- }
-}
-
-@connect(({ app }) => ({ app }))
-export default class UserIndexer extends React.Component {
- state = {
- ErrorCode: null,
- loading: true,
- response: null,
- layoutData: null
- }
-
- promiseState = async state => new Promise(resolve => this.setState(state, resolve));
-
- handleClickFollow(user_id, callback) {
- if (this.props.app.session_valid) {
- const requestCallback = (callbackResponse) => {
- if (callbackResponse.code == 200) {
- const response = callbackResponse.response
- const result =( response.follow ?? false) == "followed" ? true : false
- if (typeof(response) !== "undefined") {
- return callback(result)
- }else{
- return false
- }
- }else{
- return callback(null)
- }
- }
-
- this.props.dispatch({
- type: "socket/use",
- scope: "users",
- invoke: "actions",
- query: {
- payload: {
- userToken: this.props.app.session_token,
- action: "follow",
- user_id,
- },
- callback: requestCallback
- }
- })
- }else{
- verbosity.log(`Needs auth to dispatch 'actions' event`)
- }
-
- }
-
- componentDidMount() {
- const matchRegexp = pathMatchRegexp('/@/:id', location.pathname)
-
- if (matchRegexp && this.props.app.session_valid) {
- this.props.dispatch({
- type: "user/get",
- payload: {
- from: "profileData",
- username: matchRegexp[1]
- },
- callback: (callbackResponse) => {
- if (callbackResponse.code == 200) {
- this.setState({ loading: false, layoutData: callbackResponse.response })
- } else {
- this.setState({ ErrorCode: callbackResponse.code })
- return HandleError({ code: callbackResponse.code, msg: "no message provided" })
- }
-
- }
- })
- } else {
- this.setState({ ErrorCode: 140 })
- }
- }
- render() {
- if (this.state.ErrorCode) {
- return
- }
- if (this.state.loading) {
- return
- }
- return (
-
-
{this.handleClickFollow(...context)}} layoutData={this.state.layoutData} />
-
-
-
- )
- }
-}
-
diff --git a/packages/comty/src/pages/@/components/badges/index.js b/packages/comty/src/pages/@/components/badges/index.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/packages/comty/src/pages/@/components/follow/index.js b/packages/comty/src/pages/@/components/follow/index.js
deleted file mode 100644
index e1733237..00000000
--- a/packages/comty/src/pages/@/components/follow/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import classnames from 'classnames'
-
-const FollowButton = (props) => {
- return (
-
- {props.followed ? 'Following' : 'Follow'}
-
- )
-}
-
-export default FollowButton
diff --git a/packages/comty/src/pages/@/components/follow/index.less b/packages/comty/src/pages/@/components/follow/index.less
deleted file mode 100644
index 3c3a5d7e..00000000
--- a/packages/comty/src/pages/@/components/follow/index.less
+++ /dev/null
@@ -1,32 +0,0 @@
-.button {
- user-select: none;
- width: 100px;
- height: 30px;
- padding: 5px 15px;
- text-decoration: none;
- text-align: center;
- vertical-align: middle;
- letter-spacing: 1px;
-
- &:hover {
- color: #7e7e7e;
- }
-
- &.disabled{
- &:hover {
- border: none;
- content: '';
- color: white;
- border-radius: 8px;
- background: linear-gradient(120deg, #6559ae, #ff7159, #6559ae);
- background-size: 400% 400%;
- animation: gradient 15s ease-in-out infinite, border 1s forwards ease-in-out reverse;
- }
- }
-}
-
-@keyframes gradient {
- 0% { background-position: 14% 0%; }
- 50% { background-position: 87% 100%; }
- 100% { background-position: 14% 0%; }
-}
diff --git a/packages/comty/src/pages/@/components/menu/index.js b/packages/comty/src/pages/@/components/menu/index.js
deleted file mode 100644
index 51144682..00000000
--- a/packages/comty/src/pages/@/components/menu/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { MoreOutlined } from 'components/Icons'
-
-const moreMenu = (
-
- __
- __set2
-
-)
-
-const Menu = (props) => {
- return (
-
-
-
- )
-}
-
-export default Menu
diff --git a/packages/comty/src/pages/@/index.less b/packages/comty/src/pages/@/index.less
deleted file mode 100644
index 5a64cd09..00000000
--- a/packages/comty/src/pages/@/index.less
+++ /dev/null
@@ -1,111 +0,0 @@
-.UserLayout_wrapper{
- display: flex;
- height: 100%;
- width: 100%;
-
- flex-direction: column;
- align-items: center;
-
- margin: auto;
- overflow: overlay !important;
-}
-
-.UserLayout_header{
- font-family: "Poppins", sans-serif;
- color: #242424;
-
- vertical-align: top;
- display: flex;
- padding: 20px;
-
- height: auto;
- width: 100%;
-
- max-width: 600px;
- max-height: 200px;
-
- background-color: #ffffff;
- border-radius: 0 0 20px 20px;
- transform: translate(0, -5px);
-}
-
-.UserLayout_cover{
- display: flex;
- align-content: center;
-
- max-height: 400px;
- max-width: 600px;
-
- overflow: hidden;
- border-radius: 15px 15px 0 0;
- border-radius: 8px;
-
- img {
- width: 100%;
- margin: auto;
- }
-}
-
-.UserLayout_title{
- color: #2d2d2d;
- font-weight: 500;
- font-size: 20px;
- line-height: 28px;
- width: 100%;
- height: 100%;
- word-break: break-all;
-
- h1 {
- margin: 0;
- width: fit-content;
- }
-
- span{
- word-break: break-all;
- }
-}
-
-.UserLayout_avatar {
- transform: translate(-35px, -45px);
-
- &>span {
- width: 100%;
- height: 100%;
- }
-
- &.mobile{
- transform: translate(0,-90px);
- margin: auto;
- }
-
- :global {
- .ant-avatar {
- box-shadow: 13px 13px 17px 4px rgba(69, 69, 69, 0.151);
- border-radius: 7px;
- height: 120px;
- width: 120px;
-
- img {
- height: 100%;
- width: 100%;
- }
- }
- }
-}
-
-.UserLayout_options{
- display: flex;
- flex-direction: column;
- text-align: left;
-
- > div {
- text-align: left;
- margin-bottom: 15px;
- }
-}
-
-
-
-.UserLayout_content{
-
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/[indexer].js b/packages/comty/src/pages/[indexer].js
deleted file mode 100644
index 8996c437..00000000
--- a/packages/comty/src/pages/[indexer].js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react'
-import Error404 from './404.js'
-
-export default class PageIndexer extends React.Component {
- render() {
- const { location } = this.props
-
- // By default return Error 404
- return (
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/explore/index.js b/packages/comty/src/pages/explore/index.js
deleted file mode 100644
index f7f6ed04..00000000
--- a/packages/comty/src/pages/explore/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from 'react'
-import { PostsFeed } from 'components'
-
-export default class Explore extends React.Component {
- render() {
- return
- }
-}
diff --git a/packages/comty/src/pages/explore/index.less b/packages/comty/src/pages/explore/index.less
deleted file mode 100644
index 8f4566f7..00000000
--- a/packages/comty/src/pages/explore/index.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.exploreWrapper{
-
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/index.js b/packages/comty/src/pages/index.js
deleted file mode 100644
index 0377ce38..00000000
--- a/packages/comty/src/pages/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default () => {
- return
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/login/guest.js b/packages/comty/src/pages/login/guest.js
deleted file mode 100644
index b57ca446..00000000
--- a/packages/comty/src/pages/login/guest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { connect } from 'umi'
-
-@connect(({ app }) => ({ app }))
-export default class GuestSession extends React.PureComponent {
- state = {
- accept: false,
- }
-
- render() {
- return (
-
-
-
-
this.setState({accept: e.target.checked})} /> You have read and accept the TOS
-
{ this.props.dispatch({ type: "guestLogin" }) }} > Continue
-
-
- )
- }
-}
diff --git a/packages/comty/src/pages/login/index.js b/packages/comty/src/pages/login/index.js
deleted file mode 100644
index 30b170c0..00000000
--- a/packages/comty/src/pages/login/index.js
+++ /dev/null
@@ -1,132 +0,0 @@
-import React from 'react'
-import { iatToString } from 'core'
-import { router, ui } from 'core/libs'
-
-import styles from './index.less'
-import classnames from 'classnames'
-
-import * as antd from 'antd'
-import * as Icons from 'components/Icons'
-
-import RegistrationForm from './register.js'
-import NormalLoginForm from './login.js'
-import GuestSession from './guest.js'
-
-import config from 'config'
-import { connect } from 'umi'
-
-const types = [
- {
- id: "login",
- key: 0,
- renderText: `Sign in ${config.app.siteName}`
- },
- {
- id: "register",
- key: 1,
- renderText: "Register"
- },
- {
- id: "guest",
- key: 2,
- renderText: "Use guest session"
- },
- {
- id: "forgot",
- key: 3,
- renderText: "Forgotten password"
- },
-]
-
-const typesRenderMap = {
- 0: ,
- 1: ,
- 2:
-}
-
-@connect(({ app }) => ({ app }))
-class Login extends React.Component {
- state = {
- transition: false,
- key: 0,
- }
-
- renderHelperButtons() {
- return types.map((e) => {
- return (
- this.setState({ key: e.key })}>
- {e.renderText || "Invalid"}
-
- )
- })
- }
-
- componentDidMount() {
- if (this.props.app.session_valid) {
- ui.notify.info('You have already logged into an account, you can change your account by logging in again')
- }
- }
-
- componentWillUnmount() {
- antd.Modal.destroyAll()
- }
-
- renderAccountModal() {
- const dispatchLogout = () => this.props.dispatch({ type: "app/logout" })
- antd.Modal.confirm({
- title: this.props.app.session_data.username,
- icon: ,
- onOk() {
- router.push('/')
- },
- onCancel() {
- dispatchLogout()
- },
- okText: <> Resume>,
- cancelText: <> Logout>
- })
- }
-
- renderAccountCard() {
- if (this.props.app.session_authframe) {
- return (
-
-
this.renderAccountModal()}>
-
@{this.props.app.session_data.username}
-
Last login {iatToString(this.props.app.session_authframe.iat || 0)}
-
-
- )
- }
- return null
- }
-
- renderTitle() {
- return (
-
-
YulioID™
-
{types[this.state.key].renderText || "Auth"}
-
- )
- }
-
- render() {
- return (
-
-
-
- {this.renderTitle()}
-
-
- {typesRenderMap[this.state.key]}
-
- {this.renderHelperButtons()}
-
-
- {this.renderAccountCard()}
-
-
- )
- }
-}
-export default Login
diff --git a/packages/comty/src/pages/login/index.less b/packages/comty/src/pages/login/index.less
deleted file mode 100644
index b4c52642..00000000
--- a/packages/comty/src/pages/login/index.less
+++ /dev/null
@@ -1,244 +0,0 @@
-@import '~theme/index.less';
-
-.login_wrapper{
- width: 100%;
- height: 100%;
- font-family: "Poppins", sans-serif!important;
- h1,h2,h3,h4,h5,h6{color: #333;}
- position: absolute;
- top: 0;
- left: 0;
- display: flex;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 20px;
- margin: auto;
-
- overflow-y: scroll;
- overflow-x: hidden;
- &.goOut{
- .auth_box{
- -webkit-animation-name: fadeOutLeft;
- animation-name: fadeOutLeft;
- }
- }
- transition: all 300ms ease-in-out;
-}
-
-
-.auth_box{
- display: flex;
- transition: all 300ms ease-in-out;
-
- .yid_logo {
- vertical-align: middle;
- height: 17px;
- }
- :global{
- input:-webkit-autofill,
- input:-webkit-autofill:hover,
- input:-webkit-autofill:focus,
- textarea:-webkit-autofill,
- textarea:-webkit-autofill:hover,
- textarea:-webkit-autofill:focus,
- select:-webkit-autofill,
- select:-webkit-autofill:hover,
- select:-webkit-autofill:focus {
- border: 0;
- -webkit-text-fill-color: #333;
- -webkit-box-shadow: 0 0 0 1000px #ffffff98 inset;
- box-shadow: #fff 0 0 0 1000px inset;
- transition: background-color 5000s ease-in-out 0s;
- }
-
- .ant-input-affix-wrapper {
- width: 100%;
- height: 40px;
- padding: 4px 11px;
- color: #333;
- font-size: 14px;
- line-height: 1.5715;
- background-color: #fff; //rgba(255, 255, 255, 0.596);
- border: 1.5px #2F66DF solid;
- border-radius: 7px;
- }
- }
-}
-
-.centering_wrapper{
- width: 100%;
- text-align: center;
-}
-
-.left_body{
- z-index: 50;
- transform: translate(12px,0);
- float: left;
- width: 30%;
- color: #333;
- background-color: #fff;
- padding: 20px;
- border-radius: 12px 0 0 12px;
- box-shadow: 0 10px 20px 0 rgba(51,51,51,0.52);
- transition: all 300ms ease-in-out;
-}
-
-.right_body{
- z-index: 51;
- float: right;
- width: 70%;
- max-height: -webkit-fill-available;
- height: 150px;
- padding: 20px 50px;
- color: #333;
- background-color: #fff;
- border-radius: 12px;
- box-shadow: 0 10px 20px 0 rgba(51,51,51,0.52);
- transition: all 300ms ease-in-out;
-}
-
-.third_body{
- z-index: 50;
- transform: translate(0, -24px);
- float: right;
- width: 100%;
- max-height: -webkit-fill-available;
- height: 120px;
- padding: 45px 50px;
- color: #333;
- background-color: #fff;
- border-radius: 12px;
- box-shadow: 0 10px 20px 0 rgba(51, 51, 51, 0.52);
- transition: all 300ms ease-in-out;
-
- .last_auth{
- font-size: 14px;
-
- }
-}
-
-.third_body:hover{
- background-color: rgba(255, 255, 255, 0.3);
- box-shadow: 0 10px 20px 0 rgba(51, 51, 51, 0.8);
- transform: translate(0, -16px);
-}
-
-.helper_login_btn{
- transform: translate(-20px, -14px);
-}
-
-.login_helper_footer{
- width: 100%;
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- display: flex;
- margin: auto;
- :global{
- .ant-btn{
- margin: auto;
- padding: 0 5px;
- }
- }
-
- transform: translate(0, -10px);
-
-}
-
-
-@keyframes go-out {
- 0% {
- filter: blur(0)
- }
-
- 100% {
- filter: blur(15px)
- }
-}
-
-
-// Medium format max-width: 830px
-@media (min-width: 486px){
- .auth_box {
- padding: 0 16px 40px;
- width: 500px;
- min-height: 500px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- }
- .left_body{
- width: 100%;
- float: none;
- border-radius: 12px 12px 0 0;
- padding: 20px;
- transform: translate(0, 22px);
- }
- .right_body{
- width: 100%;
- height: 100%;
- float: none;
- padding: 20px 60px;
- }
-}
-
-// Mobile format
-@media (max-width: 485px){
- .auth_box {
- position: absolute;
- top: 0;
- left: 0;
- transition: all 150ms ease-in-out;
- padding: 70px 16px 40px;
- width: 100%;
- height: 100%;
- min-height: 500px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- border-radius: 0;
- }
- .left_body{
- box-shadow: none;
- width: 100%;
- float: none;
- position: absolute;
- top: 0;
- margin-top: 30px;
- transform: translate(0, 0);
- }
- .right_body{
- box-shadow: none;
- width: 100%;
- float: none;
- padding: 20px;
- }
-}
-
-@-webkit-keyframes fadeOutLeft {
- from {
- opacity: 1;
- }
-
- to {
- opacity: 0;
- -webkit-transform: translate3d(-100%, 0, 0);
- transform: translate3d(-100%, 0, 0);
- }
-}
-
-@keyframes fadeOutLeft {
- from {
- opacity: 1;
- }
-
- to {
- opacity: 0;
- -webkit-transform: translate3d(-100%, 0, 0);
- transform: translate3d(-100%, 0, 0);
- }
-}
diff --git a/packages/comty/src/pages/login/login.js b/packages/comty/src/pages/login/login.js
deleted file mode 100644
index 77951711..00000000
--- a/packages/comty/src/pages/login/login.js
+++ /dev/null
@@ -1,229 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-
-import Fade from 'react-reveal/Fade'
-import HeadShake from 'react-reveal/HeadShake';
-
-import * as antd from 'antd'
-
-import { Form, Input, Button, Checkbox } from 'antd'
-import {
- UserOutlined,
- LockOutlined,
- BulbOutlined,
- SwapLeftOutlined
-} from 'components/Icons'
-import { connect } from 'umi'
-
-@connect(({ app, socket }) => ({ app, socket }))
-export default class NormalLoginForm extends React.Component {
- state = {
- usernameRaw: null,
- passwordRaw: null,
-
- step: 1,
- validating: false,
- error_count: 0,
- step_error: false,
- step_show: true,
- }
-
- next() {
- let step = this.state.step
- this.setState({ validating: true, step_error: false })
- switch (step) {
- case 1: {
- if (this.state.usernameRaw) {
- const payload = { username: this.state.usernameRaw }
- user.get.basicData(payload, (err, res) => {
- if (res.code == 200) {
- step++
- this.anim_transition(50)
- return this.setState({
- validating: false,
- early_data: res.response,
- step: step,
- })
- }
- if (res.code == 210) {
- return this.anim_error()
- }
- return false
- })
- } else {
- return this.anim_error()
- }
- }
- case 2: {
- return this.auth()
- }
- default:
- return false
- }
- }
-
- back() {
- if (this.state.step > 1) {
- this.state.step--
- this.anim_transition(150)
- }
- this.setState({ step: this.state.step })
- }
-
- anim_transition(duration) {
- this.setState({ step_show: false })
- setTimeout(() => {
- this.setState({ step_show: true })
- }, duration || 150)
- }
-
- anim_error() {
- this.setState({ step_error: true, error_count: (this.state.error_count + 1), validating: false })
- }
-
- onChangeField(event) {
- if(!this.state) {
- return false
- }
- let updated = this.state
- updated[event.target.id] = event.target.value
- this.setState(updated)
- }
-
- auth() {
- const { usernameRaw, passwordRaw } = this.state
- if (!usernameRaw || !passwordRaw) return false
- this.setState({ step_error: false, validating: true })
-
- this.props.dispatch({
- type: 'app/login',
- payload: { username: usernameRaw, password: passwordRaw },
- callback: (callbackResponse) => {
- console.log(callbackResponse)
- this.setState({ validating: false })
- switch (callbackResponse) {
- case 100: {
- return null
- }
- case 400: {
- console.log('Credentials error')
- return this.anim_error()
- }
- case 500: {
- console.log('Server error')
- return this.back()
- }
- default: {
- console.log('Unknown error')
- return this.back()
- }
- }
- }
- })
- }
-
- renderFormItems = {
- username: () => {
- return (
-
- this.next()}
- id="usernameRaw"
- onChange={(e) => this.onChangeField(e)}
- prefix={ }
- placeholder="Username or Email"
- />
-
- )
- },
- password: () => {
- return (
- <>
- Welcome Back @{this.state.early_data.username}
-
- this.next()}
- disabled={this.state.validating}
- id="passwordRaw"
- prefix={ }
- onChange={(e) => this.onChangeField(e)}
- placeholder="Password"
- />
-
- >
- )
- }
- }
-
- renderButtons() {
- const PrimaryButton = () => {
- return (
- this.next()}
- >
- {this.state.step == 1 ? "Next" : "Login"}
-
- )
- }
-
- const SecondaryButton = () => {
- return (
- this.back()}
- >
-
- Back
-
- )
- }
- if (this.state.step > 1) {
- return
- }
- return
- }
-
- render() {
- return (
-
-
-
-
- {this.renderButtons()}
-
- )
- }
-}
diff --git a/packages/comty/src/pages/login/register.js b/packages/comty/src/pages/login/register.js
deleted file mode 100644
index 2c48a4ac..00000000
--- a/packages/comty/src/pages/login/register.js
+++ /dev/null
@@ -1,151 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-import styles from './index.less'
-
-import {
- Form,
- Input,
- Tooltip,
- Cascader,
- Select,
- Row,
- Col,
- Checkbox,
- Button,
- AutoComplete,
-} from 'antd'
-
-import ReCAPTCHA from 'react-google-recaptcha'
-import { g_recaptcha_key } from 'config/keys'
-
-export default class RegistrationForm extends React.Component {
- state = {
- usernameRaw: null,
- passwordRaw: null,
- emailRaw: null,
-
- captchaValue: null
- }
-
- handleRegister() {
-
- }
-
- onFinish(values) {
- console.log('Received values of form: ', values)
- }
-
- onCaptcha(values) {
- this.setState({ captchaValue: values })
- }
-
- onChangeField(event) {
- if(!this.state) {
- return false
- }
- let updated = this.state
- updated[event.target.id] = event.target.value
- this.setState(updated)
- }
-
- renderForm() {
- return (
-
- this.onChangeField(e)} placeholder="randomuser" prefix={ } />
-
-
- this.onChangeField(e)} placeholder="example@no-real.com" prefix={ } />
-
-
-
- this.onChangeField(e)} placeholder="mysupersecretpassword" prefix={ } />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- value
- ? Promise.resolve()
- : Promise.reject('Should accept agreement'),
- },
- ]}
- >
-
- I have read the agreement
-
-
-
- Register
-
-
- )
- }
-
- render() {
- return (
-
- { this.renderForm()}
-
- )
- }
-
-}
diff --git a/packages/comty/src/pages/logout.js b/packages/comty/src/pages/logout.js
deleted file mode 100644
index 8e29686f..00000000
--- a/packages/comty/src/pages/logout.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { connect } from 'umi'
-import { router } from 'core/libs';
-import { Home, Trash } from 'components/Icons'
-@connect(({ app }) => ({ app }))
-export default class Logout extends React.Component{
-
- componentDidMount(){
- if (!this.props.app.session_valid) {
- return false
- }
- const dispatchLogout = () => this.props.dispatch({ type: "app/logout" })
-
- antd.Modal.confirm({
- title: this.props.app.session_data.username,
- icon: ,
- content: 'Are you sure you want to log out',
- onOk() {
- router.push('/')
- },
- onCancel() {
- dispatchLogout()
- },
- okText: <> Resume>,
- cancelText: <> Logout>
- });
- }
-
- componentWillUnmount(){
- antd.Modal.destroyAll()
- }
-
- render(){
- return null
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/new_streaming/index.js b/packages/comty/src/pages/new_streaming/index.js
deleted file mode 100644
index 2e9c56f9..00000000
--- a/packages/comty/src/pages/new_streaming/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import { connect } from 'umi'
-
-@connect(({ app }) => ({ app }))
-export default class NewStreaming extends React.Component{
- render(){
- return(
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/post.js b/packages/comty/src/pages/post.js
deleted file mode 100644
index 46c6911f..00000000
--- a/packages/comty/src/pages/post.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import React from 'react'
-import { connect } from 'umi'
-import { PostsFeed } from 'components'
-
-@connect(({ app }) => ({ app }))
-export default class Post extends React.Component{
- state = {
- postID: null
- }
- componentDidMount(){
- this.setState({ postID: new URLSearchParams(location.search).get('key') })
- }
- render(){
- if (!this.state.postID) {
- return null
- }
- return
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/saves.js b/packages/comty/src/pages/saves.js
deleted file mode 100644
index fec5f5ac..00000000
--- a/packages/comty/src/pages/saves.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import { connect } from 'umi'
-import { PostsFeed } from 'components'
-
-@connect(({ app }) => ({ app }))
-export default class Saves extends React.Component{
- render(){
- return
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/about/index.js b/packages/comty/src/pages/settings/components/about/index.js
deleted file mode 100644
index cb09617b..00000000
--- a/packages/comty/src/pages/settings/components/about/index.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import React from 'react'
-import { About } from 'components'
-import * as Icons from 'components/Icons'
-import * as antd from 'antd'
-import l from 'schemas/links'
-
-export default class AppAbout extends React.Component {
- render() {
- const handleClickLinks = (e) => {
- const link = l[e]
- link ? window.openLink(link) : console.log("Link not available")
- }
- return <>
-
-
-
-
-
-
- >
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/earnings/index.js b/packages/comty/src/pages/settings/components/earnings/index.js
deleted file mode 100644
index 997e5926..00000000
--- a/packages/comty/src/pages/settings/components/earnings/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as Icons from 'components/Icons'
-
-
-export default class Earnings extends React.Component {
- state = {
- loading: true,
- pro_points: 0
- }
- componentDidMount(){
- // app.comty_data.get_user_data((err,res)=>{
- // if (err) return false
- // try {
- // const a = JSON.parse(res)['user_data']
- // this.setState({ loading: false, pro_points: a.points })
- // } catch (error) {
-
- // }
- // })
-
- }
- render() {
- return (
-
-
-
-
Your Pro Points
- {this.state.pro_points}
-
-
- )
- }
-}
diff --git a/packages/comty/src/pages/settings/components/electron/index.js b/packages/comty/src/pages/settings/components/electron/index.js
deleted file mode 100644
index 8a1dd019..00000000
--- a/packages/comty/src/pages/settings/components/electron/index.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as Icons from 'components/Icons'
-import styles from './index.less'
-import { connect } from 'umi';
-import { package_json } from 'core'
-import { objectToArrayMap } from '@nodecorejs/utils'
-
-const AppTech = (info) => {
- if (!info) return null
- return(
-
-
-
react
{info.react_version}
-
{info.process.versions.v8}
-
-
{info.process.versions.electron}
-
Webpack
-
Socket.io
-
JS
-
TS
-
WebAssembly
-
OpenAI
-
- )
-}
-
-
-@connect(({ app }) => ({ app }))
-export default class ElectronSettings extends React.PureComponent{
- state = {
- loading: true,
- info: []
- }
-
- getInfo(){
- this.setState({ loading: true })
- this.setState({
- loading: false,
- info: {
- g_umi: window.g_umi,
- process: window.process,
- react_version: React.version,
- deps: objectToArrayMap(package_json.dependencies)
- }
- })
- }
-
- componentDidMount(){
- this.getInfo()
- }
-
-
- render(){
- const showAppTech = () => {
- antd.Modal.info({
- title: package_json.title,
- content: AppTech(this.state.info),
- width: 550
- })
- }
-
- const showThirdParty = () => {
- const generateList = () => {
- return this.state.info.deps.map((e) => {
- return(
-
- -> {e.key}
{e.value.slice(1,e.value.length)}
-
- )
- })
- }
-
- antd.Modal.info({
- title: package_json.title,
- content: generateList(),
- width: 550
- })
- }
-
- if (this.state.loading){
- return
- }
- return(
-
-
showAppTech()}> App Technologies
-
showThirdParty()}> Third-Party
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/electron/index.less b/packages/comty/src/pages/settings/components/electron/index.less
deleted file mode 100644
index 808ab280..00000000
--- a/packages/comty/src/pages/settings/components/electron/index.less
+++ /dev/null
@@ -1,15 +0,0 @@
-.versions{
- overflow: scroll;
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- grid-template-rows: repeat(4, 1fr);
- grid-column-gap: 15px;
- grid-row-gap: 15px;
-
- > div {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/general/index.js b/packages/comty/src/pages/settings/components/general/index.js
deleted file mode 100644
index 41b0cb59..00000000
--- a/packages/comty/src/pages/settings/components/general/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-import React from 'react'
-import { List, Button, Switch, Checkbox, InputNumber, Input } from 'antd'
-import * as Icons from 'components/Icons'
-
-import { verbosity } from '@nodecorejs/utils'
-import { settings, newSetting } from 'core/libs/settings'
-import listSettings from 'schemas/settings_general.json'
-
-const AntdComponents = { Button, Switch, Checkbox, InputNumber, Input }
-export default class GeneralSettings extends React.Component {
- state = {
- list: listSettings,
- }
-
- renderSetting = (item) => {
- if (!item.type || !item.id) {
- verbosity.log("Invalid component >", item)
- return null
- }
- if (typeof(AntdComponents[item.type]) == "undefined") {
- verbosity.log(`Invalid component, '${item.type}' not exists >`, item)
- return null
- }
-
- let itemProps = {
- onChange: (e) => this.onChange(item, e),
- checked: settings.get(item.id)
- }
-
- switch (item.type) {
- case 'Switch': {
- itemProps = { ...itemProps } // checkedChildren: "Enabled", unCheckedChildren: "Disabled"
- break
- }
- default:
- break
- }
-
- return React.createElement(AntdComponents[item.type], itemProps)
- }
-
- onChange(item, event) {
- try {
- let to = event
-
- verbosity.colors({ log: { textColor: "blue" } }).log(`Updating setting (${item.id}) > ${to}`)
- settings.set(item.id, to)
-
- const updatedValues = this.state.list.map(element =>
- element.id === item.id ? Object.assign(element, { value: to }) : element
- )
- this.setState({ list: updatedValues })
- } catch (err) {
- console.log(err)
- }
- }
-
- renderIcon(icon, props) {
- if (!Icons[icon]) {
- verbosity.log(`${icon} not exist!`)
- return null
- }
- return React.createElement(Icons[icon], props ?? null)
- }
-
- render() {
- return (
- (
-
- {this.renderIcon(item.icon)}{item.title}>}
- description={item.description}
- />
- {this.renderSetting(item)}
-
- )}
- />
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/help/index.js b/packages/comty/src/pages/settings/components/help/index.js
deleted file mode 100644
index 75efbdc3..00000000
--- a/packages/comty/src/pages/settings/components/help/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react'
-
-export default class Help extends React.Component{
- render(){
- return <>
-
- >
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/keybinds/index.js b/packages/comty/src/pages/settings/components/keybinds/index.js
deleted file mode 100644
index 2864fd7b..00000000
--- a/packages/comty/src/pages/settings/components/keybinds/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import { connect } from 'umi'
-
-@connect(({ app }) => ({ app }))
-export default class Keybinds extends React.Component {
- render() {
- return <>>
- }
-}
-
diff --git a/packages/comty/src/pages/settings/components/notification/index.js b/packages/comty/src/pages/settings/components/notification/index.js
deleted file mode 100644
index 2b712970..00000000
--- a/packages/comty/src/pages/settings/components/notification/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-import styles from './index.less'
-
-export default class NotificationView extends React.Component {
- render() {
- return (
-
-
-
- )
- }
-}
-
diff --git a/packages/comty/src/pages/settings/components/notification/index.less b/packages/comty/src/pages/settings/components/notification/index.less
deleted file mode 100644
index 4eab7076..00000000
--- a/packages/comty/src/pages/settings/components/notification/index.less
+++ /dev/null
@@ -1,17 +0,0 @@
-@import '~theme/index.less';
-
-.main {
-
- :global {
- h2 {
- font-weight: 500;
- }
-
- .anticon {
- color: #2d2d2d;
-
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/plugins/index.js b/packages/comty/src/pages/settings/components/plugins/index.js
deleted file mode 100644
index 4bb9481d..00000000
--- a/packages/comty/src/pages/settings/components/plugins/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react'
-import {connect} from 'umi'
-@connect(({ app }) => ({ app }))
-export default class Plugins extends React.Component {
- render() {
- return <>
- >
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/security/index.js b/packages/comty/src/pages/settings/components/security/index.js
deleted file mode 100644
index ce0a704b..00000000
--- a/packages/comty/src/pages/settings/components/security/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-import * as antd from 'antd'
-import styles from './index.less'
-
-import Sessions_Manager from './sessions.js'
-
-const { Menu } = antd
-export default class SecurityView extends React.Component {
- state = {
- current: 'privacy',
- }
-
- handleClick = e => {
- this.setState({
- current: e.key,
- })
- }
-
- renderChildren = () => {
- const { current } = this.state
- switch (current) {
- case 'privacy':
- return null
- case 'credentials':
- return null
- case 'sessions':
- return
- default:
- break
- }
- return null
- }
-
- render() {
- return (
-
-
-
-
- Privacy
-
-
-
- Credentials
-
-
-
- Sessions
-
-
-
{this.renderChildren()}
-
- )
- }
-}
-
diff --git a/packages/comty/src/pages/settings/components/security/index.less b/packages/comty/src/pages/settings/components/security/index.less
deleted file mode 100644
index 4eab7076..00000000
--- a/packages/comty/src/pages/settings/components/security/index.less
+++ /dev/null
@@ -1,17 +0,0 @@
-@import '~theme/index.less';
-
-.main {
-
- :global {
- h2 {
- font-weight: 500;
- }
-
- .anticon {
- color: #2d2d2d;
-
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/security/sessions.js b/packages/comty/src/pages/settings/components/security/sessions.js
deleted file mode 100644
index 5d4bbe42..00000000
--- a/packages/comty/src/pages/settings/components/security/sessions.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-
-export default class Sessions_Manager extends React.Component {
- state = {
- sessions_data: '',
- }
- componentDidMount() {
- // app.comty_data.session_id((err, res) => {
- // this.setState({ sid: res })
- // })
- // app.comty_data.sessions((err, res) => {
- // const a = JSON.parse(res)['data']
- // this.setState({ sessions_data: a })
- // })
- }
- render() {
- return (
-
-
(
-
-
- Session #{item.id}
- {this.state.sid == item.session_id ? 'This Session' : null}
-
- {item.platform}
- {item.ip_address}
- {item.time}
-
-
- )}
- />
-
- )
- }
-}
diff --git a/packages/comty/src/pages/settings/components/theme/components/background/index.js b/packages/comty/src/pages/settings/components/theme/components/background/index.js
deleted file mode 100644
index 076366b8..00000000
--- a/packages/comty/src/pages/settings/components/theme/components/background/index.js
+++ /dev/null
@@ -1,158 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-import * as antd from 'antd'
-import { connect } from 'umi'
-import styles from '../../index.less'
-
-import { theme, getOptimalOpacityFromIMG, get_style_rule_value } from 'core/libs/style'
-import { urlToBase64, imageToBase64, arrayToObject } from 'core'
-import ThemeConfigurator from '../../configurator'
-
-@connect(({ app }) => ({ app }))
-export default class BackgroundImage extends ThemeConfigurator {
- state = {
- configKey: "backgroundImage",
- model: { active: false, opacity: null, src: null },
-
- textColor: this.rgbToScheme(getComputedStyle(document.getElementById("appWrapper")).color),
- overlayColor: this.rgbToScheme(getComputedStyle(document.getElementById("appWrapper")).backgroundColor),
-
- processing: null,
- fileURL: null,
- customURL: '',
- }
-
- handleFileUpload = info => {
- if (info.file.status === 'uploading') {
- return this.setState({ processing: false })
- }
- if (info.file.status === 'done') {
- this.setState({ processing: true })
- imageToBase64(info.file.originFileObj, fileURL => {
- this.setState({ fileURL: fileURL })
- this.proccessBackground(fileURL)
- })
- }
- }
-
- handleCustomURL(url) {
- this.setState({ processing: true, fileURL: url })
- urlToBase64(url, fileURL => {
- this.proccessBackground(fileURL)
- })
- }
-
- proccessBackground(data) {
- getOptimalOpacityFromIMG({ textColor: this.state.textColor, overlayColor: this.state.overlayColor, img: data }, (res) => {
- this.handleUpdate({ active: true, src: this.state.fileURL, opacity: res })
- })
- }
-
- schemeToRGB(values) {
- const scheme = values ? values : { r: '0', g: '0', b: '0' }
- const r = scheme.r || '0'
- const g = scheme.g || '0'
- const b = scheme.b || '0'
- return `rgb(${r}, ${g}, ${b})`
- }
-
- rgbToScheme(rgb) {
- const values = rgb.replace(/[^\d,]/g, '').split(',');
- return { r: values[0], g: values[1], b: values[2] }
- }
-
- renderPreviewModel() {
- return (
-
-
Preview
- { this.state.model.src ?
-
-
Sample text
-
Sample text
-
Sample text
-
Sample text
-
Some text here
-
Some text here
-
-
-
:
No Background }
-
- )
- }
-
- renderUploader() {
- return (
-
-
Upload
-
-
- Upload from your files
-
- } />
-
-
-
-
Or
-
-
- Upload from URL
-
this.handleCustomURL(this.state.customURL)} onChange={e => this.setState({ customURL: e.target.value })} value={this.state.customURL} placeholder="http://example.com/my_coolest_image.jpg" />
-
-
-
- {this.state.processing ?
Processing image ... : null}
- {this.state.params ? JSON.stringify(this.state.params) : null}
-
- )
- }
-
- renderControls() {
- return (
-
-
-
Enabled
-
{ this.promiseState(prevState => ({ model: { ...prevState.model, active: e } })).then(() => this.handleUpdate()) }}
- checked={this.state.model.active}
- />
-
-
-
-
Opacity
-
{ this.setState(prevState => ({ model: { ...prevState.model, opacity: e / 100 } })) }} onAfterChange={() => this.handleUpdate()} value={this.state.model.opacity * 100} />
-
-
-
Export Code
-
this.handleExport()}> Export
-
-
-
Import Code
-
null}> Import
-
-
-
Erase
-
this.handleErase()} okText="Yes" cancelText="No">
- Delete
-
-
-
-
- )
- }
-
- render() {
- return (
-
- {this.renderControls()}
-
- {this.renderPreviewModel()}
-
- {this.renderUploader()}
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/theme/components/color/index.js b/packages/comty/src/pages/settings/components/theme/components/color/index.js
deleted file mode 100644
index eeccc90e..00000000
--- a/packages/comty/src/pages/settings/components/theme/components/color/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-import * as antd from 'antd'
-import styles from '../../index.less'
-import ThemeConfigurator from '../../configurator'
-
-export default class Colors extends ThemeConfigurator {
- state = {
- configKey: "colors",
- model: { active: false }
- }
- render() {
- return (
-
- )
- }
-}
diff --git a/packages/comty/src/pages/settings/components/theme/components/darkmode/index.js b/packages/comty/src/pages/settings/components/theme/components/darkmode/index.js
deleted file mode 100644
index 07841be4..00000000
--- a/packages/comty/src/pages/settings/components/theme/components/darkmode/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-import * as antd from 'antd'
-import styles from '../../index.less'
-import ThemeConfigurator from '../../configurator'
-
-export default class DarkMode extends ThemeConfigurator {
- state = {
- configKey: "darkmode",
- model: { active: false }
- }
- render() {
- return (
-
-
-
Enabled
-
{ this.promiseState(prevState => ({ model: { ...prevState.model, active: e } })).then(() => this.handleUpdate()) }}
- checked={this.state.model.active}
- />
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/theme/configurator.js b/packages/comty/src/pages/settings/components/theme/configurator.js
deleted file mode 100644
index facf34eb..00000000
--- a/packages/comty/src/pages/settings/components/theme/configurator.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import React from 'react'
-import ErrorHandler from 'core/libs/errorhandler'
-import { theme } from 'core/libs/style'
-import exportDataAsFile from 'core/libs/ui/export_data'
-import { verbosity } from '@nodecorejs/utils'
-
-export default class ThemeConfigurator extends React.Component {
- componentDidMount() {
- this.applyStoraged()
- }
-
- applyStoraged() {
- const storaged = theme.get()
- if (storaged && this.state) {
- if (storaged[this.state.configKey]) {
- return this.setState({ model: storaged[this.state.configKey] })
- } else {
- return verbosity.log(`cannot get storagedSetting for ${this.state.configKey}`)
- }
- }
- }
-
- promiseState = async state => new Promise(resolve => this.setState(state, resolve));
-
- handleUpdate(payload) {
- if (!this.state.configKey) {
- return ErrorHandler({ msg: `cannot update without 'configKey', is missing`, code: 140 })
- }
- if (!payload) {
- payload = this.state.model
- }
- this.setState({ model: payload, processing: false })
- window.dispatcher({
- type: 'app/updateTheme',
- payload: {
- key: this.state.configKey,
- value: payload
- }
- });
- }
-
- handleErase() {
- this.handleUpdate({})
- }
-
- handleExport() {
- exportDataAsFile({ data: JSON.stringify(this.state.model), type: 'text/json' })
- }
-
-}
diff --git a/packages/comty/src/pages/settings/components/theme/index.js b/packages/comty/src/pages/settings/components/theme/index.js
deleted file mode 100644
index f969f7be..00000000
--- a/packages/comty/src/pages/settings/components/theme/index.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-import * as antd from 'antd'
-import { connect } from 'umi'
-import { arrayToObject } from 'core'
-import ThemeSettingsList from 'schemas/theme_settings.json'
-
-import BackgroundSetting from './components/background'
-import DarkmodeSetting from './components/darkmode'
-import ColorSetting from './components/color'
-
-const componentsMap = {
- backgroundImage: ,
- darkmode: ,
- color: ,
-}
-
-@connect(({ app }) => ({ app }))
-export default class ThemeSettings extends React.Component {
- state = {
- selectedKey: null,
- keys: []
- }
-
- componentDidMount() {
- let mix = []
- ThemeSettingsList.forEach(e => {
- mix[e.id] = e
- })
- this.setState({ keys: mix })
- }
-
- renderSelectedKey() {
- const selectedKeyItem = this.state.keys[this.state.selectedKey] ?? { icon: null, title: null }
- return (
- this.setState({ selectedKey: null })}
- visible={this.state.selectedKey ? true : false}
- >
-
-
-
{selectedKeyItem.icon} {selectedKeyItem.title}
-
-
- {componentsMap[this.state.selectedKey]}
-
-
- )
- }
-
- render() {
- const handleClick = (key) => this.setState({ selectedKey: key })
- const isActive = (key) => { return key ? key.active : false }
- return (
-
-
(
-
-
handleClick(item.id)}>
- {React.createElement(Icons[item.icon])}{item.title} {isActive(arrayToObject(this.props.app.app_theme)[item.id]) ? "Enabled" : "Disabled"}
- {item.description}
-
-
- )}
- />
- {this.renderSelectedKey()}
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/components/theme/index.less b/packages/comty/src/pages/settings/components/theme/index.less
deleted file mode 100644
index 9c0a5ce2..00000000
--- a/packages/comty/src/pages/settings/components/theme/index.less
+++ /dev/null
@@ -1,51 +0,0 @@
-.background_image_controls{
- width: 100%;
- margin: auto;
- display: flex;
- flex-direction: row;
-
- > div {
- width: 100%;
- margin: 0 10px;
- }
-}
-
-.background_image_uploader{
- width: 100%;
- margin: auto;
- display: flex;
- flex-direction: row;
- text-align: center;
-
- > div {
- width: 100%;
- margin: 0 10px;
- }
-}
-
-.background_image_preview{
- position: relative;
- height: 50%;
- border-radius: 8px;
-
- img{
- z-index: 9;
- width: 100%;
- border-radius: 8px;
- }
-
- .text_wrapper{
- position: absolute;
- z-index: 10;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- height: 100%;
- width: 100%;
-
- h1{
- font-size: 68px;
- }
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/pages/settings/index.js b/packages/comty/src/pages/settings/index.js
deleted file mode 100644
index 7e21ae50..00000000
--- a/packages/comty/src/pages/settings/index.js
+++ /dev/null
@@ -1,81 +0,0 @@
-import React from 'react'
-import * as Icons from 'components/Icons'
-
-import { ListedMenu } from 'components'
-
-import NotificationView from './components/notification'
-import SecurityView from './components/security'
-import Base from './components/general'
-import AppAbout from './components/about'
-import Theme from './components/theme'
-import ElectronApp from './components/electron'
-import Keybinds from './components/keybinds'
-import Plugins from './components/plugins'
-
-const Settings = {
- base: ,
- about: ,
- keybinds: ,
- theme: ,
- plugins: ,
- security: ,
- notification: ,
- app:
-}
-
-const menuList = [
- {
- key: "base",
- title: "General",
- icon: ,
- },
- {
- key: "app",
- title: "Application",
- icon: ,
- require: "embedded"
- },
- {
- key: "keybinds",
- title: "Keybinds",
- icon:
- },
- {
- key: "theme",
- title: "Customization",
- icon: ,
- },
- {
- key: "plugins",
- title: "Plugins",
- icon: ,
- },
- {
- key: "security",
- title: "Security & Privacity",
- icon: ,
- },
- {
- key: "notification",
- title: "Notification",
- icon: ,
- },
- {
- key: "help",
- title: "Help",
- icon: ,
- },
- {
- key: "about",
- title: "About",
- icon: ,
- }
-]
-
-class GeneralSettings extends React.Component {
- render() {
- return } title="Settings" childrens={Settings} menuArray={menuList} />
- }
-}
-
-export default GeneralSettings
diff --git a/packages/comty/src/pages/streams/index.js b/packages/comty/src/pages/streams/index.js
deleted file mode 100644
index 34bfc768..00000000
--- a/packages/comty/src/pages/streams/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as Icons from 'components/Icons'
-import { connect } from 'umi'
-import { verbosity } from '@nodecorejs/utils'
-
-import { goLive } from 'core/models/helpers'
-
-@connect(({ app }) => ({ app }))
-export default class Streams extends React.Component {
-
- state = {
- list: []
- }
-
- componentDidMount() {
- try {
-
- } catch (error) {
- verbosity.log(error)
- }
- }
-
- availableList = () => {
- if (!Array.isArray(this.state.list)) {
- return false
- }
- if (this.state.list.length == 0) {
- return false
- }
- return true
- }
-
- render() {
-
- if (!this.availableList()) {
- return
-
- {goLive()}} type="primary" >
- Start Streaming
-
-
-
- }
-
- return (
-
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/packages/comty/src/theme/base/components/PostCard.less b/packages/comty/src/theme/base/components/PostCard.less
deleted file mode 100644
index 207317f1..00000000
--- a/packages/comty/src/theme/base/components/PostCard.less
+++ /dev/null
@@ -1,17 +0,0 @@
-@post_card_general_border-rd: 7px;
-@post_card_wrapper_shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-@post_card_wrapper_actions_backgroud: rgb(235, 235, 235);
-@post_card_wrapper_actions_icon_backgroud: #fff;
-
-@post_card_wrapper_tags_color_default: rgb(249, 179, 64);
-@post_card_wrapper_tags_color_nsfw: #111;
-@post_card_wrapper_tags_color_flag: #111;
-
-@post_card_wrapper_post_content_color: #555555;
-@post_card_wrapper_post_content_weight: 400;
-@post_card_wrapper_post_content_fontSize: 15px;
-@post_card_wrapper_post_content_letterSpacing: -0.3px;
-
-@post_card_flaggedWarning_backgroud: #ffffff60;
-@post_card_flaggedWarning_padding: 20px 15px 25px 15px;
-@post_card_flaggedWarning_iconSize: 40px;
\ No newline at end of file
diff --git a/packages/comty/src/theme/base/fonts-import.css b/packages/comty/src/theme/base/fonts-import.css
deleted file mode 100644
index 2bd44ba2..00000000
--- a/packages/comty/src/theme/base/fonts-import.css
+++ /dev/null
@@ -1,9 +0,0 @@
-@import url('https://fonts.googleapis.com/css?family=Alata&display=swap');
-@import url('https://fonts.googleapis.com/css?family=Poppins:300,300i,500,500i,700');
-@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap');
-@import url('https://fonts.googleapis.com/css?family=Kulim+Park&display=swap');
-@import url('https://fonts.googleapis.com/css?family=Nunito&display=swap');
-@import url("https://fonts.googleapis.com/css?family=Manrope:300,400,500,600,700&display=swap&subset=latin-ext");
-@import url("https://api.ragestudio.net/fonts/netflix_sans/font.css");
-@import url("https://api.ragestudio.net/fonts/trueno/font.css");
-
diff --git a/packages/comty/src/theme/base/index.less b/packages/comty/src/theme/base/index.less
deleted file mode 100644
index ebd7030f..00000000
--- a/packages/comty/src/theme/base/index.less
+++ /dev/null
@@ -1,385 +0,0 @@
-@import './vars.less';
-@import './fonts-import.css';
-
-@import './layout/Primary_Layout.less';
-@import './layout/LeftSider.less';
-
-@import './components/PostCard.less';
-
-
-// Resolutions variables
-@screen-sm: 48em; // 768px
-@screen-md: 64em; // 1024px
-@screen-lg: 85.375em; // 1366px
-@screen-xl: 120em; // 1920px
-@screen-xxl: 160em; // 2560px
-
-::-webkit-scrollbar {
- position: absolute;
- width: 14px;
- height: 18px;
- }
-
-::-webkit-scrollbar-thumb {
- height: 6px;
- border: 4px solid rgba(0, 0, 0, 0);
- background-clip: padding-box;
- margin: 5px 10px 5px 5px;
- -webkit-border-radius: 7px;
- background-color: rgba(0, 0, 0, 0.15);
- -webkit-box-shadow: inset -1px -1px 0 rgba(0, 0, 0, 0.05), inset 1px 1px 0 rgba(0, 0, 0, 0.05);
-}
-::-webkit-scrollbar-button {
- width: 0;
- height: 0;
- display: none;
-}
-::-webkit-scrollbar-corner {
- background-color: transparent;
-}
-
-.app{
- &.overlayActive {
- .app_layout_container{
- filter: saturate(10%);
- transform: translate(-150px, 0);// to do: get from overlay direction variable
- }
- }
-
- &.interfaced{
- .app_layout_container{
- height: 98%;
- }
- }
-
- &.mobile{
- .app_layout_container {
- width: 100%;
- padding: 0;
- overflow-y: overlay;
- overflow-x: hidden;
- min-width: unset;
- }
- .app_layout_content{
- padding: 35px 15px 15px;
- }
- }
-
- &.dark_mode{
- :global{
- filter: invert(100%);
- img, svg, video {
- filter: invert(100%);
- color: @__app_background;
- }
- }
- }
-}
-
-#app {
- -webkit-app-region: no-drag;
- overflow: hidden;
- position: absolute;
- bottom: 0;
-
- background-repeat: repeat-x;
- background-size: cover;
- background-position-y: center;
- background-color: transparent;
- margin: auto;
- height: 100vh;
- width: 100vw;
-
- transition: all 150ms linear;
-}
-
-
-body {
- text-rendering: optimizeLegibility!important;
- -webkit-app-region: no-drag;
-
- scroll-behavior: smooth;
- height: 100vh;
-
- overflow: hidden;
-
- font-size: 1em;
-
- font-family: @__app_secondaryFont;
- color: @__app_color!important;
- background-color: @__app_background;
-
- &.dark{
- background-color: @__app_color;
- }
-}
-
-// Layout
-.app_layout_container {
- background-color: transparent;
- transition: all 150ms ease-in-out;
- backdrop-filter: blur(2px);
-
- overflow-x: hidden;
- // overflow-y: overlay;
-
- width: auto;
- height: 100vh;
- padding: 15px 0;
- align-self: baseline;
-
- position: relative;
- bottom: 0;
- display: flex;
- align-self: center;
-
- max-width: 750px;
- min-width: 570px;
-}
-
-.app_layout_content {
- vertical-align: middle;
- width: 100%;
- padding: @__app_layout_content_padding;
- transition: all 150ms ease-in-out;
-}
-
-
-// Right Sidebar
-@__app_overlay_padding: 30px 30px 30px 35px;
-.app_right_sidebar_wrapper {
- opacity: 1;
- height: 100%;
- width: 100%;
-
- max-width: @Overlay_wrapper_maxwidth;
- min-width: 200px;
-
- display: flex;
- z-index: 50;
-
- padding: @__app_overlay_padding;
-
- @media (max-width: @screen-md) {
- padding: 30px 5px;
- }
-
- transition: all @__app_SwapDuration ease-in-out;
-
- &.swapped {
- opacity: 0;
- transform: translate(100%, 0);
- }
-}
-
-.app_right_sidebar_content{
- height: 100%;
- width: 100%;
- > div {
- margin-bottom: 35px;
- }
-}
-
-// Overlay
-.app_overlay_wrapper {
- user-select: none;
- position: absolute;
- right: 0;
- top: 0;
- z-index: 50;
-
- height: 100%;
- width: 0;
- backdrop-filter: blur(2px);
-
- &.half {
- padding: @__app_overlay_padding;
- background-color: #2d2d2d;
- color: @Overlay_container1_active_color;
- width: 26vw;
- }
-
- &.full{
- padding: @__app_overlay_padding;
- max-width: none;
- background-color: transparent;
- position: absolute;
- width: 100vw;
- height: 100vh;
- }
-
- transition: all @__app_SwapDuration ease-in-out;
- border-radius: @__Global_layout_border-rd;
-}
-
-.app_overlay_content {
- height: 100%;
- width: 100%;
-
- max-width: @Overlay_wrapper_maxwidth;
- min-width: 200px;
-
- display: flex;
- z-index: 50;
-
- right: 0;
- padding: @__app_overlay_padding;
-
- color: @Overlay_container1_def_color;
-
- transition: all @__app_SwapDuration ease-in-out;
-}
-
-.app_overlay_content_body{
- height: 100%;
- width: 100%;
- word-break: break-all;
-
- > div {
- margin-bottom: 35px;
- }
-}
-
-.app_overlay_backButton{
- margin: 0 0 15px;
- background-color: #fff;
- border-radius: 8px;
- color: @Overlay_container_1_btn_color;
- background-color: @Overlay_container_1_btn_backgroud;
- border-color: transparent;
- border-radius: 12px;
-}
-
-.app_overlay_backButton:hover {
- box-shadow: @Overlay_container_1_btn_shadow;
- transition: all @__Global_Components_transitions_dur linear;
-}
-
-// Streaming Drawer
-.app_streamingPanel_wrapper {
- h1 {
- color: #fff;
- }
-
-}
-
-.app_streamingPanel_content {
- h1 {
- color: #333;
- }
-
- display: inline-block;
- align-items: center;
- margin: auto;
- color: #333;
- border-radius: 14px;
- background-color: #fff;
- width: 100%;
- padding: 40px;
-}
-
-.app_streamingPanel_onlivetag {
- color: #9597A1;
- background-color: #cecece;
- padding: 5px;
- border-radius: 5px;
- text-align: center;
- font-size: 14;
-
- transition: all 150ms ease-in-out;
-
- &.active {
- color: #fff;
- background-color: red;
- }
-}
-
-
-.app_streamingPanel_connectionIndicator {
- background-color: #cecece;
- width: 1em;
- height: 1em;
-
- border-radius: 24px;
- transition: all 150ms ease-in-out;
- margin-right: 12px;
-
- &.active {
- background-color: #38b000;
- }
-}
-
-.app_streamingPanel_cardBody {
- > div {
- margin-bottom: 15px;
- }
-}
-
-.app_streamingPanel_hiddenkey {
- text-align: center;
- background-color: #cecece;
- border-radius: 7px;
- padding: 12px 0;
- filter: blur(4px);
- transition: all 150ms ease-in-out;
-
- user-select: all;
-
-
-}
-
-.app_streamingPanel_hiddenkey:hover {
- filter: none;
-}
-
-// CardComponent (External Module)
-.cardComponent_wrapper {
- width: 100%;
- height: 100%;
-
- background-color: #fff;
- border-radius: 8px;
- padding: 10px;
-
-
- h1,h2,h3,h4{
- color: #9597A1;
- font-family: Netflix Sans;
- font-style: normal;
- font-weight: 300;
- font-size: 12px;
- line-height: 15px;
- }
-}
-
-
-
-// Media queries
-@media (min-width: @screen-sm){
- ::-webkit-scrollbar{
- display: none;
- }
-}
-
-@media (min-width: @screen-md) {
- .app_layout_container{
- min-width: 750px;
- }
- .app_layout_content{
- padding: 0;
- }
-}
-
-@media (min-width: @screen-lg) {
- .app_layout_container{
- min-width: 1112px;
- }
-}
-
-// @media (min-width: @screen-xl) {
-
-// }
-
-// @media (min-width: @screen-xxl) {
-
-// }
diff --git a/packages/comty/src/theme/base/layout/LeftSider.less b/packages/comty/src/theme/base/layout/LeftSider.less
deleted file mode 100644
index 59f59e70..00000000
--- a/packages/comty/src/theme/base/layout/LeftSider.less
+++ /dev/null
@@ -1,4 +0,0 @@
-@left_sider_color: @__app_color;
-@left_sider_sizeIcons: 19px;
-@left_sider_menu__onhover_backgroud: rgb(80, 80, 80);
-@left_sider_menu__onhover_color: rgb(80, 80, 80);
\ No newline at end of file
diff --git a/packages/comty/src/theme/base/layout/Primary_Layout.less b/packages/comty/src/theme/base/layout/Primary_Layout.less
deleted file mode 100644
index f20346da..00000000
--- a/packages/comty/src/theme/base/layout/Primary_Layout.less
+++ /dev/null
@@ -1,7 +0,0 @@
-@primary_layout_backgroud: #F8F6F8; // #2d2d2d;
-
-@primary_layout_container_backgroud: @__Global_layout_backgroud;
-@primary_layout_container_border-rd: @__Global_layout_border-rd;
-
-@primary_layout_content_padding: 0 40px 20px 0;
-
diff --git a/packages/comty/src/theme/base/vars.less b/packages/comty/src/theme/base/vars.less
deleted file mode 100644
index 01cf6ff6..00000000
--- a/packages/comty/src/theme/base/vars.less
+++ /dev/null
@@ -1,47 +0,0 @@
-@__app_background: rgb(249, 249, 249);
-@__app_backgroundAccent: rgb(162, 162, 162);
-@__app_color: rgb(51, 51, 51);
-@__app_Accent:#2d2d2d;
-
-@__app_winavar_height: 25px;
-
-@__app_generalFont: "Poppins", sans-serif;
-@__app_secondaryFont: "Manrope", sans-serif;
-
-@__app_SwapDuration: 170ms;
-
-@__app_layout_content_padding: 0 40px 20px 0;
-
-
-@__Global_layout_backgroud: #F9F9F9;
-@__Global_layout_color: #2d2d2d;
-@__Global_layout_border-rd: 27px 0 0 0;
-@__Global_layout_transitions-dur: 200ms;
-@__Global_Components_transitions_dur: 150ms;
-
-
-@transition-ease-in: all 0.3s ease-out;
-@transition-ease-out: all 0.3s ease-out;
-@transition-ease-inout: all 150ms ease-in-out;
-
-
-@Overlay_wrapper_hidden_width: 22vw;
-@Overlay_wrapper_showFull_width: 94.2%;
-@Overlay_wrapper_showHalf_width: 35vw;
-
-@Overlay_container_1_btn_backgroud: #4c4c4c;
-@Overlay_container_1_btn_color: #fff;
-@Overlay_container_1_btn_shadow: 0px 0px 10px 0px rgba(255, 255, 255, 0.205);
-
-
-@Overlay_wrapper_maxwidth: 23vw;
-
-@Overlay_container1_def_color: #201F23;
-@Overlay_container1_active_color: #fff;
-
-@Overlay_container2_active_width: 35vw;
-@Overlay_container2_color: #201F23;
-@Overlay_container2_backgroud: #fff;
-
-@Overlay_container1_padding: 30px 70px 30px 75px;
-@Overlay_container2_padding: 20px 15px 15px 15px;
\ No newline at end of file
diff --git a/packages/comty/src/theme/index.js b/packages/comty/src/theme/index.js
deleted file mode 100644
index 227d19fd..00000000
--- a/packages/comty/src/theme/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const { resolve } = require('path');
-const lessToJs = require('less-vars-to-js');
-const fs = require('fs');
-
-const convToVars = file => lessToJs(fs.readFileSync(resolve(__dirname, file), 'utf8'))
-
-module.exports = convToVars('./index.less')
\ No newline at end of file
diff --git a/packages/comty/src/theme/index.less b/packages/comty/src/theme/index.less
deleted file mode 100644
index 0bdefb44..00000000
--- a/packages/comty/src/theme/index.less
+++ /dev/null
@@ -1 +0,0 @@
-@import './base/index.less';
diff --git a/packages/comty/typings.d.ts b/packages/comty/typings.d.ts
deleted file mode 100644
index 06c8a5b8..00000000
--- a/packages/comty/typings.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-declare module '*.css';
-declare module '*.less';
-declare module '*.png';
-declare module '*.svg' {
- export function ReactComponent(
- props: React.SVGProps,
- ): React.ReactElement;
- const url: string;
- export default url;
-}
diff --git a/packages/comty-electron/electron-builder.yml b/packages/desktop/electron-builder.yml
similarity index 62%
rename from packages/comty-electron/electron-builder.yml
rename to packages/desktop/electron-builder.yml
index 6cac0d4d..abc30b12 100644
--- a/packages/comty-electron/electron-builder.yml
+++ b/packages/desktop/electron-builder.yml
@@ -1,6 +1,6 @@
-appId: com.example.bruh
-productName: Bruh
-copyright: Copyright © Bruh
+appId: com.ragestudio.comty
+productName: Comty
+copyright: Copyright © RageStudio
directories:
output: dist
buildResources: resources
diff --git a/packages/comty-electron/main/configs/config.js b/packages/desktop/main/configs/config.js
similarity index 100%
rename from packages/comty-electron/main/configs/config.js
rename to packages/desktop/main/configs/config.js
diff --git a/packages/comty-electron/main/icon.png b/packages/desktop/main/icon.png
similarity index 100%
rename from packages/comty-electron/main/icon.png
rename to packages/desktop/main/icon.png
diff --git a/packages/desktop/main/index.js b/packages/desktop/main/index.js
new file mode 100644
index 00000000..e331ca7f
--- /dev/null
+++ b/packages/desktop/main/index.js
@@ -0,0 +1,234 @@
+const path = require("path")
+const {
+ app,
+ BrowserWindow,
+ ipcMain,
+ Tray,
+ Menu,
+ MenuItem,
+ dialog,
+ shell,
+ screen,
+ BrowserView,
+ systemPreferences,
+ Notification,
+ globalShortcut
+} = require("electron")
+const log = require("electron-log")
+const packagejson = require("../../../package.json")
+const is = require("electron-is")
+const waitOn = require("wait-on")
+
+console.log(is.dev())
+
+let app_path = is.dev() ? "https://indev.comty.pw" : `file://${path.join(__dirname, "..", "renderer")}/index.html`;
+let mainWindow;
+let tray;
+let watcher;
+
+// This gets rid of this: https://github.com/electron/electron/issues/13186
+process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true
+// app.commandLine.appendSwitch("disable-web-security")
+//app.commandLine.appendSwitch("disable-gpu-vsync=gpu")
+app.commandLine.appendSwitch("disable-features", "OutOfBlinkCors")
+
+const gotTheLock = app.requestSingleInstanceLock()
+const notifySupport = Notification.isSupported()
+
+// Prevent multiple instances
+if (!gotTheLock) {
+ app.quit()
+}
+
+function relaunchApp() {
+ mainWindow.close()
+ app.relaunch()
+}
+
+function resumeApp() {
+ if (mainWindow) {
+ mainWindow.show()
+ mainWindow.focus()
+ } else {
+ createWindow()
+ }
+}
+
+function notify(params) {
+ if (!notifySupport || !params) return false
+ let options = {
+ title: "",
+ body: "",
+ icon: null,
+ timeoutType: "default"
+ }
+
+ const keys = Object.keys(params)
+ const values = Object.values(params)
+
+ for (let i = 0; i < keys.length; i++) {
+ options[keys[i]] = values[i]
+ }
+
+ new Notification(options).show()
+}
+
+function createWindow() {
+ mainWindow = new BrowserWindow({
+ title: packagejson.title,
+ icon: path.join(__dirname, "./icon.png"),
+ width: 1100,
+ height: 700,
+ minWidth: 1256,
+ minHeight: 755,
+ show: true,
+ frame: false,
+ transparent: false,
+ hasShadow: true,
+ //webgl: true,
+ visualEffectState: "followWindow",
+ backgroundColor: "#00ffffff",
+ webPreferences: {
+ //enableRemoteModule: true,
+ enableBlinkFeatures: true,
+ experimentalFeatures: true,
+ nodeIntegration: true,
+ // Disable in dev since I think hot reload is messing with it
+ webSecurity: !is.dev()
+ }
+ })
+
+ if (is.dev()) {
+ app.commandLine.appendSwitch("remote-debugging-port", "9222")
+ globalShortcut.register("CommandOrControl+R", () => {
+ mainWindow.reload()
+ })
+
+ globalShortcut.register("F5", () => {
+ mainWindow.reload()
+ })
+ }
+
+ mainWindow.webContents.session.webRequest.onHeadersReceived(
+ {
+ urls: ["http://*/*", "https://*/*"]
+ },
+ (details, callback) => {
+ delete details.responseHeaders["Access-Control-Allow-Origin"]
+ delete details.responseHeaders["access-control-allow-origin"]
+ if (details.url.includes("www.google-analytics.com")) {
+ details.responseHeaders["Access-Control-Allow-Origin"] = [app_path]
+ } else {
+ details.responseHeaders["Access-Control-Allow-Origin"] = ["*"]
+ }
+ callback({
+ cancel: false,
+ responseHeaders: details.responseHeaders
+ })
+ }
+ )
+
+ mainWindow.loadURL(app_path)
+ mainWindow.focus()
+
+ if (is.dev()) {
+ mainWindow.webContents.openDevTools()
+ }
+
+ // const handleRedirect = (e, url) => {
+ // if (url !== mainWindow.webContents.getURL()) {
+ // e.preventDefault()
+ // shell.openExternal(url)
+ // }
+ // };
+
+ // mainWindow.webContents.on("will-navigate", handleRedirect)
+ // mainWindow.webContents.on("new-window", handleRedirect)
+}
+
+app.on("ready", () => {
+ if (is.dev()) {
+ loadWindow = new BrowserWindow({
+ width: 700,
+ height: 500,
+ frame: false,
+ resizable: false,
+ center: true,
+ transparent: true,
+ backgroundColor: "#00000000",
+ });
+
+ loadWindow.loadURL(`file://${__dirname}/statics/loading_dev.html`)
+
+ notify({ title: "Starting development server..." })
+
+ // waitOn({ resources: [app_path] }, function (err) {
+ // if (err) {
+ // return log.log(err)
+ // }
+ // })
+
+ createWindow()
+ loadWindow.close()
+ } else {
+ createWindow()
+ }
+})
+
+app.on("window-all-closed", () => {
+ mainWindow = null;
+})
+
+app.on("before-quit", async () => {
+ mainWindow.removeAllListeners("close");
+ mainWindow = null;
+})
+
+ipcMain.handle("update-progress-bar", (event, p) => {
+ mainWindow.setProgressBar(p);
+})
+
+ipcMain.handle("hide-window", () => {
+ if (mainWindow) {
+ mainWindow.hide();
+ }
+})
+
+ipcMain.handle("show-window", () => {
+ if (mainWindow) {
+ mainWindow.show();
+ mainWindow.focus();
+ }
+})
+
+ipcMain.handle("min-max-window", () => {
+ if (mainWindow.isMaximized()) {
+ mainWindow.unmaximize();
+ } else if (mainWindow.maximizable) {
+ mainWindow.maximize();
+ }
+})
+
+ipcMain.handle("getSystemPreferences", () => {
+ return systemPreferences
+})
+
+ipcMain.handle("minimize-window", () => {
+ mainWindow.minimize();
+})
+
+ipcMain.handle("quit-app", () => {
+ app.quit();
+})
+
+ipcMain.handle("open-devtools", () => {
+ mainWindow.webContents.openDevTools({ mode: "undocked" });
+})
+
+ipcMain.handle("appRelaunch", () => {
+ relaunchApp()
+})
+
+ipcMain.handle("inspectElement", (event, payload) => {
+ mainWindow.inspectElement(payload.x, payload.y)
+})
\ No newline at end of file
diff --git a/packages/comty-electron/main/statics/loading.css b/packages/desktop/main/statics/loading.css
similarity index 100%
rename from packages/comty-electron/main/statics/loading.css
rename to packages/desktop/main/statics/loading.css
diff --git a/packages/comty-electron/main/statics/loading.html b/packages/desktop/main/statics/loading.html
similarity index 100%
rename from packages/comty-electron/main/statics/loading.html
rename to packages/desktop/main/statics/loading.html
diff --git a/packages/comty-electron/main/statics/loading_dev.html b/packages/desktop/main/statics/loading_dev.html
similarity index 100%
rename from packages/comty-electron/main/statics/loading_dev.html
rename to packages/desktop/main/statics/loading_dev.html
diff --git a/packages/desktop/package.json b/packages/desktop/package.json
new file mode 100644
index 00000000..19c7ca94
--- /dev/null
+++ b/packages/desktop/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "comty-desktop",
+ "version": "0.0.1",
+ "main": "main/index.js",
+ "license": "MIT",
+ "scripts": {
+ "start": "electron ."
+ },
+ "dependencies": {
+ "electron": "17.1.2",
+ "electron-log": "^3.0.0",
+ "electron-is": "^1.0.0",
+ "wait-on": "^2.0.0"
+ }
+}
diff --git a/packages/server/.babelrc b/packages/server/.babelrc
deleted file mode 100644
index 5bdf02fa..00000000
--- a/packages/server/.babelrc
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "presets": [
- [
- "@babel/preset-env",
- {
- "targets": {
- "node": 4
- }
- }
- ]
- ],
- "plugins": [
- "@babel/plugin-transform-runtime"
- ]
-}
\ No newline at end of file
diff --git a/packages/server/docker-compose.yml b/packages/server/docker-compose.yml
new file mode 100644
index 00000000..15710489
--- /dev/null
+++ b/packages/server/docker-compose.yml
@@ -0,0 +1,9 @@
+version: "3"
+
+services:
+ db:
+ image: "mongo:5.0"
+ ports:
+ - "27017:27017"
+ volumes:
+ - "./d_data/db:/data/db"
\ No newline at end of file
diff --git a/packages/server/package.json b/packages/server/package.json
index 79524d70..b703c5c9 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,30 +1,31 @@
{
- "name": "@ragestudio/server",
- "version": "0.12.8",
+ "name": "@comty/server",
+ "version": "0.15.0",
"main": "dist/index.js",
- "types": "dist/index.d.ts",
- "publishConfig": {
- "access": "public"
- },
- "files": [
- "dist",
- "src"
- ],
"scripts": {
- "start": "nodemon --inspect --exec babel-node ./src"
+ "dev": "nodemon --ignore dist/ --exec corenode-node ./src/index.js"
},
"license": "MIT",
"dependencies": {
- "@babel/node": "^7.12.10",
- "@babel/plugin-proposal-class-properties": "^7.12.1",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
- "@babel/plugin-proposal-optional-chaining": "^7.12.7",
- "@babel/plugin-proposal-private-methods": "^7.12.1",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-transform-runtime": "^7.12.10",
- "@babel/runtime": "^7.12.5",
- "@nodecorejs/cloudlink": "^0.15.1",
- "babel-node": "^0.0.1-security",
- "nodemon": "^2.0.7"
+ "@corenode/utils": "0.28.26",
+ "@nanoexpress/middleware-file-upload": "^1.0.6",
+ "axios": "0.25.0",
+ "bcrypt": "5.0.1",
+ "connect-mongo": "4.6.0",
+ "corenode": "0.28.26",
+ "dicebar_lib": "1.0.1",
+ "jsonwebtoken": "8.5.1",
+ "linebridge": "0.10.13",
+ "moment": "2.29.1",
+ "mongoose": "6.1.9",
+ "nanoid": "3.2.0",
+ "passport": "0.5.2",
+ "passport-jwt": "4.0.0",
+ "passport-local": "1.0.0",
+ "path-to-regexp": "6.2.0"
+ },
+ "devDependencies": {
+ "cross-env": "^7.0.3",
+ "nodemon": "^2.0.15"
}
}
diff --git a/packages/server/src/controllers/ConfigController/index.js b/packages/server/src/controllers/ConfigController/index.js
new file mode 100644
index 00000000..7599d9f5
--- /dev/null
+++ b/packages/server/src/controllers/ConfigController/index.js
@@ -0,0 +1,12 @@
+import { ComplexController } from "linebridge/dist/classes"
+
+export default class ConfigController extends ComplexController {
+ static refName = "ConfigController"
+ static useMiddlewares = ["withAuthentication", "onlyAdmin"]
+
+ post = {
+ "/update_config": async (req, res) => {
+
+ },
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/controllers/FilesController/index.js b/packages/server/src/controllers/FilesController/index.js
new file mode 100644
index 00000000..5b9f5c21
--- /dev/null
+++ b/packages/server/src/controllers/FilesController/index.js
@@ -0,0 +1,65 @@
+import { ComplexController } from "linebridge/dist/classes"
+import path from "path"
+import fs from "fs"
+import stream from "stream"
+
+function resolveToUrl(filepath) {
+ return `${global.globalPublicURI}/uploads/${filepath}`
+}
+
+export default class FilesController extends ComplexController {
+ static refName = "FilesController"
+
+ get = {
+ "/uploads/:id": (req, res) => {
+ const filePath = path.join(global.uploadPath, req.params?.id)
+
+ const readStream = fs.createReadStream(filePath)
+ const passTrough = new stream.PassThrough()
+
+ stream.pipeline(readStream, passTrough, (err) => {
+ if (err) {
+ return res.status(400)
+ }
+ })
+
+ return passTrough.pipe(res)
+ }
+ }
+
+ post = {
+ "/upload": {
+ middlewares: ["withAuthentication", "fileUpload"],
+ fn: async (req, res) => {
+ const urls = []
+ const failed = []
+
+ if (!fs.existsSync(global.uploadPath)) {
+ await fs.promises.mkdir(global.uploadPath, { recursive: true })
+ }
+
+ if (req.files) {
+ for await (let file of req.files) {
+ try {
+ const filename = `${req.decodedToken.user_id}-${new Date().getTime()}-${file.filename}`
+
+ const diskPath = path.join(global.uploadPath, filename)
+
+ await fs.promises.writeFile(diskPath, file.data)
+
+ urls.push(resolveToUrl(filename))
+ } catch (error) {
+ console.log(error)
+ failed.push(file.filename)
+ }
+ }
+ }
+
+ return res.json({
+ urls: urls,
+ failed: failed,
+ })
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/controllers/PostsController/index.js b/packages/server/src/controllers/PostsController/index.js
new file mode 100644
index 00000000..de26bbf1
--- /dev/null
+++ b/packages/server/src/controllers/PostsController/index.js
@@ -0,0 +1,171 @@
+import { ComplexController } from "linebridge/dist/classes"
+import { Schematized } from "../../lib"
+import { Post, User } from "../../models"
+
+export default class PostsController extends ComplexController {
+ static refName = "PostsController"
+ static useMiddlewares = ["withAuthentication"]
+
+ methods = {
+ createPost: async (payload) => {
+ const { user_id, message } = payload
+ const userData = await User.findById(user_id)
+
+ const post = new Post({
+ user_id: typeof user_id === "object" ? user_id.toString() : user_id,
+ message: String(message).toString(),
+ created_at: new Date().getTime(),
+ })
+
+ await post.save()
+
+ global.wsInterface.io.emit(`new.post`, {
+ ...post.toObject(),
+ user: userData.toObject(),
+ })
+ global.wsInterface.io.emit(`new.post.${post.user_id}`, {
+ ...post.toObject(),
+ user: userData.toObject(),
+ })
+
+ return post
+ },
+ likePost: async (payload) => {
+ const { user_id, post_id } = payload
+ const userData = await User.findById(user_id)
+ const postData = await Post.findById(post_id)
+
+ if (postData.likes.includes(user_id)) {
+ postData.likes = postData.likes.filter(id => id !== user_id)
+ await postData.save()
+
+ return false
+ }
+
+ postData.likes.push(user_id)
+ await postData.save()
+
+ global.wsInterface.io.emit(`like.post`, {
+ ...postData.toObject(),
+ user: userData.toObject(),
+ })
+ global.wsInterface.io.emit(`like.post.${postData.user_id}`, {
+ ...postData.toObject(),
+ user: userData.toObject(),
+ })
+ global.wsInterface.io.emit(`like.post.${post_id}`, {
+ ...postData.toObject(),
+ user: userData.toObject(),
+ })
+
+ return postData
+ },
+ unlikePost: async (payload) => {
+ const { user_id, post_id } = payload
+ const userData = await User.findById(user_id)
+ const postData = await Post.findById(post_id)
+
+ postData.likes = postData.likes.filter(id => id !== user_id)
+ await postData.save()
+
+ global.wsInterface.io.emit(`unlike.post`, {
+ ...postData.toObject(),
+ user: userData.toObject(),
+ })
+ global.wsInterface.io.emit(`unlike.post.${postData.user_id}`, {
+ ...postData.toObject(),
+ user: userData.toObject(),
+ })
+ global.wsInterface.io.emit(`unlike.post.${post_id}`, {
+ ...postData.toObject(),
+ user: userData.toObject(),
+ })
+
+ return postData
+ },
+ }
+
+ get = {
+ "/feed": Schematized({
+ select: ["user_id"]
+ }, async (req, res) => {
+ const feedLength = req.query?.feedLength ?? 25
+
+ // fetch posts from later of lenghtOffset with a maximum of feedLength
+ // make sort by date descending
+ let posts = await Post.find(req.selection)
+ .sort({ created_at: -1 })
+ .limit(feedLength)
+
+ // fetch and add user data to each post
+ posts = posts.map(async (post) => {
+ const user = await User.findById(post.user_id)
+
+ return {
+ ...post.toObject(),
+ user: user.toObject(),
+ }
+ })
+
+ posts = await Promise.all(posts)
+
+ return res.json(posts)
+ }),
+ }
+
+ put = {
+ "/post": Schematized({
+ required: ["message"],
+ select: ["message"],
+ }, async (req, res) => {
+ const post = await this.methods.createPost({
+ user_id: req.user.id,
+ message: req.selection.message,
+ })
+
+ return res.json(post)
+ }),
+ "/like": Schematized({
+ required: ["post_id"],
+ select: ["post_id"],
+ }, async (req, res) => {
+ const post = await this.methods.likePost({
+ user_id: req.user._id.toString(),
+ post_id: req.selection.post_id,
+ }).catch((err) => {
+ return false
+ })
+
+ if (!post) {
+ return res.json({
+ sucess: false,
+ })
+ }
+
+ return res.json({
+ sucess: true,
+ })
+ }),
+ "/unlike": Schematized({
+ required: ["post_id"],
+ select: ["post_id"],
+ }, async (req, res) => {
+ const post = await this.methods.unlikePost({
+ user_id: req.user._id.toString(),
+ post_id: req.selection.post_id,
+ }).catch((err) => {
+ return false
+ })
+
+ if (!post) {
+ return res.json({
+ sucess: false,
+ })
+ }
+
+ return res.json({
+ sucess: true,
+ })
+ }),
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/controllers/PublicController/index.js b/packages/server/src/controllers/PublicController/index.js
new file mode 100644
index 00000000..664e431c
--- /dev/null
+++ b/packages/server/src/controllers/PublicController/index.js
@@ -0,0 +1,17 @@
+import { ComplexController } from "linebridge/dist/classes"
+
+export default class PublicController extends ComplexController {
+ static refName = "PublicController"
+
+ post = {
+ "/only_managers_test": {
+ middlewares: ["withAuthentication", "permissions"],
+ fn: (req, res) => {
+ return res.json({
+ message: "Congrats!, Only managers can access this route (or you are an admin)",
+ assertedPermissions: req.assertedPermissions
+ })
+ },
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/controllers/RolesController/index.js b/packages/server/src/controllers/RolesController/index.js
new file mode 100644
index 00000000..d00dbed7
--- /dev/null
+++ b/packages/server/src/controllers/RolesController/index.js
@@ -0,0 +1,113 @@
+import { ComplexController } from "linebridge/dist/classes"
+import { Role, User } from "../../models"
+import { Schematized } from "../../lib"
+
+export default class RolesController extends ComplexController {
+ static refName = "RolesController"
+ static useMiddlewares = ["roles"]
+
+ get = {
+ "/roles": Schematized({
+ select: ["user_id", "username"],
+ }, async (req, res) => {
+ const roles = await Role.find()
+
+ return res.json(roles)
+ }),
+ "/user_roles": {
+ middlewares: ["withAuthentication"],
+ fn: Schematized({
+ select: ["username"],
+ }, async (req, res) => {
+ const user = await User.findOne(req.selection)
+
+ if (!user) {
+ return res.status(404).json({ error: "No user founded" })
+ }
+
+ return res.json(user.roles)
+ })
+ },
+ }
+
+ post = {
+ "/role": {
+ middlewares: ["withAuthentication"],
+ fn: Schematized({
+ required: ["name"],
+ select: ["name", "description"],
+ }, async (req, res) => {
+ await Role.findOne(req.selection).then((data) => {
+ if (data) {
+ return res.status(409).json("This role is already created")
+ }
+
+ let role = new Role({
+ name: req.selection.name,
+ description: req.selection.description,
+ })
+
+ role.save()
+
+ return res.json(role)
+ })
+ })
+ },
+ "/update_user_roles": {
+ middlewares: ["withAuthentication"],
+ fn: Schematized({
+ required: ["update"],
+ select: ["update"],
+ }, async (req, res) => {
+ // check if issuer user is admin
+ if (!req.isAdmin()) {
+ return res.status(403).send("You do not have administrator permission")
+ }
+
+ if (!Array.isArray(req.selection.update)) {
+ return res.status(400).send("Invalid update request")
+ }
+
+ req.selection.update.forEach(async (update) => {
+ const user = await User.findById(update._id).catch(err => {
+ return false
+ })
+
+ console.log(update.roles)
+
+ if (user) {
+ user.roles = update.roles
+
+ await user.save()
+ }
+ })
+
+ return res.send("done")
+ }),
+ },
+ }
+
+ delete = {
+ "/role": {
+ middlewares: ["withAuthentication"],
+ fn: Schematized({
+ required: ["name"],
+ select: ["name"],
+ }, async (req, res) => {
+ if (req.selection.name === "admin") {
+ return res.status(409).json("You can't delete admin role")
+ }
+
+ await Role.findOne(req.selection).then((data) => {
+ if (!data) {
+ return res.status(404).json("This role is not found")
+ }
+
+ data.remove()
+
+ return res.json(data)
+ })
+ })
+ },
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/controllers/SessionController/index.js b/packages/server/src/controllers/SessionController/index.js
new file mode 100644
index 00000000..7cfee5b0
--- /dev/null
+++ b/packages/server/src/controllers/SessionController/index.js
@@ -0,0 +1,110 @@
+import { ComplexController } from "linebridge/dist/classes"
+import { Session } from "../../models"
+import jwt from "jsonwebtoken"
+
+export default class SessionController extends ComplexController {
+ static refName = "SessionController"
+
+ get = {
+ "/sessions": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res) => {
+ // get current session _id
+ const { _id } = req.user
+ const sessions = await Session.find({ user_id: _id }, { token: 0 })
+
+ return res.json(sessions)
+ },
+ },
+ "/current_session": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res) => {
+ return res.json(req.currentSession)
+ }
+ },
+ }
+
+ post = {
+ "/validate_session": {
+ middlewares: ["useJwtStrategy"],
+ fn: async (req, res) => {
+ const token = req.body.session
+
+ let result = {
+ expired: false,
+ valid: true
+ }
+
+ await jwt.verify(token, req.jwtStrategy.secretOrKey, async (err, decoded) => {
+ if (err) {
+ result.valid = false
+ result.error = err.message
+
+ if (err.message === "jwt expired") {
+ result.expired = true
+ }
+ return
+ }
+
+ result = { ...result, ...decoded }
+
+ const sessions = await Session.find({ user_id: result.user_id })
+ const sessionsTokens = sessions.map((session) => {
+ if (session.user_id === result.user_id) {
+ return session.token
+ }
+ })
+
+ if (!sessionsTokens.includes(token)) {
+ result.valid = false
+ result.error = "Session token not found"
+ } else {
+ result.valid = true
+ }
+ })
+
+ return res.json(result)
+ },
+ },
+ }
+
+ delete = {
+ "/session": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res) => {
+ const { token, user_id } = req.body
+
+ if (typeof user_id === "undefined") {
+ return res.status(400).send("No user_id provided")
+ }
+ if (typeof token === "undefined") {
+ return res.status(400).send("No token provided")
+ }
+
+ const session = await Session.findOneAndDelete({ user_id, token })
+ if (session) {
+ return res.send("done")
+ }
+
+ return res.status(404).send("not found")
+ },
+ },
+ "/sessions": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res) => {
+ const { user_id } = req.body
+
+ if (typeof user_id === "undefined") {
+ return res.status(400).send("No user_id provided")
+ }
+
+ const allSessions = await Session.deleteMany({ user_id })
+ if (allSessions) {
+ return res.send("done")
+ }
+
+ return res.status(404).send("not found")
+ }
+ },
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/controllers/UserController/index.js b/packages/server/src/controllers/UserController/index.js
new file mode 100644
index 00000000..a5d975e9
--- /dev/null
+++ b/packages/server/src/controllers/UserController/index.js
@@ -0,0 +1,249 @@
+import { ComplexController } from "linebridge/dist/classes"
+import passport from "passport"
+
+import { User } from "../../models"
+import { Token, Schematized, createUser } from "../../lib"
+import SessionController from "../SessionController"
+import _ from "lodash"
+
+const AllowedUserUpdateKeys = [
+ "avatar",
+ "username",
+ "email",
+ "fullName",
+ "verified",
+]
+
+export default class UserController extends ComplexController {
+ static refName = "UserController"
+
+ methods = {
+ createNew: async (payload) => {
+ const user = await createUser(payload)
+
+ // maybe for the future can implement a event listener for this
+
+ return user
+ },
+ update: async (payload) => {
+ if (typeof payload.user_id === "undefined") {
+ throw new Error("No user_id provided")
+ }
+ if (typeof payload.update === "undefined") {
+ throw new Error("No update provided")
+ }
+
+ let user = await User.findById(payload.user_id)
+
+ if (!user) {
+ throw new Error("User not found")
+ }
+
+ const updateKeys = Object.keys(payload.update)
+
+ updateKeys.forEach((key) => {
+ if (!AllowedUserUpdateKeys.includes(key)) {
+ return false
+ }
+
+ user[key] = payload.update[key]
+ })
+
+ await user.save()
+
+ global.wsInterface.io.emit(`user.update`, {
+ ...user.toObject(),
+ })
+ global.wsInterface.io.emit(`user.update.${payload.user_id}`, {
+ ...user.toObject(),
+ })
+
+ return user.toObject()
+ }
+ }
+
+ get = {
+ "/self": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res) => {
+ return res.json(req.user)
+ },
+ },
+ "/user": {
+ middlewares: ["withAuthentication"],
+ fn: Schematized({
+ select: ["_id", "username"],
+ }, async (req, res) => {
+ const user = await User.findOne(req.selection)
+
+ if (!user) {
+ return res.status(404).json({ error: "User not exists" })
+ }
+
+ return res.json(user)
+ }),
+ },
+ "/users": {
+ middlewares: ["withAuthentication"],
+ fn: Schematized({
+ select: ["_id", "username"],
+ }, async (req, res) => {
+ let result = []
+ let selectQueryKeys = []
+
+ if (Array.isArray(req.selection._id)) {
+ for await (let _id of req.selection._id) {
+ const user = await User.findById(_id).catch(err => {
+ return false
+ })
+ if (user) {
+ result.push(user)
+ }
+ }
+ } else {
+ result = await User.find(req.selection, { username: 1, fullName: 1, _id: 1, roles: 1, avatar: 1 })
+ }
+
+ if (req.query?.select) {
+ try {
+ req.query.select = JSON.parse(req.query.select)
+ } catch (error) {
+ req.query.select = {}
+ }
+
+ selectQueryKeys = Object.keys(req.query.select)
+ }
+
+ if (selectQueryKeys.length > 0) {
+ result = result.filter(user => {
+ let pass = false
+ const selectFilter = req.query.select
+
+ selectQueryKeys.forEach(key => {
+ if (Array.isArray(selectFilter[key]) && Array.isArray(user[key])) {
+ // check if arrays includes any of the values
+ pass = selectFilter[key].some(val => user[key].includes(val))
+ } else if (typeof selectFilter[key] === "object" && typeof user[key] === "object") {
+ // check if objects includes any of the values
+ Object.keys(selectFilter[key]).forEach(objKey => {
+ pass = user[key][objKey] === selectFilter[key][objKey]
+ })
+ }
+
+ // check if strings includes any of the values
+ if (typeof selectFilter[key] === "string" && typeof user[key] === "string") {
+ pass = selectFilter[key].split(",").some(val => user[key].includes(val))
+ }
+ })
+
+ return pass
+ })
+ }
+
+ if (!result) {
+ return res.status(404).json({ error: "Users not found" })
+ }
+
+ return res.json(result)
+ })
+ },
+ }
+
+ post = {
+ "/login": async (req, res) => {
+ passport.authenticate("local", { session: false }, async (error, user, options) => {
+ if (error) {
+ return res.status(500).json(`Error validating user > ${error.message}`)
+ }
+
+ if (!user) {
+ return res.status(401).json("Invalid credentials")
+ }
+
+ const token = await Token.createNewAuthToken(user, options)
+
+ return res.json({ token: token })
+ })(req, res)
+ },
+ "/logout": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res, next) => {
+ req.body = {
+ user_id: req.decodedToken.user_id,
+ token: req.jwtToken
+ }
+
+ return SessionController.delete(req, res, next)
+ },
+ },
+ "/register": Schematized({
+ required: ["username", "email", "password"],
+ select: ["username", "email", "password", "fullName"],
+ }, async (req, res) => {
+ const result = await this.methods.createNew(req.selection).catch((err) => {
+ return res.status(500).json(err.message)
+ })
+
+ return res.json(result)
+ }),
+ "/update_user": {
+ middlewares: ["withAuthentication", "roles"],
+ fn: Schematized({
+ required: ["_id", "update"],
+ select: ["_id", "update"],
+ }, async (req, res) => {
+ if (!req.selection.user_id) {
+ req.selection.user_id = req.user._id.toString()
+ }
+
+ if ((req.selection.user_id !== req.user._id.toString()) && (req.hasRole("admin") === false)) {
+ return res.status(403).json({ error: "You are not allowed to update this user" })
+ }
+
+ this.methods.update({
+ user_id: req.selection.user_id,
+ update: req.selection.update,
+ }).then((user) => {
+ return res.json({
+ ...user
+ })
+ })
+ .catch((err) => {
+ return res.send(500).json({
+ error: err.message
+ })
+ })
+ }),
+ },
+ "/unset_public_name": {
+ middlewares: ["withAuthentication"],
+ fn: Schematized({
+ select: ["user_id", "roles"],
+ }, async (req, res) => {
+ if (!req.selection.user_id) {
+ req.selection.user_id = req.user._id.toString()
+ }
+
+ if ((req.selection.user_id !== req.user._id.toString()) && (req.hasRole("admin") === false)) {
+ return res.status(403).json({ error: "You are not allowed to update this user" })
+ }
+
+ this.methods.update({
+ user_id: req.selection.user_id,
+ update: {
+ fullName: undefined
+ }
+ }).then((user) => {
+ return res.json({
+ ...user
+ })
+ })
+ .catch((err) => {
+ return res.send(500).json({
+ error: err.message
+ })
+ })
+ })
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/controllers/index.js b/packages/server/src/controllers/index.js
new file mode 100644
index 00000000..a19b7f97
--- /dev/null
+++ b/packages/server/src/controllers/index.js
@@ -0,0 +1,17 @@
+import { default as ConfigController } from "./ConfigController"
+import { default as RolesController } from "./RolesController"
+import { default as SessionController } from "./SessionController"
+import { default as UserController } from "./UserController"
+import { default as FilesController } from "./FilesController"
+import { default as PublicController } from "./PublicController"
+import { default as PostsController } from "./PostsController"
+
+export default [
+ PostsController,
+ ConfigController,
+ PublicController,
+ RolesController,
+ SessionController,
+ UserController,
+ FilesController,
+]
\ No newline at end of file
diff --git a/packages/server/src/index.js b/packages/server/src/index.js
index 4a7ebff1..047b704c 100644
--- a/packages/server/src/index.js
+++ b/packages/server/src/index.js
@@ -1,24 +1,298 @@
-import cloudlink from '@nodecorejs/cloudlink'
-
-let controllers = {
- TestController: {
- get: (req, res, next) => {
- console.log("Testing controller, it works!")
+Array.prototype.updateFromObjectKeys = function (obj) {
+ this.forEach((value, index) => {
+ if (obj[value] !== undefined) {
+ this[index] = obj[value]
}
+ })
+
+ return this
+}
+
+import path from "path"
+import LinebridgeServer from "linebridge/dist/server"
+import bcrypt from "bcrypt"
+import mongoose from "mongoose"
+import passport from "passport"
+import { User, Session, Config } from "./models"
+import jwt from "jsonwebtoken"
+
+const { Buffer } = require("buffer")
+const b64Decode = global.b64Decode = (data) => {
+ return Buffer.from(data, "base64").toString("utf-8")
+}
+const b64Encode = global.b64Encode = (data) => {
+ return Buffer.from(data, "utf-8").toString("base64")
+}
+
+const ExtractJwt = require("passport-jwt").ExtractJwt
+const LocalStrategy = require("passport-local").Strategy
+
+function parseConnectionString(obj) {
+ const { db_user, db_driver, db_name, db_pwd, db_hostname, db_port } = obj
+ return `${db_driver ?? "mongodb"}://${db_user ? `${db_user}` : ""}${db_pwd ? `:${db_pwd}` : ""}${db_user ? "@" : ""}${db_hostname ?? "localhost"}:${db_port ?? ""}/${db_name ?? ""}`
+}
+
+class Server {
+ constructor() {
+ this.env = process.env
+ this.listenPort = this.env.listenPort ?? 3000
+ this.wsListenPort = this.env.wsListenPort ?? 3001
+
+ this.controllers = require("./controllers").default
+ this.middlewares = require("./middlewares")
+
+ this.instance = new LinebridgeServer({
+ port: this.listenPort,
+ wsPort: this.wsListenPort,
+ headers: {
+ "Access-Control-Expose-Headers": "regenerated_token",
+ },
+ onWSClientConnection: this.onWSClientConnection,
+ onWSClientDisconnection: this.onWSClientDisconnection,
+ }, this.controllers, this.middlewares)
+
+ this.server = this.instance.httpInterface
+
+ this.options = {
+ jwtStrategy: {
+ sessionLocationSign: this.instance.id,
+ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
+ secretOrKey: this.instance.oskid,
+ algorithms: ["sha1", "RS256", "HS256"],
+ expiresIn: this.env.signLifetime ?? "1h",
+ }
+ }
+
+ this.instance.wsInterface["clients"] = []
+ this.instance.wsInterface["findUserIdFromClientID"] = (searchClientId) => {
+ return this.instance.wsInterface.clients.find(client => client.id === searchClientId)?.userId ?? false
+ }
+ this.instance.wsInterface["getClientSockets"] = (userId) => {
+ return this.instance.wsInterface.clients.filter(client => client.userId === userId).map((client) => {
+ return client?.socket
+ })
+ }
+ this.instance.wsInterface["broadcast"] = async (channel, ...args) => {
+ for await (const client of this.instance.wsInterface.clients) {
+ client.socket.emit(channel, ...args)
+ }
+ }
+
+ global.wsInterface = this.instance.wsInterface
+ global.httpListenPort = this.listenPort
+ global.globalPublicURI = this.env.globalPublicURI
+ global.uploadPath = this.env.uploadPath ?? path.resolve(process.cwd(), "uploads")
+ global.jwtStrategy = this.options.jwtStrategy
+ global.signLocation = this.env.signLocation
+
+ this.initialize()
+ }
+
+ async initialize() {
+ await this.connectToDB()
+ await this.initializeConfigDB()
+ await this.checkSetup()
+ await this.initPassport()
+ await this.initWebsockets()
+
+ await this.instance.initialize()
+ }
+
+ connectToDB = () => {
+ return new Promise((resolve, reject) => {
+ try {
+ console.log("🌐 Trying to connect to DB...")
+ const dbUri = parseConnectionString(this.env)
+ //console.log(dbUri)
+ mongoose.connect(dbUri, {
+ useNewUrlParser: true,
+ useUnifiedTopology: true
+ })
+ .then((res) => { return resolve(true) })
+ .catch((err) => { return reject(err) })
+ } catch (err) {
+ return reject(err)
+ }
+ }).then(done => {
+ console.log(`✅ Connected to DB`)
+ }).catch((error) => {
+ console.log(`❌ Failed to connect to DB, retrying...\n`)
+ console.log(error)
+ setTimeout(() => {
+ this.connectToDB()
+ }, 1000)
+ })
+ }
+
+ initializeConfigDB = async () => {
+ let serverConfig = await Config.findOne({ key: "server" }).catch(() => {
+ return false
+ })
+
+ if (!serverConfig) {
+ serverConfig = new Config({
+ key: "server",
+ value: {
+ setup: false,
+ },
+ })
+
+
+ await serverConfig.save()
+ }
+ }
+
+ checkSetup = async () => {
+ return new Promise(async (resolve, reject) => {
+ let setupOk = (await Config.findOne({ key: "server" })).value?.setup ?? false
+
+ if (!setupOk) {
+ console.log("⚠️ Server setup is not complete, running setup proccess.")
+ let setupScript = await import("./setup")
+
+ setupScript = setupScript.default ?? setupScript
+
+ try {
+ for await (let script of setupScript) {
+ await script()
+ }
+
+ console.log("✅ Server setup complete.")
+
+ await Config.updateOne({ key: "server" }, { value: { setup: true } })
+
+ return resolve()
+ } catch (error) {
+ console.log("❌ Server setup failed.")
+ console.error(error)
+ process.exit(1)
+ }
+ }
+
+ return resolve()
+ })
+ }
+
+ initPassport() {
+ this.instance.middlewares["useJwtStrategy"] = (req, res, next) => {
+ req.jwtStrategy = this.options.jwtStrategy
+ next()
+ }
+ this.instance.middlewares["useWS"] = (req, res, next) => {
+ req.ws = global.wsInterface
+ next()
+ }
+
+ passport.use(new LocalStrategy({
+ usernameField: "username",
+ passwordField: "password",
+ session: false
+ }, (username, password, done) => {
+ User.findOne({ username: b64Decode(username) }).select("+password")
+ .then((data) => {
+ if (data === null) {
+ return done(null, false, this.options.jwtStrategy)
+ } else if (!bcrypt.compareSync(b64Decode(password), data.password)) {
+ return done(null, false, this.options.jwtStrategy)
+ }
+
+ // create a token
+ return done(null, data, this.options.jwtStrategy, { username, password })
+ })
+ .catch(err => done(err, null, this.options.jwtStrategy))
+ }))
+
+ this.server.use(passport.initialize())
+ }
+
+ initWebsockets() {
+ const onAuthenticated = (socket, user_id) => {
+ this.attachClientSocket(socket, user_id)
+ socket.emit("authenticated")
+ }
+
+ const onAuthenticatedFailed = (socket, error) => {
+ this.detachClientSocket(socket)
+ socket.emit("authenticateFailed", {
+ error,
+ })
+ }
+
+ this.instance.wsInterface.eventsChannels.push(["/main", "authenticate", async (socket, token) => {
+ const session = await Session.findOne({ token }).catch(err => {
+ return false
+ })
+
+ if (!session) {
+ return onAuthenticatedFailed(socket, "Session not found")
+ }
+
+ this.verifyJwt(token, async (err, decoded) => {
+ if (err) {
+ return onAuthenticatedFailed(socket, err)
+ } else {
+ const user = await User.findById(decoded.user_id).catch(err => {
+ return false
+ })
+
+ if (!user) {
+ return onAuthenticatedFailed(socket, "User not found")
+ }
+
+ return onAuthenticated(socket, user)
+ }
+ })
+ }])
+ }
+
+ onWSClientConnection = async (socket) => {
+ console.log(`🌐 Client connected: ${socket.id}`)
+ }
+
+ onWSClientDisconnection = async (socket) => {
+ console.log(`🌐 Client disconnected: ${socket.id}`)
+ this.detachClientSocket(socket)
+ }
+
+ attachClientSocket = async (client, userData) => {
+ const socket = this.instance.wsInterface.clients.find(c => c.id === client.id)
+
+ if (socket) {
+ socket.socket.disconnect()
+ }
+
+ const clientObj = {
+ id: client.id,
+ socket: client,
+ userId: userData._id.toString(),
+ user: userData,
+ }
+
+ this.instance.wsInterface.clients.push(clientObj)
+
+ this.instance.wsInterface.io.emit("userConnected", userData)
+ }
+
+ detachClientSocket = async (client) => {
+ const socket = this.instance.wsInterface.clients.find(c => c.id === client.id)
+
+ if (socket) {
+ socket.socket.disconnect()
+ this.instance.wsInterface.clients = this.instance.wsInterface.clients.filter(c => c.id !== client.id)
+ }
+
+ this.instance.wsInterface.io.emit("userDisconnect", client.id)
+ }
+
+ verifyJwt = (token, callback) => {
+ jwt.verify(token, this.options.jwtStrategy.secretOrKey, async (err, decoded) => {
+ if (err) {
+ return callback(err)
+ }
+
+ return callback(null, decoded)
+ })
}
}
-let endpoints = [
- {
- "path": "test",
- "controller": "TestController"
- },
-]
-
-cloudlink.register({
- origin: "localhost",
- originPort: 6050,
- listenPort: 5050,
- controllers,
- endpoints
-})
\ No newline at end of file
+new Server()
\ No newline at end of file
diff --git a/packages/server/src/lib/additionsHandler/handlers/essc.js b/packages/server/src/lib/additionsHandler/handlers/essc.js
new file mode 100644
index 00000000..5b850d86
--- /dev/null
+++ b/packages/server/src/lib/additionsHandler/handlers/essc.js
@@ -0,0 +1,11 @@
+import { genV1 } from "../../essc"
+
+export default (obj) => {
+ obj.essc = genV1({
+ type: obj.vaultItemTypeSelector ?? obj.type,
+ serial: obj.vaultItemSerial ?? obj.serial,
+ manufacturer: obj.vaultItemManufacturer ?? obj.manufacturer,
+ })
+
+ return obj
+}
\ No newline at end of file
diff --git a/packages/server/src/lib/additionsHandler/handlers/vaultItemFlatProperties.js b/packages/server/src/lib/additionsHandler/handlers/vaultItemFlatProperties.js
new file mode 100644
index 00000000..5e5346c3
--- /dev/null
+++ b/packages/server/src/lib/additionsHandler/handlers/vaultItemFlatProperties.js
@@ -0,0 +1,6 @@
+export default (obj) => {
+ return {
+ ...obj,
+ ...obj.properties,
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/lib/additionsHandler/handlers/vaultItemParser.js b/packages/server/src/lib/additionsHandler/handlers/vaultItemParser.js
new file mode 100644
index 00000000..91f10393
--- /dev/null
+++ b/packages/server/src/lib/additionsHandler/handlers/vaultItemParser.js
@@ -0,0 +1,17 @@
+export default (obj) => {
+ const fixedKeys = {
+ vaultItemManufacturer: "manufacturer",
+ vaultItemSerial: "serial",
+ vaultItemTypeSelector: "type",
+ vaultItemManufacturedYear: "manufacturedYear",
+ }
+
+ Object.keys(obj).forEach(key => {
+ if (fixedKeys[key]) {
+ obj[fixedKeys[key]] = obj[key]
+ delete obj[key]
+ }
+ })
+
+ return obj
+}
\ No newline at end of file
diff --git a/packages/server/src/lib/additionsHandler/index.js b/packages/server/src/lib/additionsHandler/index.js
new file mode 100644
index 00000000..b4867a50
--- /dev/null
+++ b/packages/server/src/lib/additionsHandler/index.js
@@ -0,0 +1,22 @@
+export default async (additions, obj) => {
+ let query = []
+
+ if (Array.isArray(additions)) {
+ query = additions
+ }else {
+ query.push(additions)
+ }
+
+ for await(let addition of query) {
+ try {
+ let script = await import(`./handlers/${addition}.js`)
+ script = script.default || script
+
+ obj = await script(obj)
+ } catch (error) {
+
+ }
+ }
+
+ return obj
+}
\ No newline at end of file
diff --git a/packages/server/src/lib/createUser/index.js b/packages/server/src/lib/createUser/index.js
new file mode 100644
index 00000000..ef39d312
--- /dev/null
+++ b/packages/server/src/lib/createUser/index.js
@@ -0,0 +1,28 @@
+import { User } from "../../models"
+import Avatars from "dicebar_lib"
+import bcrypt from "bcrypt"
+
+export default async function (payload) {
+ let { username, password, email, fullName, roles, avatar } = payload
+
+ const existentUser = await User.findOne({ username: username })
+
+ if (existentUser) {
+ throw new Error("User already exists")
+ }
+
+ const hash = bcrypt.hashSync(password, parseInt(process.env.BCRYPT_ROUNDS ?? 3))
+
+ let user = new User({
+ username: username,
+ password: hash,
+ email: email,
+ fullName: fullName,
+ avatar: avatar ?? Avatars.generate({ seed: username, type: "initials" }).uri,
+ roles: roles,
+ })
+
+ await user.save()
+
+ return user
+}
\ No newline at end of file
diff --git a/packages/server/src/lib/essc/index.js b/packages/server/src/lib/essc/index.js
new file mode 100644
index 00000000..aaf41591
--- /dev/null
+++ b/packages/server/src/lib/essc/index.js
@@ -0,0 +1,70 @@
+// random 5 digits number
+const random5 = () => Math.floor(Math.random() * 90000) + 10000
+
+// secure random 5 digits number
+const random5Secure = () => {
+ const random = random5()
+ return random.toString().padStart(5, '0')
+}
+
+// aa-bbbbb-cccc
+//* a: type (2 digits)
+//* b: serial (5 digits)
+//* c: manufacturer (4 digits)
+
+const typesNumber = {
+ "computers-desktop": [1],
+ "computers-laptop": [2],
+ "computers-tablet": [3],
+ "computers-smartphone": [4],
+ "networking": [5],
+ "peripherals-printer": [6],
+ "peripherals-monitor": [7],
+}
+
+export function genV1(params) {
+ let { type, serial, manufacturer } = params // please in that order
+ type = type.toLowerCase()
+
+ let str = []
+
+ // Type parsing
+ let typeBuf = []
+
+ if (typeof typesNumber[type] === "undefined") {
+ typeBuf[0] = 0
+ typeBuf[1] = "X"
+ } else {
+ typeBuf[0] = typesNumber[type][0]
+ typeBuf[1] = typesNumber[type][1] ?? "X"
+ }
+
+ str.push(typeBuf.join(""))
+
+ // Serial parsing
+ // if serial is not defined, generate a random 4 digits number
+ if (typeof serial === "undefined") {
+ str.push(random5().toString())
+ } else {
+ // push last 5 digits of serial, if serial is not 5 digits, pad with 0
+ let serialBuf = []
+
+ serialBuf[0] = serial.slice(-5, -4) ?? "0"
+ serialBuf[1] = serial.slice(-4, -3) ?? "0"
+ serialBuf[2] = serial.slice(-3, -2) ?? "0"
+ serialBuf[3] = serial.slice(-2, -1) ?? "0"
+ serialBuf[4] = serial.slice(-1) ?? "0"
+
+ str.push(serialBuf.join(""))
+ }
+
+ // Manufacturer parsing
+ // abreviate manufacturer name to 4 letters
+ if (typeof manufacturer === "undefined") {
+ str.push("GENR")
+ } else {
+ str.push(manufacturer.slice(0, 4).toUpperCase())
+ }
+
+ return str.join("-")
+}
\ No newline at end of file
diff --git a/packages/server/src/lib/index.js b/packages/server/src/lib/index.js
new file mode 100644
index 00000000..7ca29d87
--- /dev/null
+++ b/packages/server/src/lib/index.js
@@ -0,0 +1,5 @@
+export { default as Schematized } from "./schematized"
+export { default as additionsHandler } from "./additionsHandler"
+export { default as createUser } from "./createUser"
+
+export * as Token from "./token"
\ No newline at end of file
diff --git a/packages/server/src/lib/schematized/index.js b/packages/server/src/lib/schematized/index.js
new file mode 100644
index 00000000..c121c32d
--- /dev/null
+++ b/packages/server/src/lib/schematized/index.js
@@ -0,0 +1,57 @@
+export default (schema = {}, fn) => {
+ return async (req, res, next) => {
+ if (typeof req.body === "undefined") {
+ req.body = {}
+ }
+ if (typeof req.query === "undefined") {
+ req.query = {}
+ }
+
+ if (schema.required) {
+ if (Array.isArray(schema.required)) {
+ const missingKeys = []
+ const requiredKeys = Array.isArray(schema.required) ? schema.required : []
+
+ for await (let key of requiredKeys) {
+ if (typeof req.body[key] === "undefined" && typeof req.query[key] === "undefined") {
+ req.selection[key] = req.body[key]
+ continue
+ }
+ }
+
+ if (missingKeys.length > 0) {
+ return res.status(400).json({ error: `Missing ${missingKeys}` })
+ }
+ } else {
+ console.warn("[INVALID SCHEMA] schema.required is defined but is not an array")
+ }
+ }
+
+ if (schema.select) {
+ if (Array.isArray(schema.select)) {
+ if (typeof req.selection !== "object") {
+ req.selection = {}
+ }
+
+ // assign objects along request body and query.
+ for await (let key of schema.select) {
+ if (req.body && typeof req.body[key] !== "undefined") {
+ req.selection[key] = req.body[key]
+ continue
+ }
+
+ if (req.query && typeof req.query[key] !== "undefined") {
+ req.selection[key] = req.query[key]
+ continue
+ }
+ }
+ } else {
+ console.warn("[INVALID SCHEMA] schema.select is defined but is not an array")
+ }
+ }
+
+ if (typeof fn === "function") {
+ return await fn(req, res, next)
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/lib/token/index.js b/packages/server/src/lib/token/index.js
new file mode 100644
index 00000000..91e7033f
--- /dev/null
+++ b/packages/server/src/lib/token/index.js
@@ -0,0 +1,54 @@
+import jwt from "jsonwebtoken"
+import { nanoid } from "nanoid"
+import { Session, User } from "../../models"
+
+export async function createNewAuthToken(user, options = {}) {
+ const payload = {
+ user_id: user._id,
+ username: user.username,
+ email: user.email,
+ refreshToken: nanoid(),
+ signLocation: global.signLocation,
+ }
+
+ await User.findByIdAndUpdate(user._id, { refreshToken: payload.refreshToken })
+
+ return await signNew(payload, options)
+}
+
+export async function signNew(payload, options = {}) {
+ if (options.updateSession) {
+ const sessionData = await Session.findById(options.updateSession)
+ payload.session_uuid = sessionData.session_uuid
+ } else {
+ payload.session_uuid = nanoid()
+ }
+
+ const token = jwt.sign(payload, options.secretOrKey, {
+ expiresIn: options.expiresIn ?? "1h",
+ algorithm: options.algorithm ?? "HS256"
+ })
+
+ const session = {
+ token: token,
+ session_uuid: payload.session_uuid,
+ username: payload.username,
+ user_id: payload.user_id,
+ date: new Date().getTime(),
+ location: payload.signLocation ?? "rs-auth",
+ }
+
+ if (options.updateSession) {
+ await Session.findByIdAndUpdate(options.updateSession, {
+ token: session.token,
+ date: session.date,
+ location: session.location,
+ })
+ } else {
+ let newSession = new Session(session)
+
+ newSession.save()
+ }
+
+ return token
+}
\ No newline at end of file
diff --git a/packages/server/src/middlewares/errorHandler/index.js b/packages/server/src/middlewares/errorHandler/index.js
new file mode 100644
index 00000000..d8e53df2
--- /dev/null
+++ b/packages/server/src/middlewares/errorHandler/index.js
@@ -0,0 +1,5 @@
+export const errorHandler = (error, req, res, next) => {
+ res.json({ error: error.message })
+}
+
+export default errorHandler
\ No newline at end of file
diff --git a/packages/server/src/middlewares/hasPermissions/index.js b/packages/server/src/middlewares/hasPermissions/index.js
new file mode 100644
index 00000000..2cc254a8
--- /dev/null
+++ b/packages/server/src/middlewares/hasPermissions/index.js
@@ -0,0 +1,30 @@
+export const hasPermissions = (req, res, next) => {
+ if (typeof (req.userData) == "undefined") {
+ return res.status(403).json(`User data is not available, please ensure if you are authenticated`)
+ }
+
+ const { _id, username, roles } = req.userData
+ const { permissions } = req.body
+
+ req.userPermissions = roles
+
+ let check = []
+
+ if (Array.isArray(permissions)) {
+ check = permissions
+ } else {
+ check.push(permissions)
+ }
+
+ if (check.length > 0) {
+ check.forEach((role) => {
+ if (!roles.includes(role)) {
+ return res.status(403).json(`${username} not have permissions ${permissions}`)
+ }
+ })
+ }
+
+ next()
+}
+
+export default hasPermissions
diff --git a/packages/server/src/middlewares/index.js b/packages/server/src/middlewares/index.js
new file mode 100644
index 00000000..f6bdcfcc
--- /dev/null
+++ b/packages/server/src/middlewares/index.js
@@ -0,0 +1,10 @@
+const fileUpload = require("@nanoexpress/middleware-file-upload/cjs")()
+
+export { default as withAuthentication } from "./withAuthentication"
+export { default as errorHandler } from "./errorHandler"
+export { default as hasPermissions } from "./hasPermissions"
+export { default as roles } from "./roles"
+export { default as onlyAdmin } from "./onlyAdmin"
+export { default as permissions } from "./permissions"
+
+export { fileUpload as fileUpload }
\ No newline at end of file
diff --git a/packages/server/src/middlewares/onlyAdmin/index.js b/packages/server/src/middlewares/onlyAdmin/index.js
new file mode 100644
index 00000000..1bac1ead
--- /dev/null
+++ b/packages/server/src/middlewares/onlyAdmin/index.js
@@ -0,0 +1,7 @@
+export default (req, res, next) => {
+ if (!req.user.roles.includes("admin")) {
+ return res.status(403).send({ error: "To make this request it is necessary to have administrator permissions" })
+ }
+
+ next()
+}
\ No newline at end of file
diff --git a/packages/server/src/middlewares/permissions/index.js b/packages/server/src/middlewares/permissions/index.js
new file mode 100644
index 00000000..bff9e765
--- /dev/null
+++ b/packages/server/src/middlewares/permissions/index.js
@@ -0,0 +1,39 @@
+import { Config } from "../../models"
+
+export default (req, res, next) => {
+ const requestedPath = `${req.method.toLowerCase()}${req.path.toLowerCase()}`
+
+ Config.findOne({ key: "permissions" }, undefined, {
+ lean: true,
+ }).then(({ value }) => {
+ req.assertedPermissions = []
+
+ const pathRoles = value.pathRoles ?? {}
+
+ if (typeof pathRoles[requestedPath] === "undefined") {
+ console.warn(`[Permissions] No permissions defined for path ${requestedPath}`)
+ return next()
+ }
+
+ const requiredRoles = Array.isArray(pathRoles[requestedPath]) ? pathRoles[requestedPath] : [pathRoles[requestedPath]]
+
+ requiredRoles.forEach((role) => {
+ if (req.user.roles.includes(role)) {
+ req.assertedPermissions.push(role)
+ }
+ })
+
+ if (req.user.roles.includes("admin")) {
+ req.assertedPermissions.push("admin")
+ }
+
+ if (req.assertedPermissions.length === 0 && !req.user.roles.includes("admin")) {
+ return res.status(403).json({
+ error: "forbidden",
+ message: "You don't have permission to access this resource",
+ })
+ }
+
+ next()
+ })
+}
\ No newline at end of file
diff --git a/packages/server/src/middlewares/roles/index.js b/packages/server/src/middlewares/roles/index.js
new file mode 100644
index 00000000..16c9e3c3
--- /dev/null
+++ b/packages/server/src/middlewares/roles/index.js
@@ -0,0 +1,19 @@
+export default (req, res, next) => {
+ req.isAdmin = () => {
+ if (req.user.roles.includes("admin")) {
+ return true
+ }
+
+ return false
+ }
+
+ req.hasRole = (role) => {
+ if (req.user.roles.includes(role)) {
+ return true
+ }
+
+ return false
+ }
+
+ next()
+}
\ No newline at end of file
diff --git a/packages/server/src/middlewares/withAuthentication/index.js b/packages/server/src/middlewares/withAuthentication/index.js
new file mode 100644
index 00000000..71509706
--- /dev/null
+++ b/packages/server/src/middlewares/withAuthentication/index.js
@@ -0,0 +1,63 @@
+import { Session, User } from "../../models"
+import { Token } from "../../lib"
+import jwt from "jsonwebtoken"
+
+export default (req, res, next) => {
+ function reject(description) {
+ return res.status(401).send({ error: `${description ?? "Invalid session"}` })
+ }
+
+ const authHeader = req.headers?.authorization?.split(" ")
+
+ if (authHeader && authHeader[0] === "Bearer") {
+ const token = authHeader[1]
+ let decoded = null
+
+ try {
+ decoded = jwt.decode(token)
+ } catch (error) {
+ console.error(error)
+ }
+
+ if (!decoded) {
+ return reject("Cannot decode token")
+ }
+
+ jwt.verify(token, global.jwtStrategy.secretOrKey, async (err) => {
+ const sessions = await Session.find({ user_id: decoded.user_id })
+ const currentSession = sessions.find((session) => session.token === token)
+
+ if (!currentSession) {
+ return reject("Cannot find session")
+ }
+
+ const userData = await User.findOne({ _id: currentSession.user_id }).select("+refreshToken")
+
+ if (!userData) {
+ return res.status(404).send({ error: "No user data found" })
+ }
+
+ if (err) {
+ if (decoded.refreshToken === userData.refreshToken) {
+ const regeneratedToken = await Token.createNewAuthToken(userData, {
+ ...global.jwtStrategy,
+ updateSession: currentSession._id,
+ })
+
+ res.setHeader("regenerated_token", regeneratedToken)
+ } else {
+ return reject("Token expired, cannot refresh token either")
+ }
+ }
+
+ req.user = userData
+ req.jwtToken = token
+ req.decodedToken = decoded
+ req.currentSession = currentSession
+
+ return next()
+ })
+ } else {
+ return reject("Missing token header")
+ }
+}
diff --git a/packages/server/src/models/index.js b/packages/server/src/models/index.js
new file mode 100644
index 00000000..d01eaf02
--- /dev/null
+++ b/packages/server/src/models/index.js
@@ -0,0 +1,22 @@
+import mongoose, { Schema } from "mongoose"
+
+function getSchemas() {
+ const obj = Object()
+
+ const _schemas = require("../schemas")
+ Object.keys(_schemas).forEach((key) => {
+ obj[key] = Schema(_schemas[key])
+ })
+
+ return obj
+}
+
+const schemas = getSchemas()
+
+export const Config = mongoose.model("Config", schemas.Config, "config")
+export const User = mongoose.model("User", schemas.User, "accounts")
+export const Session = mongoose.model("Session", schemas.Session, "sessions")
+export const Role = mongoose.model("Role", schemas.Role, "roles")
+export const Post = mongoose.model("Post", schemas.Post, "posts")
+export const Comment = mongoose.model("Comment", schemas.Comment, "comments")
+//export const Tag = mongoose.model("Tag", schemas.Tag, "tags")
\ No newline at end of file
diff --git a/packages/server/src/schemas/comment/index.js b/packages/server/src/schemas/comment/index.js
new file mode 100644
index 00000000..5f7b92f3
--- /dev/null
+++ b/packages/server/src/schemas/comment/index.js
@@ -0,0 +1,6 @@
+export default {
+ user_id: { type: String, required: true },
+ content: { type: String, required: true },
+ created_at: { type: Date, default: Date.now },
+ liked: { type: Array, default: [] },
+}
\ No newline at end of file
diff --git a/packages/server/src/schemas/config/index.js b/packages/server/src/schemas/config/index.js
new file mode 100644
index 00000000..0b0604e5
--- /dev/null
+++ b/packages/server/src/schemas/config/index.js
@@ -0,0 +1,4 @@
+export default {
+ key: { type: String, required: true },
+ value: { type: Object, required: true },
+}
\ No newline at end of file
diff --git a/packages/server/src/schemas/index.js b/packages/server/src/schemas/index.js
new file mode 100644
index 00000000..d34c97e1
--- /dev/null
+++ b/packages/server/src/schemas/index.js
@@ -0,0 +1,6 @@
+export { default as User } from "./user"
+export { default as Role } from "./role"
+export { default as Session } from "./session"
+export { default as Config } from "./config"
+export { default as Post } from "./post"
+export { default as Comment } from "./comment"
\ No newline at end of file
diff --git a/packages/server/src/schemas/post/index.js b/packages/server/src/schemas/post/index.js
new file mode 100644
index 00000000..53d7b6cf
--- /dev/null
+++ b/packages/server/src/schemas/post/index.js
@@ -0,0 +1,7 @@
+export default {
+ user_id: { type: String, required: true },
+ created_at: { type: Number, required: true },
+ message: { type: String, required: true },
+ likes: { type: Array, default: [] },
+ comments: { type: Array, default: [] },
+}
\ No newline at end of file
diff --git a/packages/server/src/schemas/role/index.js b/packages/server/src/schemas/role/index.js
new file mode 100644
index 00000000..6992f3d0
--- /dev/null
+++ b/packages/server/src/schemas/role/index.js
@@ -0,0 +1,5 @@
+export default {
+ name: String,
+ description: String,
+ apply: Object
+}
\ No newline at end of file
diff --git a/packages/server/src/schemas/session/index.js b/packages/server/src/schemas/session/index.js
new file mode 100644
index 00000000..03b8d87b
--- /dev/null
+++ b/packages/server/src/schemas/session/index.js
@@ -0,0 +1,8 @@
+export default {
+ session_uuid: { type: String, required: true },
+ token: { type: String, required: true },
+ username: { type: String, required: true },
+ user_id: { type: String, required: true },
+ date: { type: Number, default: 0 },
+ location: { type: String, default: "Unknown" },
+}
\ No newline at end of file
diff --git a/packages/server/src/schemas/user/index.js b/packages/server/src/schemas/user/index.js
new file mode 100644
index 00000000..d994ed92
--- /dev/null
+++ b/packages/server/src/schemas/user/index.js
@@ -0,0 +1,12 @@
+export default {
+ refreshToken: { type: String, select: false },
+ username: { type: String, required: true },
+ password: { type: String, required: true, select: false },
+ fullName: String,
+ avatar: { type: String },
+ email: String,
+ roles: { type: Array, default: [] },
+ verified: { type: Boolean, default: false },
+ createdAt: { type: Date },
+ badges: { type: Array, default: [] },
+}
\ No newline at end of file
diff --git a/packages/server/src/setup/dbAdmin/index.js b/packages/server/src/setup/dbAdmin/index.js
new file mode 100644
index 00000000..9c20d664
--- /dev/null
+++ b/packages/server/src/setup/dbAdmin/index.js
@@ -0,0 +1,24 @@
+import { User } from "../../models"
+import { createUser } from "../../lib"
+
+export default async () => {
+ // check if any user with includes admin role exists
+ const adminUser = await User.find({
+ $or: [
+ { roles: { $in: ['admin'] } },
+ ],
+ })
+
+ // if no user with admin role exists, create one
+ if (adminUser.length === 0) {
+ console.log('Creating admin user...')
+
+ await createUser({
+ username: 'admin',
+ password: 'admin',
+ roles: ['admin'],
+ })
+
+ console.log('Admin user created!')
+ }
+}
\ No newline at end of file
diff --git a/packages/server/src/setup/index.js b/packages/server/src/setup/index.js
new file mode 100644
index 00000000..e136e2f9
--- /dev/null
+++ b/packages/server/src/setup/index.js
@@ -0,0 +1,6 @@
+import { default as dbAdmin } from "./dbAdmin"
+
+// set here the setup functions
+export default [
+ dbAdmin,
+]
\ No newline at end of file
diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json
deleted file mode 100644
index 67e0ac98..00000000
--- a/packages/server/tsconfig.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "ts-node": {
- "transpileOnly": true
- },
- "compilerOptions": {
- "target": "esnext",
- "module": "commonjs",
- "sourceMap": true,
- "moduleResolution": "node",
- "pretty": true,
- "declaration": true,
- "alwaysStrict": true,
- // "allowSyntheticDefaultImports": true,
- "strictNullChecks": true,
- "esModuleInterop": true,
- "noImplicitThis": true,
- "noImplicitAny": true,
- "downlevelIteration": true,
- "lib": [
- "dom", // for URLSearchParams
- "esnext"
- ],
- "outDir": "dist"
- },
- "include": [
- "src/**/*"
- ],
- "exclude": [
- "node_modules",
- "text"
- ]
-}
\ No newline at end of file
diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock
deleted file mode 100644
index dc364465..00000000
--- a/packages/server/yarn.lock
+++ /dev/null
@@ -1,4113 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"7zip-bin@^5.0.3":
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.0.3.tgz#bc5b5532ecafd923a61f2fb097e3b108c0106a3f"
- integrity sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==
-
-"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
- integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
- dependencies:
- "@babel/highlight" "^7.10.4"
-
-"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
- integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
-
-"@babel/core@7.12.9":
- version "7.12.9"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
- integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.5"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helpers" "^7.12.5"
- "@babel/parser" "^7.12.7"
- "@babel/template" "^7.12.7"
- "@babel/traverse" "^7.12.9"
- "@babel/types" "^7.12.7"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.1"
- json5 "^2.1.2"
- lodash "^4.17.19"
- resolve "^1.3.2"
- semver "^5.4.1"
- source-map "^0.5.0"
-
-"@babel/core@^7.12.10", "@babel/core@^7.12.9":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
- integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.10"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helpers" "^7.12.5"
- "@babel/parser" "^7.12.10"
- "@babel/template" "^7.12.7"
- "@babel/traverse" "^7.12.10"
- "@babel/types" "^7.12.10"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.1"
- json5 "^2.1.2"
- lodash "^4.17.19"
- semver "^5.4.1"
- source-map "^0.5.0"
-
-"@babel/generator@^7.12.10", "@babel/generator@^7.12.11", "@babel/generator@^7.12.5":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
- integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
- dependencies:
- "@babel/types" "^7.12.11"
- jsesc "^2.5.1"
- source-map "^0.5.0"
-
-"@babel/helper-annotate-as-pure@^7.10.4":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
- integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
- dependencies:
- "@babel/types" "^7.12.10"
-
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3"
- integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==
- dependencies:
- "@babel/helper-explode-assignable-expression" "^7.10.4"
- "@babel/types" "^7.10.4"
-
-"@babel/helper-compilation-targets@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831"
- integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==
- dependencies:
- "@babel/compat-data" "^7.12.5"
- "@babel/helper-validator-option" "^7.12.1"
- browserslist "^4.14.5"
- semver "^5.5.0"
-
-"@babel/helper-create-class-features-plugin@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e"
- integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-member-expression-to-functions" "^7.12.1"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.10.4"
-
-"@babel/helper-create-regexp-features-plugin@^7.12.1":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f"
- integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- regexpu-core "^4.7.1"
-
-"@babel/helper-define-map@^7.10.4":
- version "7.10.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30"
- integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/types" "^7.10.5"
- lodash "^4.17.19"
-
-"@babel/helper-explode-assignable-expression@^7.10.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633"
- integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
- integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
- dependencies:
- "@babel/helper-get-function-arity" "^7.12.10"
- "@babel/template" "^7.12.7"
- "@babel/types" "^7.12.11"
-
-"@babel/helper-get-function-arity@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
- integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
- dependencies:
- "@babel/types" "^7.12.10"
-
-"@babel/helper-hoist-variables@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
- integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==
- dependencies:
- "@babel/types" "^7.10.4"
-
-"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855"
- integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==
- dependencies:
- "@babel/types" "^7.12.7"
-
-"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
- integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
- dependencies:
- "@babel/types" "^7.12.5"
-
-"@babel/helper-module-transforms@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
- integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==
- dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-simple-access" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.11.0"
- "@babel/helper-validator-identifier" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.1"
- "@babel/types" "^7.12.1"
- lodash "^4.17.19"
-
-"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
- integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
- dependencies:
- "@babel/types" "^7.12.10"
-
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
- integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
-
-"@babel/helper-remap-async-to-generator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd"
- integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- "@babel/helper-wrap-function" "^7.10.4"
- "@babel/types" "^7.12.1"
-
-"@babel/helper-replace-supers@^7.12.1":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d"
- integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==
- dependencies:
- "@babel/helper-member-expression-to-functions" "^7.12.7"
- "@babel/helper-optimise-call-expression" "^7.12.10"
- "@babel/traverse" "^7.12.10"
- "@babel/types" "^7.12.11"
-
-"@babel/helper-simple-access@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136"
- integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
- integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
- integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
- dependencies:
- "@babel/types" "^7.12.11"
-
-"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
- integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-
-"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f"
- integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==
-
-"@babel/helper-wrap-function@^7.10.4":
- version "7.12.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9"
- integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.10.4"
- "@babel/types" "^7.10.4"
-
-"@babel/helpers@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
- integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
- dependencies:
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.5"
- "@babel/types" "^7.12.5"
-
-"@babel/highlight@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
- integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
- dependencies:
- "@babel/helper-validator-identifier" "^7.10.4"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
-"@babel/node@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.12.10.tgz#2a78e1a3a98f08e0d5e8adbaba783bed5efb09ae"
- integrity sha512-lJT1sXp1bEfAZ7B2ChEOOiUxaGbIWkcAixqZDpbHnJWUqIjoofOGo5ON1bJ9HOmtMdF7rqKiOoM7zZSI87El3g==
- dependencies:
- "@babel/register" "^7.12.10"
- commander "^4.0.1"
- core-js "^3.2.1"
- lodash "^4.17.19"
- node-environment-flags "^1.0.5"
- regenerator-runtime "^0.13.4"
- v8flags "^3.1.1"
-
-"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
- integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
-
-"@babel/plugin-proposal-async-generator-functions@^7.12.1":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566"
- integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-remap-async-to-generator" "^7.12.1"
- "@babel/plugin-syntax-async-generators" "^7.8.0"
-
-"@babel/plugin-proposal-class-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
- integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-proposal-do-expressions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.12.1.tgz#8d7f1bc532d8168147555c26e3db922cc0dfd2f8"
- integrity sha512-bpJ6Bfrzvdzb0vG6zBSNh3HLgFKh+S2CBpNmaLRjg2u7cNkzRPIqBjVURCmpG6pvPfKyxkizwbrXwpYtW3a9cw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-do-expressions" "^7.12.1"
-
-"@babel/plugin-proposal-dynamic-import@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc"
- integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
-
-"@babel/plugin-proposal-export-default-from@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz#c6e62d668a8abcfe0d28b82f560395fecb611c5a"
- integrity sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-export-default-from" "^7.12.1"
-
-"@babel/plugin-proposal-export-namespace-from@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4"
- integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-
-"@babel/plugin-proposal-json-strings@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c"
- integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-json-strings" "^7.8.0"
-
-"@babel/plugin-proposal-logical-assignment-operators@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751"
- integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-
-"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c"
- integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
-
-"@babel/plugin-proposal-numeric-separator@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b"
- integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-numeric-separator" "^7.10.4"
-
-"@babel/plugin-proposal-object-rest-spread@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
- integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
- "@babel/plugin-transform-parameters" "^7.12.1"
-
-"@babel/plugin-proposal-optional-catch-binding@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942"
- integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-
-"@babel/plugin-proposal-optional-chaining@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c"
- integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
- "@babel/plugin-syntax-optional-chaining" "^7.8.0"
-
-"@babel/plugin-proposal-private-methods@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389"
- integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072"
- integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-async-generators@^7.8.0":
- version "7.8.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
- integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-class-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978"
- integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-do-expressions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.12.1.tgz#6b83dfab79540b66912b559860ce6d4be4f7d960"
- integrity sha512-a9TknRXkzfetNjOWSWnPIG/Y7x+elzcmKng2Qpvh8QaqdPo0OABizTjco8YO8r5xZNQfE58YHq7lWR+PKwHyxg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
- integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-export-default-from@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz#a9eb31881f4f9a1115a3d2c6d64ac3f6016b5a9d"
- integrity sha512-dP5eGg6tHEkhnRD2/vRG/KJKRSg8gtxu2i+P/8/yFPJn/CfPU5G0/7Gks2i3M6IOVAPQekmsLN9LPsmXFFL4Uw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-export-namespace-from@^7.8.3":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
- integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-syntax-json-strings@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
- integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
- integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
- integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-numeric-separator@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
- integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-object-rest-spread@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
- integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-catch-binding@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
- integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-chaining@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
- integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-top-level-await@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0"
- integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-typescript@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5"
- integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-arrow-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3"
- integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-async-to-generator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1"
- integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==
- dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-remap-async-to-generator" "^7.12.1"
-
-"@babel/plugin-transform-block-scoped-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9"
- integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-block-scoping@^7.12.11":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca"
- integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-classes@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6"
- integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- "@babel/helper-define-map" "^7.10.4"
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.10.4"
- globals "^11.1.0"
-
-"@babel/plugin-transform-computed-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852"
- integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-destructuring@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847"
- integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975"
- integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-duplicate-keys@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228"
- integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-exponentiation-operator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0"
- integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==
- dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-for-of@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa"
- integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-function-name@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667"
- integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57"
- integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-member-expression-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad"
- integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-modules-amd@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9"
- integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==
- dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-commonjs@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648"
- integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==
- dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-simple-access" "^7.12.1"
- babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-systemjs@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086"
- integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==
- dependencies:
- "@babel/helper-hoist-variables" "^7.10.4"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-validator-identifier" "^7.10.4"
- babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-umd@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902"
- integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==
- dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753"
- integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
-
-"@babel/plugin-transform-new-target@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0"
- integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-object-super@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e"
- integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
-
-"@babel/plugin-transform-parameters@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d"
- integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-property-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd"
- integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-regenerator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753"
- integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==
- dependencies:
- regenerator-transform "^0.14.2"
-
-"@babel/plugin-transform-reserved-words@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8"
- integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-runtime@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz#af0fded4e846c4b37078e8e5d06deac6cd848562"
- integrity sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==
- dependencies:
- "@babel/helper-module-imports" "^7.12.5"
- "@babel/helper-plugin-utils" "^7.10.4"
- semver "^5.5.1"
-
-"@babel/plugin-transform-shorthand-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3"
- integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-spread@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e"
- integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
-
-"@babel/plugin-transform-sticky-regex@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad"
- integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-template-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843"
- integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-typeof-symbol@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
- integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-typescript@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4"
- integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-typescript" "^7.12.1"
-
-"@babel/plugin-transform-unicode-escapes@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709"
- integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-unicode-regex@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb"
- integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/preset-env@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9"
- integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==
- dependencies:
- "@babel/compat-data" "^7.12.7"
- "@babel/helper-compilation-targets" "^7.12.5"
- "@babel/helper-module-imports" "^7.12.5"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-validator-option" "^7.12.11"
- "@babel/plugin-proposal-async-generator-functions" "^7.12.1"
- "@babel/plugin-proposal-class-properties" "^7.12.1"
- "@babel/plugin-proposal-dynamic-import" "^7.12.1"
- "@babel/plugin-proposal-export-namespace-from" "^7.12.1"
- "@babel/plugin-proposal-json-strings" "^7.12.1"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
- "@babel/plugin-proposal-numeric-separator" "^7.12.7"
- "@babel/plugin-proposal-object-rest-spread" "^7.12.1"
- "@babel/plugin-proposal-optional-catch-binding" "^7.12.1"
- "@babel/plugin-proposal-optional-chaining" "^7.12.7"
- "@babel/plugin-proposal-private-methods" "^7.12.1"
- "@babel/plugin-proposal-unicode-property-regex" "^7.12.1"
- "@babel/plugin-syntax-async-generators" "^7.8.0"
- "@babel/plugin-syntax-class-properties" "^7.12.1"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
- "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
- "@babel/plugin-syntax-json-strings" "^7.8.0"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
- "@babel/plugin-syntax-numeric-separator" "^7.10.4"
- "@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.12.1"
- "@babel/plugin-transform-arrow-functions" "^7.12.1"
- "@babel/plugin-transform-async-to-generator" "^7.12.1"
- "@babel/plugin-transform-block-scoped-functions" "^7.12.1"
- "@babel/plugin-transform-block-scoping" "^7.12.11"
- "@babel/plugin-transform-classes" "^7.12.1"
- "@babel/plugin-transform-computed-properties" "^7.12.1"
- "@babel/plugin-transform-destructuring" "^7.12.1"
- "@babel/plugin-transform-dotall-regex" "^7.12.1"
- "@babel/plugin-transform-duplicate-keys" "^7.12.1"
- "@babel/plugin-transform-exponentiation-operator" "^7.12.1"
- "@babel/plugin-transform-for-of" "^7.12.1"
- "@babel/plugin-transform-function-name" "^7.12.1"
- "@babel/plugin-transform-literals" "^7.12.1"
- "@babel/plugin-transform-member-expression-literals" "^7.12.1"
- "@babel/plugin-transform-modules-amd" "^7.12.1"
- "@babel/plugin-transform-modules-commonjs" "^7.12.1"
- "@babel/plugin-transform-modules-systemjs" "^7.12.1"
- "@babel/plugin-transform-modules-umd" "^7.12.1"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1"
- "@babel/plugin-transform-new-target" "^7.12.1"
- "@babel/plugin-transform-object-super" "^7.12.1"
- "@babel/plugin-transform-parameters" "^7.12.1"
- "@babel/plugin-transform-property-literals" "^7.12.1"
- "@babel/plugin-transform-regenerator" "^7.12.1"
- "@babel/plugin-transform-reserved-words" "^7.12.1"
- "@babel/plugin-transform-shorthand-properties" "^7.12.1"
- "@babel/plugin-transform-spread" "^7.12.1"
- "@babel/plugin-transform-sticky-regex" "^7.12.7"
- "@babel/plugin-transform-template-literals" "^7.12.1"
- "@babel/plugin-transform-typeof-symbol" "^7.12.10"
- "@babel/plugin-transform-unicode-escapes" "^7.12.1"
- "@babel/plugin-transform-unicode-regex" "^7.12.1"
- "@babel/preset-modules" "^0.1.3"
- "@babel/types" "^7.12.11"
- core-js-compat "^3.8.0"
- semver "^5.5.0"
-
-"@babel/preset-modules@^0.1.3":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
- integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
- dependencies:
- "@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-typescript@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3"
- integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-validator-option" "^7.12.1"
- "@babel/plugin-transform-typescript" "^7.12.1"
-
-"@babel/register@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.12.10.tgz#19b87143f17128af4dbe7af54c735663b3999f60"
- integrity sha512-EvX/BvMMJRAA3jZgILWgbsrHwBQvllC5T8B29McyME8DvkdOxk4ujESfrMvME8IHSDvWXrmMXxPvA/lx2gqPLQ==
- dependencies:
- find-cache-dir "^2.0.0"
- lodash "^4.17.19"
- make-dir "^2.1.0"
- pirates "^4.0.0"
- source-map-support "^0.5.16"
-
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
- integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
- dependencies:
- regenerator-runtime "^0.13.4"
-
-"@babel/template@^7.10.4", "@babel/template@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
- integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/parser" "^7.12.7"
- "@babel/types" "^7.12.7"
-
-"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
- integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
- dependencies:
- "@babel/code-frame" "^7.12.11"
- "@babel/generator" "^7.12.11"
- "@babel/helper-function-name" "^7.12.11"
- "@babel/helper-split-export-declaration" "^7.12.11"
- "@babel/parser" "^7.12.11"
- "@babel/types" "^7.12.12"
- debug "^4.1.0"
- globals "^11.1.0"
- lodash "^4.17.19"
-
-"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
- integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
- dependencies:
- "@babel/helper-validator-identifier" "^7.12.11"
- lodash "^4.17.19"
- to-fast-properties "^2.0.0"
-
-"@nodecorejs/builder@0.15.1":
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/@nodecorejs/builder/-/builder-0.15.1.tgz#0ae30203a6d4feb0d53cdfa4fe86a7ace6b25f81"
- integrity sha512-XGhjU082rimBucHVUYcRqD3SDFUQfnIQae65A/49ssVCE2vFxhtozkfV3Zu9tPq+DteqjGuopm1NlcDk5npzfw==
- dependencies:
- "@babel/core" "^7.12.10"
- "@babel/plugin-proposal-class-properties" "^7.12.1"
- "@babel/plugin-proposal-do-expressions" "^7.12.1"
- "@babel/plugin-proposal-export-default-from" "^7.12.1"
- "@babel/plugin-transform-runtime" "^7.12.10"
- "@babel/preset-env" "^7.12.11"
- "@babel/preset-typescript" "^7.12.7"
- "@babel/runtime" "^7.12.5"
- "@nodecorejs/utils" "0.15.1"
- rimraf "^3.0.2"
- slash2 "^2.0.0"
- through2 "^4.0.2"
- vinyl-fs "^3.0.3"
-
-"@nodecorejs/cli@0.15.1":
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/@nodecorejs/cli/-/cli-0.15.1.tgz#1e1996a3b32d581cb92a30ed39dcbea182e9d119"
- integrity sha512-jEpsvtHlsOvYO7cby7MMaxYt4V8Z4AIxjwVZ2yVKT5O/8aUqC/1aWXp6mOjZVEFt0g8oVqatolbjXsLVvS6WiA==
- dependencies:
- "7zip-bin" "^5.0.3"
- "@nodecorejs/builder" "0.15.1"
- "@nodecorejs/dot-runtime" "0.15.1"
- "@nodecorejs/utils" "0.15.1"
- axios "^0.21.0"
- chalk "^4.1.0"
- cli-spinners "^2.5.0"
- escape-goat "^3.0.0"
- execa "^4.1.0"
- inquirer "^7.3.3"
- listr "^0.14.3"
- log4js "^6.3.0"
- new-github-release-url "^1.0.0"
- node-7z "^2.1.2"
- node-fetch "^2.6.1"
- open "^7.3.0"
- ora "^5.1.0"
- prompt "^1.0.0"
- yargs "^16.2.0"
-
-"@nodecorejs/cloudlink@^0.15.1":
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/@nodecorejs/cloudlink/-/cloudlink-0.15.1.tgz#b21a5b70dd29c55eac514b06f10a9bf6565b8961"
- integrity sha512-I8C6wd05JjF2tcEGw053z4bcA5IgJkeur1Kxjzf9OgC2UhxggfJoQFUzFgBAuejWF0B0GhfQ9GS2sM2jqxeRJA==
- dependencies:
- "@nodecorejs/dot-runtime" "0.15.1"
- "@nodecorejs/utils" "0.15.1"
- async-mutex "^0.2.6"
- axios "^0.21.1"
- express "^4.17.1"
- localforage "^1.9.0"
- path-to-regexp "^6.2.0"
-
-"@nodecorejs/dot-runtime@0.15.1":
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/@nodecorejs/dot-runtime/-/dot-runtime-0.15.1.tgz#aac534242b2382d97f0e3bb122511365312ef788"
- integrity sha512-KdCM24ha3jG07eMqUvJYXBzt3D726agDapDN3GWPPxBXSGU15p75dcnpM7YDQPUi72F4kP5jORVInLkYAUqYnA==
- dependencies:
- "@nodecorejs/utils" "0.15.1"
-
-"@nodecorejs/utils@0.15.1":
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/@nodecorejs/utils/-/utils-0.15.1.tgz#acc318299565534bf3d0c28534c146495faafbbb"
- integrity sha512-mZeNA/jFQWJZk/M4zRM7m7JTZ6fTul33D1HS1X20gaPI9nGVungfnBcAR19L29AdIzKhJDsgg6le8Pc43JpzEg==
- dependencies:
- "@babel/core" "^7.12.9"
- chalk "^4.1.0"
- color "^3.1.3"
- lodash "^4.17.15"
- stack-trace "^0.0.10"
-
-"@ragestudio/nodecorejs@^0.15.1":
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/@ragestudio/nodecorejs/-/nodecorejs-0.15.1.tgz#1d993051b834de07663e0292b60bc9998fd04cbc"
- integrity sha512-xpvxEsZYTAI3DW3uacpiyihkJYXd+qqURv/t/Ysao4N6RNhPO+gVyNmzOb2Kvf9FT/1PWLMP1YTHpzw/4q6kWQ==
- dependencies:
- "@babel/core" "7.12.9"
- "@babel/runtime" "^7.12.5"
- "@nodecorejs/builder" "0.15.1"
- "@nodecorejs/cli" "0.15.1"
- "@nodecorejs/dot-runtime" "0.15.1"
- "@nodecorejs/utils" "0.15.1"
- resolve-cwd "^3.0.0"
-
-"@samverschueren/stream-to-observable@^0.3.0":
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301"
- integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==
- dependencies:
- any-observable "^0.3.0"
-
-"@sindresorhus/is@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
- integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
-
-"@szmarczak/http-timer@^1.1.2":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
- integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
- dependencies:
- defer-to-connect "^1.0.1"
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-accepts@~1.3.7:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
- dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
-
-ansi-align@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
- integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==
- dependencies:
- string-width "^3.0.0"
-
-ansi-escapes@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
- integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
-
-ansi-escapes@^4.2.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
- integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
- dependencies:
- type-fest "^0.11.0"
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
- integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-ansi-regex@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
-
-ansi-regex@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
- integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
-ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
-any-observable@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
- integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
-
-anymatch@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
- integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
-append-buffer@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1"
- integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=
- dependencies:
- buffer-equal "^1.0.0"
-
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-
-async-mutex@^0.2.6:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40"
- integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==
- dependencies:
- tslib "^2.0.0"
-
-async@~0.9.0:
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
- integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
-
-async@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9"
- integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=
-
-axios@^0.21.0, axios@^0.21.1:
- version "0.21.1"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
- integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==
- dependencies:
- follow-redirects "^1.10.0"
-
-babel-node@^0.0.1-security:
- version "0.0.1-security"
- resolved "https://registry.yarnpkg.com/babel-node/-/babel-node-0.0.1-security.tgz#cbff6d9e7a2acb4065c1839c234d5c57091d7217"
- integrity sha512-zF3D9H2FA2xrP+B/X462G+38aHpmR+33jBF7NowfPuV4CiPEzAR1Typ1RC+qPfe0vCeWeV0FLG2pfVGb0vIfeg==
-
-babel-plugin-dynamic-import-node@^2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
- integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
- dependencies:
- object.assign "^4.1.0"
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base64-js@^1.3.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
-binary-extensions@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
- integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
-
-bl@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489"
- integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==
- dependencies:
- buffer "^5.5.0"
- inherits "^2.0.4"
- readable-stream "^3.4.0"
-
-body-parser@1.19.0:
- version "1.19.0"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
- integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
- dependencies:
- bytes "3.1.0"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "~1.1.2"
- http-errors "1.7.2"
- iconv-lite "0.4.24"
- on-finished "~2.3.0"
- qs "6.7.0"
- raw-body "2.4.0"
- type-is "~1.6.17"
-
-boxen@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64"
- integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==
- dependencies:
- ansi-align "^3.0.0"
- camelcase "^5.3.1"
- chalk "^3.0.0"
- cli-boxes "^2.2.0"
- string-width "^4.1.0"
- term-size "^2.1.0"
- type-fest "^0.8.1"
- widest-line "^3.1.0"
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-browserslist@^4.14.5, browserslist@^4.16.0:
- version "4.16.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766"
- integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==
- dependencies:
- caniuse-lite "^1.0.30001173"
- colorette "^1.2.1"
- electron-to-chromium "^1.3.634"
- escalade "^3.1.1"
- node-releases "^1.1.69"
-
-buffer-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
- integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74=
-
-buffer-from@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
- integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-
-buffer@^5.5.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
- integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.1.13"
-
-bytes@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
- integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
-
-cacheable-request@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
- integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
- dependencies:
- clone-response "^1.0.2"
- get-stream "^5.1.0"
- http-cache-semantics "^4.0.0"
- keyv "^3.0.0"
- lowercase-keys "^2.0.0"
- normalize-url "^4.1.0"
- responselike "^1.0.2"
-
-call-bind@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.1.tgz#29aca9151f8ddcfd5b9b786898f005f425e88567"
- integrity sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ==
- dependencies:
- function-bind "^1.1.1"
- get-intrinsic "^1.0.2"
-
-camelcase@^5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
-caniuse-lite@^1.0.30001173:
- version "1.0.30001173"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz#3c47bbe3cd6d7a9eda7f50ac016d158005569f56"
- integrity sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw==
-
-chalk@^1.0.0, chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
-chalk@^2.0.0, chalk@^2.4.1:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-chalk@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
- integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
-chalk@^4.0.0, chalk@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
- integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
-chardet@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
- integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-
-chokidar@^3.2.2:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.0.tgz#458a4816a415e9d3b3caa4faec2b96a6935a9e65"
- integrity sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==
- dependencies:
- anymatch "~3.1.1"
- braces "~3.0.2"
- glob-parent "~5.1.0"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.5.0"
- optionalDependencies:
- fsevents "~2.3.1"
-
-ci-info@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
- integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
-
-cli-boxes@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
- integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
-
-cli-cursor@^2.0.0, cli-cursor@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
- integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
- dependencies:
- restore-cursor "^2.0.0"
-
-cli-cursor@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
- integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
- dependencies:
- restore-cursor "^3.1.0"
-
-cli-spinners@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047"
- integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==
-
-cli-truncate@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
- integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
- dependencies:
- slice-ansi "0.0.4"
- string-width "^1.0.1"
-
-cli-width@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
- integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
-
-cliui@^7.0.2:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
- integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
- dependencies:
- string-width "^4.2.0"
- strip-ansi "^6.0.0"
- wrap-ansi "^7.0.0"
-
-clone-buffer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
- integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=
-
-clone-response@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
- integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
- dependencies:
- mimic-response "^1.0.0"
-
-clone-stats@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
- integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=
-
-clone@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
- integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
-
-clone@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
- integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
-
-cloneable-readable@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec"
- integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==
- dependencies:
- inherits "^2.0.1"
- process-nextick-args "^2.0.0"
- readable-stream "^2.3.5"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
-color-convert@^1.9.0, color-convert@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-color-name@^1.0.0, color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-color-string@^1.5.4:
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"
- integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==
- dependencies:
- color-name "^1.0.0"
- simple-swizzle "^0.2.2"
-
-color@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
- integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
- dependencies:
- color-convert "^1.9.1"
- color-string "^1.5.4"
-
-colorette@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
- integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
-
-colors@1.0.x:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
- integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
-
-colors@^1.1.2:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
- integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
-
-commander@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
- integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
-
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-configstore@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
- integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
- dependencies:
- dot-prop "^5.2.0"
- graceful-fs "^4.1.2"
- make-dir "^3.0.0"
- unique-string "^2.0.0"
- write-file-atomic "^3.0.0"
- xdg-basedir "^4.0.0"
-
-content-disposition@0.5.3:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
- integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
- dependencies:
- safe-buffer "5.1.2"
-
-content-type@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
- integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
-convert-source-map@^1.5.0, convert-source-map@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
- integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
- dependencies:
- safe-buffer "~5.1.1"
-
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-
-cookie@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
- integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
-
-core-js-compat@^3.8.0:
- version "3.8.2"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.2.tgz#3717f51f6c3d2ebba8cbf27619b57160029d1d4c"
- integrity sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ==
- dependencies:
- browserslist "^4.16.0"
- semver "7.0.0"
-
-core-js@^3.2.1:
- version "3.8.2"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.2.tgz#0a1fd6709246da9ca8eff5bb0cbd15fba9ac7044"
- integrity sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A==
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cross-spawn@^7.0.0, cross-spawn@^7.0.2:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-crypto-random-string@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
- integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
-
-cycle@1.0.x:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
- integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI=
-
-date-fns@^1.27.2:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
- integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
-
-date-format@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf"
- integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==
-
-date-format@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95"
- integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==
-
-debug@2.6.9, debug@^2.2.0:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@^3.2.6:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
- integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
- dependencies:
- ms "^2.1.1"
-
-debug@^4.1.0, debug@^4.1.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
- integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
- dependencies:
- ms "2.1.2"
-
-decompress-response@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
- integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
- dependencies:
- mimic-response "^1.0.0"
-
-deep-equal@~0.2.1:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.2.2.tgz#84b745896f34c684e98f2ce0e42abaf43bba017d"
- integrity sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=
-
-deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
-defaults@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
- integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
- dependencies:
- clone "^1.0.2"
-
-defer-to-connect@^1.0.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
- integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
-
-define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
-depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
-destroy@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
- integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-
-dot-prop@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
- integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
- dependencies:
- is-obj "^2.0.0"
-
-duplexer3@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
- integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
-
-duplexify@^3.6.0:
- version "3.7.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
- integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
- dependencies:
- end-of-stream "^1.0.0"
- inherits "^2.0.1"
- readable-stream "^2.0.0"
- stream-shift "^1.0.0"
-
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-
-electron-to-chromium@^1.3.634:
- version "1.3.635"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.635.tgz#8d1591eeca6b257d380061a2c04f0b3cc6c9e33b"
- integrity sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ==
-
-elegant-spinner@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
- integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
-
-emoji-regex@^7.0.1:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
- integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
-
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
-end-of-stream@^1.0.0, end-of-stream@^1.1.0:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
- dependencies:
- once "^1.4.0"
-
-es-abstract@^1.18.0-next.1:
- version "1.18.0-next.1"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
- integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
- dependencies:
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.2"
- is-negative-zero "^2.0.0"
- is-regex "^1.1.1"
- object-inspect "^1.8.0"
- object-keys "^1.1.1"
- object.assign "^4.1.1"
- string.prototype.trimend "^1.0.1"
- string.prototype.trimstart "^1.0.1"
-
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
-escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-
-escape-goat@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
- integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
-
-escape-goat@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c"
- integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==
-
-escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-esutils@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
- integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-
-etag@~1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-
-execa@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
- integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
- dependencies:
- cross-spawn "^7.0.0"
- get-stream "^5.0.0"
- human-signals "^1.1.1"
- is-stream "^2.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^4.0.0"
- onetime "^5.1.0"
- signal-exit "^3.0.2"
- strip-final-newline "^2.0.0"
-
-express@^4.17.1:
- version "4.17.1"
- resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
- integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
- dependencies:
- accepts "~1.3.7"
- array-flatten "1.1.1"
- body-parser "1.19.0"
- content-disposition "0.5.3"
- content-type "~1.0.4"
- cookie "0.4.0"
- cookie-signature "1.0.6"
- debug "2.6.9"
- depd "~1.1.2"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- finalhandler "~1.1.2"
- fresh "0.5.2"
- merge-descriptors "1.0.1"
- methods "~1.1.2"
- on-finished "~2.3.0"
- parseurl "~1.3.3"
- path-to-regexp "0.1.7"
- proxy-addr "~2.0.5"
- qs "6.7.0"
- range-parser "~1.2.1"
- safe-buffer "5.1.2"
- send "0.17.1"
- serve-static "1.14.1"
- setprototypeof "1.1.1"
- statuses "~1.5.0"
- type-is "~1.6.18"
- utils-merge "1.0.1"
- vary "~1.1.2"
-
-extend@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-external-editor@^3.0.3:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
- integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
- dependencies:
- chardet "^0.7.0"
- iconv-lite "^0.4.24"
- tmp "^0.0.33"
-
-eyes@0.1.x:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
- integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=
-
-figures@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
- integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
- dependencies:
- escape-string-regexp "^1.0.5"
- object-assign "^4.1.0"
-
-figures@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
- integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
- dependencies:
- escape-string-regexp "^1.0.5"
-
-figures@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
- integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
- dependencies:
- escape-string-regexp "^1.0.5"
-
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-finalhandler@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
- integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.3"
- statuses "~1.5.0"
- unpipe "~1.0.0"
-
-find-cache-dir@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
- integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
- dependencies:
- commondir "^1.0.1"
- make-dir "^2.0.0"
- pkg-dir "^3.0.0"
-
-find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
- dependencies:
- locate-path "^3.0.0"
-
-flatted@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
- integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
-
-flush-write-stream@^1.0.2:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
- integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
- dependencies:
- inherits "^2.0.3"
- readable-stream "^2.3.6"
-
-follow-redirects@^1.10.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7"
- integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==
-
-forwarded@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
- integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
-
-fresh@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-
-fs-extra@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
- integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fs-mkdirp-stream@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb"
- integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=
- dependencies:
- graceful-fs "^4.1.11"
- through2 "^2.0.3"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@~2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f"
- integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-gensync@^1.0.0-beta.1:
- version "1.0.0-beta.2"
- resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
- integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-
-get-caller-file@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
- integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-
-get-intrinsic@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49"
- integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
-
-get-stream@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
- dependencies:
- pump "^3.0.0"
-
-get-stream@^5.0.0, get-stream@^5.1.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
- integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
- dependencies:
- pump "^3.0.0"
-
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
-glob-parent@~5.1.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
- integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
- dependencies:
- is-glob "^4.0.1"
-
-glob-stream@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4"
- integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=
- dependencies:
- extend "^3.0.0"
- glob "^7.1.1"
- glob-parent "^3.1.0"
- is-negated-glob "^1.0.0"
- ordered-read-streams "^1.0.0"
- pumpify "^1.3.5"
- readable-stream "^2.1.5"
- remove-trailing-separator "^1.0.1"
- to-absolute-glob "^2.0.0"
- unique-stream "^2.0.2"
-
-glob@^7.1.1, glob@^7.1.3:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
- integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
- dependencies:
- 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"
-
-global-dirs@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d"
- integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==
- dependencies:
- ini "1.3.7"
-
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-got@^9.6.0:
- version "9.6.0"
- resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
- integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
- dependencies:
- "@sindresorhus/is" "^0.14.0"
- "@szmarczak/http-timer" "^1.1.2"
- cacheable-request "^6.0.0"
- decompress-response "^3.3.0"
- duplexer3 "^0.1.4"
- get-stream "^4.1.0"
- lowercase-keys "^1.0.1"
- mimic-response "^1.0.1"
- p-cancelable "^1.0.0"
- to-readable-stream "^1.0.0"
- url-parse-lax "^3.0.0"
-
-graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
- integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-flag@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-symbols@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
- integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
-
-has-yarn@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
- integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
-
-has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
-homedir-polyfill@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
- integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
- dependencies:
- parse-passwd "^1.0.0"
-
-http-cache-semantics@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
- integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
-
-http-errors@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
- integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
-
-http-errors@~1.7.2:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
- integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.4"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
-
-human-signals@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
- integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
-
-i@0.3.x:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d"
- integrity sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=
-
-iconv-lite@0.4.24, iconv-lite@^0.4.24:
- version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-ieee754@^1.1.13:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
-ignore-by-default@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
- integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk=
-
-immediate@~3.0.5:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
- integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
-
-import-lazy@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
- integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
-indent-string@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
- integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
-ini@1.3.7:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
- integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
-
-ini@~1.3.0:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
- integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-
-inquirer@^7.3.3:
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
- integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
- dependencies:
- ansi-escapes "^4.2.1"
- chalk "^4.1.0"
- cli-cursor "^3.1.0"
- cli-width "^3.0.0"
- external-editor "^3.0.3"
- figures "^3.0.0"
- lodash "^4.17.19"
- mute-stream "0.0.8"
- run-async "^2.4.0"
- rxjs "^6.6.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
- through "^2.3.6"
-
-ipaddr.js@1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
- integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
-
-is-absolute@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
- integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
- dependencies:
- is-relative "^1.0.0"
- is-windows "^1.0.1"
-
-is-arrayish@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
- integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-callable@^1.1.4, is-callable@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
- integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
-
-is-ci@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
- integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
- dependencies:
- ci-info "^2.0.0"
-
-is-core-module@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
- integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
- dependencies:
- has "^1.0.3"
-
-is-date-object@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
- integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
-
-is-docker@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156"
- integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
- dependencies:
- is-extglob "^2.1.0"
-
-is-glob@^4.0.1, is-glob@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-installed-globally@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141"
- integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==
- dependencies:
- global-dirs "^2.0.1"
- is-path-inside "^3.0.1"
-
-is-interactive@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
- integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
-
-is-negated-glob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
- integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
-
-is-negative-zero@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
- integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
-
-is-npm@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d"
- integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-obj@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
- integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
-
-is-observable@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
- integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==
- dependencies:
- symbol-observable "^1.1.0"
-
-is-path-inside@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
- integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
-
-is-promise@^2.1.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
- integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
-
-is-regex@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
- integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
- dependencies:
- has-symbols "^1.0.1"
-
-is-relative@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
- integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
- dependencies:
- is-unc-path "^1.0.0"
-
-is-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
- integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
-
-is-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
- integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
-
-is-symbol@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
- integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
- dependencies:
- has-symbols "^1.0.1"
-
-is-typedarray@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
-is-unc-path@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
- integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
- dependencies:
- unc-path-regex "^0.1.2"
-
-is-utf8@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
-is-valid-glob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa"
- integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=
-
-is-windows@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-is-wsl@^2.1.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
- integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
- dependencies:
- is-docker "^2.0.0"
-
-is-yarn-global@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
- integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
-
-isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isstream@0.1.x:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
- integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-
-js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
-jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
- integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-
-json-buffer@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
- integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
-
-json-stable-stringify-without-jsonify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
- integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-
-json5@^2.1.2:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
- integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
- dependencies:
- minimist "^1.2.5"
-
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-keyv@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
- integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
- dependencies:
- json-buffer "3.0.0"
-
-latest-version@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
- integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
- dependencies:
- package-json "^6.3.0"
-
-lazystream@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
- integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=
- dependencies:
- readable-stream "^2.0.5"
-
-lead@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42"
- integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=
- dependencies:
- flush-write-stream "^1.0.2"
-
-lie@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
- integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=
- dependencies:
- immediate "~3.0.5"
-
-listr-silent-renderer@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
- integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
-
-listr-update-renderer@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2"
- integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==
- dependencies:
- chalk "^1.1.3"
- cli-truncate "^0.2.1"
- elegant-spinner "^1.0.1"
- figures "^1.7.0"
- indent-string "^3.0.0"
- log-symbols "^1.0.2"
- log-update "^2.3.0"
- strip-ansi "^3.0.1"
-
-listr-verbose-renderer@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db"
- integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==
- dependencies:
- chalk "^2.4.1"
- cli-cursor "^2.1.0"
- date-fns "^1.27.2"
- figures "^2.0.0"
-
-listr@^0.14.3:
- version "0.14.3"
- resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586"
- integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==
- dependencies:
- "@samverschueren/stream-to-observable" "^0.3.0"
- is-observable "^1.1.0"
- is-promise "^2.1.0"
- is-stream "^1.1.0"
- listr-silent-renderer "^1.1.1"
- listr-update-renderer "^0.5.0"
- listr-verbose-renderer "^0.5.0"
- p-map "^2.0.0"
- rxjs "^6.3.3"
-
-localforage@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.9.0.tgz#f3e4d32a8300b362b4634cc4e066d9d00d2f09d1"
- integrity sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==
- dependencies:
- lie "3.1.1"
-
-locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
-lodash.defaultsdeep@^4.6.1:
- version "4.6.1"
- resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6"
- integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
-
-lodash.defaultto@^4.14.0:
- version "4.14.0"
- resolved "https://registry.yarnpkg.com/lodash.defaultto/-/lodash.defaultto-4.14.0.tgz#38bd3d425acee733e0e2bbbd4e4b29711cc2ee11"
- integrity sha1-OL09QlrO5zPg4ru9TkspcRzC7hE=
-
-lodash.flattendeep@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
- integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
-
-lodash.isempty@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e"
- integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=
-
-lodash.negate@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/lodash.negate/-/lodash.negate-3.0.2.tgz#9c897b0bf610019e0b43b8ff3f0afef3d7b66f34"
- integrity sha1-nIl7C/YQAZ4LQ7j/Pwr+89e2bzQ=
-
-lodash@^4.17.15, lodash@^4.17.19:
- version "4.17.20"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
- integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-
-log-symbols@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
- integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
- dependencies:
- chalk "^1.0.0"
-
-log-symbols@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
- integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
- dependencies:
- chalk "^4.0.0"
-
-log-update@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
- integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
- dependencies:
- ansi-escapes "^3.0.0"
- cli-cursor "^2.0.0"
- wrap-ansi "^3.0.1"
-
-log4js@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.3.0.tgz#10dfafbb434351a3e30277a00b9879446f715bcb"
- integrity sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==
- dependencies:
- date-format "^3.0.0"
- debug "^4.1.1"
- flatted "^2.0.1"
- rfdc "^1.1.4"
- streamroller "^2.2.4"
-
-lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
- integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
-
-lowercase-keys@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
- integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-
-make-dir@^2.0.0, make-dir@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
- integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
- dependencies:
- pify "^4.0.1"
- semver "^5.6.0"
-
-make-dir@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
- integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
- dependencies:
- semver "^6.0.0"
-
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
-
-merge-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
- integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-
-methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-
-mime-db@1.45.0:
- version "1.45.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
- integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
-
-mime-types@~2.1.24:
- version "2.1.28"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
- integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
- dependencies:
- mime-db "1.45.0"
-
-mime@1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
- integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-
-mimic-fn@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
- integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
-
-mimic-fn@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
- integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-
-mimic-response@^1.0.0, mimic-response@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
- integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
-
-minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@^1.2.0, minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-
-mkdirp@0.x.x:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
- integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
- dependencies:
- minimist "^1.2.5"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
- integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-mute-stream@0.0.8, mute-stream@~0.0.4:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
- integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
-
-ncp@1.0.x:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ncp/-/ncp-1.0.1.tgz#d15367e5cb87432ba117d2bf80fdf45aecfb4246"
- integrity sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=
-
-negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-
-new-github-release-url@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/new-github-release-url/-/new-github-release-url-1.0.0.tgz#493847e6fecce39c247e9d89929be773d2e7f777"
- integrity sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A==
- dependencies:
- type-fest "^0.4.1"
-
-node-7z@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/node-7z/-/node-7z-2.1.2.tgz#8c15d6cf7c1baae6b6774721507c8b56ec4e6dbb"
- integrity sha512-mSmn90OIYKYIkuRwH1YRJl2sMwB9OlYhCQS4SPTOfxlzWwomoC1G9j4tsvAsv7vJPwvK7B76Z0a2dH5Mvwo91Q==
- dependencies:
- cross-spawn "^7.0.2"
- debug "^4.1.1"
- lodash.defaultsdeep "^4.6.1"
- lodash.defaultto "^4.14.0"
- lodash.flattendeep "^4.4.0"
- lodash.isempty "^4.4.0"
- lodash.negate "^3.0.2"
- normalize-path "^3.0.0"
-
-node-environment-flags@^1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088"
- integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==
- dependencies:
- object.getownpropertydescriptors "^2.0.3"
- semver "^5.7.0"
-
-node-fetch@^2.6.1:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
- integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
-
-node-modules-regexp@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
- integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
-
-node-releases@^1.1.69:
- version "1.1.69"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6"
- integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==
-
-nodemon@^2.0.7:
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32"
- integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==
- dependencies:
- chokidar "^3.2.2"
- debug "^3.2.6"
- ignore-by-default "^1.0.1"
- minimatch "^3.0.4"
- pstree.remy "^1.1.7"
- semver "^5.7.1"
- supports-color "^5.5.0"
- touch "^3.1.0"
- undefsafe "^2.0.3"
- update-notifier "^4.1.0"
-
-nopt@~1.0.10:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
- integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
- dependencies:
- abbrev "1"
-
-normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-normalize-url@^4.1.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
- integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==
-
-now-and-later@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c"
- integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==
- dependencies:
- once "^1.3.2"
-
-npm-run-path@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
- integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
- dependencies:
- path-key "^3.0.0"
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-object-assign@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-inspect@^1.8.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
- integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
-
-object-keys@^1.0.12, object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.1:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
- integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- has-symbols "^1.0.1"
- object-keys "^1.1.1"
-
-object.getownpropertydescriptors@^2.0.3:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544"
- integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
-
-on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
- dependencies:
- ee-first "1.1.1"
-
-once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
-onetime@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
- integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
- dependencies:
- mimic-fn "^1.0.0"
-
-onetime@^5.1.0:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
- integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
- dependencies:
- mimic-fn "^2.1.0"
-
-open@^7.3.0:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/open/-/open-7.3.1.tgz#111119cb919ca1acd988f49685c4fdd0f4755356"
- integrity sha512-f2wt9DCBKKjlFbjzGb8MOAW8LH8F0mrs1zc7KTjAJ9PZNQbfenzWbNP1VZJvw6ICMG9r14Ah6yfwPn7T7i646A==
- dependencies:
- is-docker "^2.0.0"
- is-wsl "^2.1.1"
-
-ora@^5.1.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/ora/-/ora-5.2.0.tgz#de10bfd2d15514384af45f3fa9d9b1aaf344fda1"
- integrity sha512-+wG2v8TUU8EgzPHun1k/n45pXquQ9fHnbXVetl9rRgO6kjZszGGbraF3XPTIdgeA+s1lbRjSEftAnyT0w8ZMvQ==
- dependencies:
- bl "^4.0.3"
- chalk "^4.1.0"
- cli-cursor "^3.1.0"
- cli-spinners "^2.5.0"
- is-interactive "^1.0.0"
- log-symbols "^4.0.0"
- strip-ansi "^6.0.0"
- wcwidth "^1.0.1"
-
-ordered-read-streams@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e"
- integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=
- dependencies:
- readable-stream "^2.0.1"
-
-os-tmpdir@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-p-cancelable@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
- integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
-
-p-limit@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
- integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
- dependencies:
- p-try "^2.0.0"
-
-p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
-p-map@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
- integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
-
-p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
-package-json@^6.3.0:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
- integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
- dependencies:
- got "^9.6.0"
- registry-auth-token "^4.0.0"
- registry-url "^5.0.0"
- semver "^6.2.0"
-
-parse-passwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
- integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
-
-parseurl@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
-
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
- integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-key@^3.0.0, path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-parse@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-
-path-to-regexp@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38"
- integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==
-
-picomatch@^2.0.4, picomatch@^2.2.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
- integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
-
-pify@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
- integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-
-pirates@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
- integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
- dependencies:
- node-modules-regexp "^1.0.0"
-
-pkg-dir@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
- integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
- dependencies:
- find-up "^3.0.0"
-
-prepend-http@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
- integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
-
-process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
-prompt@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.1.0.tgz#7ae829c6d39bbc6f9b1927f9861e9ac074744167"
- integrity sha512-ec1vUPXCplDBDUVD8uPa3XGA+OzLrO40Vxv3F1uxoiZGkZhdctlK2JotcHq5X6ExjocDOGwGdCSXloGNyU5L1Q==
- dependencies:
- colors "^1.1.2"
- read "1.0.x"
- revalidator "0.1.x"
- utile "0.3.x"
- winston "2.x"
-
-proxy-addr@~2.0.5:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
- integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
- dependencies:
- forwarded "~0.1.2"
- ipaddr.js "1.9.1"
-
-pstree.remy@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
- integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
-
-pump@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
- integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-pumpify@^1.3.5:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
- integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
- dependencies:
- duplexify "^3.6.0"
- inherits "^2.0.3"
- pump "^2.0.0"
-
-pupa@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
- integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
- dependencies:
- escape-goat "^2.0.0"
-
-qs@6.7.0:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
- integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
-
-range-parser@~1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-
-raw-body@2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
- integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
- dependencies:
- bytes "3.1.0"
- http-errors "1.7.2"
- iconv-lite "0.4.24"
- unpipe "1.0.0"
-
-rc@^1.2.8:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-read@1.0.x:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
- integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
- dependencies:
- mute-stream "~0.0.4"
-
-readable-stream@3, readable-stream@^3.4.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
- dependencies:
- 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@~3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
- integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
- dependencies:
- picomatch "^2.2.1"
-
-regenerate-unicode-properties@^8.2.0:
- version "8.2.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
- integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
- dependencies:
- regenerate "^1.4.0"
-
-regenerate@^1.4.0:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
- integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-
-regenerator-runtime@^0.13.4:
- version "0.13.7"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
- integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
-
-regenerator-transform@^0.14.2:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
- integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
- dependencies:
- "@babel/runtime" "^7.8.4"
-
-regexpu-core@^4.7.1:
- version "4.7.1"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
- integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
- dependencies:
- 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"
-
-registry-auth-token@^4.0.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
- integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
- dependencies:
- rc "^1.2.8"
-
-registry-url@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
- integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
- dependencies:
- rc "^1.2.8"
-
-regjsgen@^0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
- integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
-
-regjsparser@^0.6.4:
- version "0.6.4"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272"
- integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==
- dependencies:
- jsesc "~0.5.0"
-
-remove-bom-buffer@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53"
- integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==
- dependencies:
- is-buffer "^1.1.5"
- is-utf8 "^0.2.1"
-
-remove-bom-stream@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523"
- integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=
- dependencies:
- remove-bom-buffer "^3.0.0"
- safe-buffer "^5.1.0"
- through2 "^2.0.3"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-replace-ext@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a"
- integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==
-
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
-resolve-cwd@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
- integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
- dependencies:
- resolve-from "^5.0.0"
-
-resolve-from@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
- integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-
-resolve-options@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131"
- integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=
- dependencies:
- value-or-function "^3.0.0"
-
-resolve@^1.3.2:
- version "1.19.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
- integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
- dependencies:
- is-core-module "^2.1.0"
- path-parse "^1.0.6"
-
-responselike@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
- integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
- dependencies:
- lowercase-keys "^1.0.0"
-
-restore-cursor@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
- integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
- dependencies:
- onetime "^2.0.0"
- signal-exit "^3.0.2"
-
-restore-cursor@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
- integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
- dependencies:
- onetime "^5.1.0"
- signal-exit "^3.0.2"
-
-revalidator@0.1.x:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b"
- integrity sha1-/s5hv6DBtSoga9axgZgYS91SOjs=
-
-rfdc@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2"
- integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==
-
-rimraf@2.x.x:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
- integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
- dependencies:
- glob "^7.1.3"
-
-rimraf@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
-run-async@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
- integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-
-rxjs@^6.3.3, rxjs@^6.6.0:
- version "6.6.3"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552"
- integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==
- dependencies:
- tslib "^1.9.0"
-
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-buffer@^5.1.0, safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-"safer-buffer@>= 2.1.2 < 3":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-semver-diff@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
- integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
- dependencies:
- semver "^6.3.0"
-
-semver@7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
- integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-
-semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-
-semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-
-send@0.17.1:
- version "0.17.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
- integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
- dependencies:
- debug "2.6.9"
- depd "~1.1.2"
- destroy "~1.0.4"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- fresh "0.5.2"
- http-errors "~1.7.2"
- mime "1.6.0"
- ms "2.1.1"
- on-finished "~2.3.0"
- range-parser "~1.2.1"
- statuses "~1.5.0"
-
-serve-static@1.14.1:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
- integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
- dependencies:
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- parseurl "~1.3.3"
- send "0.17.1"
-
-setprototypeof@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
- integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-signal-exit@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
- integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
-
-simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
- integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
- dependencies:
- is-arrayish "^0.3.1"
-
-slash2@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/slash2/-/slash2-2.0.0.tgz#f4e0a11708b8545b912695981cf7096f52c63487"
- integrity sha512-7ElvBydJPi3MHU/KEOblFSbO/skl4Z69jKkFCpYIYVOMSIZsKi4gYU43HGeZPmjxCXrHekoDAAewphPQNnsqtA==
-
-slice-ansi@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
- integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
-
-source-map-support@^0.5.16:
- version "0.5.19"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
- integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
-source-map@^0.5.0:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.0:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-stack-trace@0.0.x, stack-trace@^0.0.10:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
- integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
-
-"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-
-stream-shift@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
- integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
-
-streamroller@^2.2.4:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-2.2.4.tgz#c198ced42db94086a6193608187ce80a5f2b0e53"
- integrity sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==
- dependencies:
- date-format "^2.1.0"
- debug "^4.1.1"
- fs-extra "^8.1.0"
-
-string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-string-width@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
-string-width@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
- integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
- dependencies:
- emoji-regex "^7.0.1"
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^5.1.0"
-
-string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
- integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.0"
-
-string.prototype.trimend@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
- integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
-
-string.prototype.trimstart@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
- integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
-
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
- dependencies:
- ansi-regex "^3.0.0"
-
-strip-ansi@^5.1.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
- integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
- dependencies:
- ansi-regex "^4.1.0"
-
-strip-ansi@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
- integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
- dependencies:
- ansi-regex "^5.0.0"
-
-strip-final-newline@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
- integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
-supports-color@^5.3.0, supports-color@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
-symbol-observable@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
- integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
-
-term-size@^2.1.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
- integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
-
-through2-filter@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
- integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==
- dependencies:
- through2 "~2.0.0"
- xtend "~4.0.0"
-
-through2@^2.0.0, through2@^2.0.3, through2@~2.0.0:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
- integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
- dependencies:
- readable-stream "~2.3.6"
- xtend "~4.0.1"
-
-through2@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764"
- integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==
- dependencies:
- readable-stream "3"
-
-through@^2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-
-tmp@^0.0.33:
- version "0.0.33"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
- integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
- dependencies:
- os-tmpdir "~1.0.2"
-
-to-absolute-glob@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b"
- integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=
- dependencies:
- is-absolute "^1.0.0"
- is-negated-glob "^1.0.0"
-
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
-to-readable-stream@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
- integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-to-through@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6"
- integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=
- dependencies:
- through2 "^2.0.3"
-
-toidentifier@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
- integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
-
-touch@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
- integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==
- dependencies:
- nopt "~1.0.10"
-
-tslib@^1.9.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
- integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-
-tslib@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
- integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
-
-type-fest@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
- integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
-
-type-fest@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8"
- integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==
-
-type-fest@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
- integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-
-type-is@~1.6.17, type-is@~1.6.18:
- version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.24"
-
-typedarray-to-buffer@^3.1.5:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
- integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
- dependencies:
- is-typedarray "^1.0.0"
-
-unc-path-regex@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
- integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
-
-undefsafe@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae"
- integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==
- dependencies:
- debug "^2.2.0"
-
-unicode-canonical-property-names-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
- integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
-
-unicode-match-property-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
- integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
- dependencies:
- unicode-canonical-property-names-ecmascript "^1.0.4"
- unicode-property-aliases-ecmascript "^1.0.4"
-
-unicode-match-property-value-ecmascript@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
- integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
-
-unicode-property-aliases-ecmascript@^1.0.4:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
- integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
-
-unique-stream@^2.0.2:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac"
- integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==
- dependencies:
- json-stable-stringify-without-jsonify "^1.0.1"
- through2-filter "^3.0.0"
-
-unique-string@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
- integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
- dependencies:
- crypto-random-string "^2.0.0"
-
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-
-update-notifier@^4.1.0:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3"
- integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==
- dependencies:
- boxen "^4.2.0"
- chalk "^3.0.0"
- configstore "^5.0.1"
- has-yarn "^2.1.0"
- import-lazy "^2.1.0"
- is-ci "^2.0.0"
- is-installed-globally "^0.3.1"
- is-npm "^4.0.0"
- is-yarn-global "^0.3.0"
- latest-version "^5.0.0"
- pupa "^2.0.1"
- semver-diff "^3.1.1"
- xdg-basedir "^4.0.0"
-
-url-parse-lax@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
- integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
- dependencies:
- prepend-http "^2.0.0"
-
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-utile@0.3.x:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/utile/-/utile-0.3.0.tgz#1352c340eb820e4d8ddba039a4fbfaa32ed4ef3a"
- integrity sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=
- dependencies:
- async "~0.9.0"
- deep-equal "~0.2.1"
- i "0.3.x"
- mkdirp "0.x.x"
- ncp "1.0.x"
- rimraf "2.x.x"
-
-utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-
-v8flags@^3.1.1:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656"
- integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==
- dependencies:
- homedir-polyfill "^1.0.1"
-
-value-or-function@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"
- integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=
-
-vary@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-
-vinyl-fs@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7"
- integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==
- dependencies:
- fs-mkdirp-stream "^1.0.0"
- glob-stream "^6.1.0"
- graceful-fs "^4.0.0"
- is-valid-glob "^1.0.0"
- lazystream "^1.0.0"
- lead "^1.0.0"
- object.assign "^4.0.4"
- pumpify "^1.3.5"
- readable-stream "^2.3.3"
- remove-bom-buffer "^3.0.0"
- remove-bom-stream "^1.2.0"
- resolve-options "^1.1.0"
- through2 "^2.0.0"
- to-through "^2.0.0"
- value-or-function "^3.0.0"
- vinyl "^2.0.0"
- vinyl-sourcemap "^1.1.0"
-
-vinyl-sourcemap@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16"
- integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=
- dependencies:
- append-buffer "^1.0.2"
- convert-source-map "^1.5.0"
- graceful-fs "^4.1.6"
- normalize-path "^2.1.1"
- now-and-later "^2.0.0"
- remove-bom-buffer "^3.0.0"
- vinyl "^2.0.0"
-
-vinyl@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
- integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
- dependencies:
- clone "^2.1.1"
- clone-buffer "^1.0.0"
- clone-stats "^1.0.0"
- cloneable-readable "^1.0.0"
- remove-trailing-separator "^1.0.1"
- replace-ext "^1.0.0"
-
-wcwidth@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
- integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
- dependencies:
- defaults "^1.0.3"
-
-which@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-widest-line@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
- integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
- dependencies:
- string-width "^4.0.0"
-
-winston@2.x:
- version "2.4.5"
- resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.5.tgz#f2e431d56154c4ea765545fc1003bd340c95b59a"
- integrity sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==
- dependencies:
- async "~1.0.0"
- colors "1.0.x"
- cycle "1.0.x"
- eyes "0.1.x"
- isstream "0.1.x"
- stack-trace "0.0.x"
-
-wrap-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
- integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
- dependencies:
- string-width "^2.1.1"
- strip-ansi "^4.0.0"
-
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-write-file-atomic@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
- integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
- dependencies:
- imurmurhash "^0.1.4"
- is-typedarray "^1.0.0"
- signal-exit "^3.0.2"
- typedarray-to-buffer "^3.1.5"
-
-xdg-basedir@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
- integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
-
-xtend@~4.0.0, xtend@~4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
-y18n@^5.0.5:
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
- integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
-
-yargs-parser@^20.2.2:
- version "20.2.4"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
- integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
-
-yargs@^16.2.0:
- version "16.2.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
- integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
- dependencies:
- cliui "^7.0.2"
- escalade "^3.1.1"
- get-caller-file "^2.0.5"
- require-directory "^2.1.1"
- string-width "^4.2.0"
- y18n "^5.0.5"
- yargs-parser "^20.2.2"
diff --git a/packages/wrapper/package.json b/packages/wrapper/package.json
index 8b301b3a..1f137c01 100644
--- a/packages/wrapper/package.json
+++ b/packages/wrapper/package.json
@@ -28,5 +28,6 @@
"styled-components": "^5.2.0",
"umi": "^3.4.20",
"yorkie": "^2.0.0"
- }
+ },
+ "version": "0.13.0"
}
diff --git a/tsconfig.json b/tsconfig.json
deleted file mode 100755
index 817e3b20..00000000
--- a/tsconfig.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "compilerOptions": {
- "target": "esnext",
- "module": "esnext",
- "moduleResolution": "node",
- "importHelpers": true,
- "jsx": "react",
- "esModuleInterop": true,
- "sourceMap": true,
- "baseUrl": "./",
- "strict": true,
- "paths": {
- "@/*": ["src/*"],
- "@@/*": ["src/.umi/*"]
- },
- "allowSyntheticDefaultImports": true
- },
- "include": [
- "src/**/*",
- "packages/comty/config/**/*",
- "packages/comty/.umirc.js",
- "packages/comty/typings.d.ts"
- ]
-}