From bf8054576682340404f3a48ee4d86949685d483b Mon Sep 17 00:00:00 2001
From: Shekar Siri
Date: Tue, 4 May 2021 18:59:46 +0530
Subject: [PATCH 01/10] integrations doc links
---
.../Integrations/BugsnagForm/BugsnagForm.js | 35 +-
.../CloudwatchForm/CloudwatchForm.js | 3 +-
.../Client/Integrations/DatadogForm.js | 3 +-
.../Client/Integrations/ElasticsearchForm.js | 3 +-
.../Client/Integrations/FetchDoc/FetchDoc.js | 5 +-
.../Client/Integrations/GithubForm.js | 3 +-
.../Integrations/GraphQLDoc/GraphQLDoc.js | 5 +-
.../Client/Integrations/Integrations.js | 6 +-
.../Client/Integrations/JiraForm/JiraForm.js | 47 +-
.../Client/Integrations/MobxDoc/MobxDoc.js | 5 +-
.../Integrations/NewrelicForm/NewrelicForm.js | 3 +-
.../Client/Integrations/NgRxDoc/NgRxDoc.js | 5 +-
.../Integrations/ProfilerDoc/ProfilerDoc.js | 5 +-
.../Client/Integrations/ReduxDoc/ReduxDoc.js | 3 +-
.../Client/Integrations/RollbarForm.js | 3 +-
.../Client/Integrations/SentryForm.js | 3 +-
.../Client/Integrations/StackdriverForm.js | 3 +-
.../SumoLogicForm/SumoLogicForm.js | 3 +-
.../Client/Integrations/VueDoc/VueDoc.js | 3 +-
.../OnboardingTabs/InstallDocs/InstallDocs.js | 2 +-
.../Session_/Player/Controls/Timeline.js | 3 +-
.../app/components/shared/DocLink/DocLink.js | 6 +-
frontend/app/svg/icons/integrations/mobx.svg | 1 +
.../app/svg/icons/integrations/openreplay.svg | 2 +-
frontend/env.js | 2 +-
frontend/package-lock.json | 20740 ++++++----------
frontend/scripts/upload-minio.js | 11 +-
27 files changed, 7902 insertions(+), 13011 deletions(-)
create mode 100644 frontend/app/svg/icons/integrations/mobx.svg
diff --git a/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js b/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js
index fc3dc1c72..e73f19bcd 100644
--- a/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js
+++ b/frontend/app/components/Client/Integrations/BugsnagForm/BugsnagForm.js
@@ -1,22 +1,29 @@
import { tokenRE } from 'Types/integrations/bugsnagConfig';
import IntegrationForm from '../IntegrationForm';
import ProjectListDropdown from './ProjectListDropdown';
+import DocLink from 'Shared/DocLink/DocLink';
const BugsnagForm = (props) => (
- tokenRE.test(config.authorizationToken),
- component: ProjectListDropdown,
- }
- ]}
- />
+ <>
+
+
How to integrate Bugsnag with OpenReplay and see backend errors alongside session recordings.
+
+
+ tokenRE.test(config.authorizationToken),
+ component: ProjectListDropdown,
+ }
+ ]}
+ />
+ >
);
BugsnagForm.displayName = "BugsnagForm";
diff --git a/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js b/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js
index df7fbd1ce..e29e343f9 100644
--- a/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js
+++ b/frontend/app/components/Client/Integrations/CloudwatchForm/CloudwatchForm.js
@@ -2,12 +2,13 @@ import { ACCESS_KEY_ID_LENGTH, SECRET_ACCESS_KEY_LENGTH } from 'Types/integratio
import IntegrationForm from '../IntegrationForm';
import LogGroupDropdown from './LogGroupDropdown';
import RegionDropdown from './RegionDropdown';
+import DocLink from 'Shared/DocLink/DocLink';
const CloudwatchForm = (props) => (
<>
How to integrate CloudWatch with OpenReplay and see backend errors alongside session replays.
-
+
(
<>
How to integrate Datadog with OpenReplay and see backend errors alongside session recordings.
-
+
({
config: state.getIn([ 'elasticsearch', 'instance' ])
@@ -43,7 +44,7 @@ export default class ElasticsearchForm extends React.PureComponent {
<>
How to integrate Elasticsearch with OpenReplay and see backend errors alongside session recordings.
-
+
{
return (
@@ -55,7 +56,7 @@ fetch('https://api.openreplay.com/').then(response => console.log(response.json(
}
/>
- See
API for more options.
+
)
};
diff --git a/frontend/app/components/Client/Integrations/GithubForm.js b/frontend/app/components/Client/Integrations/GithubForm.js
index f9daeebe4..32bc42ceb 100644
--- a/frontend/app/components/Client/Integrations/GithubForm.js
+++ b/frontend/app/components/Client/Integrations/GithubForm.js
@@ -1,11 +1,12 @@
import IntegrationForm from './IntegrationForm';
+import DocLink from 'Shared/DocLink/DocLink';
const GithubForm = (props) => (
<>
Integrate GitHub with OpenReplay and create issues directly from the recording page.
{
return (
@@ -52,7 +53,7 @@ export const recordGraphQL = tracker.use(trackerGraphQL());`}
}
/>
- See
API for more options.
+
)
};
diff --git a/frontend/app/components/Client/Integrations/Integrations.js b/frontend/app/components/Client/Integrations/Integrations.js
index c148d7f31..d90587e5f 100644
--- a/frontend/app/components/Client/Integrations/Integrations.js
+++ b/frontend/app/components/Client/Integrations/Integrations.js
@@ -289,7 +289,7 @@ export default class Integrations extends React.PureComponent {
this.showIntegrationConfig(FETCH) }
@@ -298,7 +298,7 @@ export default class Integrations extends React.PureComponent {
this.showIntegrationConfig(MOBX) }
@@ -307,7 +307,7 @@ export default class Integrations extends React.PureComponent {
this.showIntegrationConfig(PROFILER) }
diff --git a/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js b/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js
index 278f89890..867ebbcd1 100644
--- a/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js
+++ b/frontend/app/components/Client/Integrations/JiraForm/JiraForm.js
@@ -1,25 +1,34 @@
import IntegrationForm from '../IntegrationForm';
+import DocLink from 'Shared/DocLink/DocLink';
const JiraForm = (props) => (
-
+ <>
+
+
How to integrate Jira Cloud with OpenReplay.
+
+
+
+
+
+ >
);
JiraForm.displayName = "JiraForm";
diff --git a/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js b/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js
index f8ab34fa0..7c4b3233b 100644
--- a/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js
+++ b/frontend/app/components/Client/Integrations/MobxDoc/MobxDoc.js
@@ -1,5 +1,6 @@
import Highlight from 'react-highlight'
-import ToggleContent from '../../../shared/ToggleContent'
+import ToggleContent from 'Shared/ToggleContent'
+import DocLink from 'Shared/DocLink/DocLink';
const MobxDoc = (props) => {
return (
@@ -49,7 +50,7 @@ function SomeFunctionalComponent() {
}
/>
- See
API for more options.
+
)
};
diff --git a/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js b/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js
index 769a17551..0e7b0bed6 100644
--- a/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js
+++ b/frontend/app/components/Client/Integrations/NewrelicForm/NewrelicForm.js
@@ -1,10 +1,11 @@
import IntegrationForm from '../IntegrationForm';
+import DocLink from 'Shared/DocLink/DocLink';
const NewrelicForm = (props) => (
<>
How to integrate NewRelic with OpenReplay and see backend errors alongside session recordings.
-
+
{
return (
@@ -65,7 +66,7 @@ const metaReducers = [tracker.use(trackerNgRx())]; // check list of ava
}
/>
- See
API for more options.
+
)
};
diff --git a/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js b/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js
index 4a3e4a3d9..e61f968b9 100644
--- a/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js
+++ b/frontend/app/components/Client/Integrations/ProfilerDoc/ProfilerDoc.js
@@ -1,5 +1,6 @@
import Highlight from 'react-highlight'
-import ToggleContent from '../../../shared/ToggleContent'
+import ToggleContent from 'Shared/ToggleContent'
+import DocLink from 'Shared/DocLink/DocLink';
const ProfilerDoc = (props) => {
return (
@@ -59,7 +60,7 @@ const fn = profiler('call_name')(() => {
}
/>
- See
API for more options.
+
)
};
diff --git a/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js b/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js
index a88fb4103..acc083a97 100644
--- a/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js
+++ b/frontend/app/components/Client/Integrations/ReduxDoc/ReduxDoc.js
@@ -1,5 +1,6 @@
import Highlight from 'react-highlight'
import ToggleContent from '../../../shared/ToggleContent';
+import DocLink from 'Shared/DocLink/DocLink';
const ReduxDoc = (props) => {
return (
@@ -58,7 +59,7 @@ const store = createStore(
}
/>
- See
API for more options.
+
)
};
diff --git a/frontend/app/components/Client/Integrations/RollbarForm.js b/frontend/app/components/Client/Integrations/RollbarForm.js
index 87a2033e4..04ccc8b2b 100644
--- a/frontend/app/components/Client/Integrations/RollbarForm.js
+++ b/frontend/app/components/Client/Integrations/RollbarForm.js
@@ -1,10 +1,11 @@
import IntegrationForm from './IntegrationForm';
+import DocLink from 'Shared/DocLink/DocLink';
const RollbarForm = (props) => (
<>
How to integrate Rollbar with OpenReplay and see backend errors alongside session replays.
-
+
(
<>
How to integrate Sentry with OpenReplay and see backend errors alongside session recordings.
-
+
(
<>
How to integrate Stackdriver with OpenReplay and see backend errors alongside session recordings.
-
+
(
<>
How to integrate SumoLogic with OpenReplay and see backend errors alongside session recordings.
-
+
{
return (
@@ -59,7 +60,7 @@ const store = new Vuex.Store({
}
/>
- See
API for more options.
+
)
};
diff --git a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js
index 4072b2018..2d6230c0a 100644
--- a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js
+++ b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js
@@ -88,7 +88,7 @@ function InstallDocs({ site }) {
-
+
)
}
diff --git a/frontend/app/components/Session_/Player/Controls/Timeline.js b/frontend/app/components/Session_/Player/Controls/Timeline.js
index aeab1af64..4114929c9 100644
--- a/frontend/app/components/Session_/Player/Controls/Timeline.js
+++ b/frontend/app/components/Session_/Player/Controls/Timeline.js
@@ -112,6 +112,7 @@ export default class Timeline extends React.PureComponent {
style={ {
left: `${ interval.start * scale }%`,
width: `${ (interval.end - interval.start) * scale }%`,
+ top: '-30px'
} }
/>))
}
@@ -120,7 +121,7 @@ export default class Timeline extends React.PureComponent {
))
}
diff --git a/frontend/app/components/shared/DocLink/DocLink.js b/frontend/app/components/shared/DocLink/DocLink.js
index 052d648a1..d750fe192 100644
--- a/frontend/app/components/shared/DocLink/DocLink.js
+++ b/frontend/app/components/shared/DocLink/DocLink.js
@@ -1,13 +1,13 @@
import React from 'react'
import { Button } from 'UI'
-export default function DocLink({ link, label }) {
+export default function DocLink({ className = '', url, label }) {
const openLink = () => {
- window.open(link, '_blank')
+ window.open(url, '_blank')
}
return (
-
+
{ label }
diff --git a/frontend/app/svg/icons/integrations/mobx.svg b/frontend/app/svg/icons/integrations/mobx.svg
new file mode 100644
index 000000000..2747797bd
--- /dev/null
+++ b/frontend/app/svg/icons/integrations/mobx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/app/svg/icons/integrations/openreplay.svg b/frontend/app/svg/icons/integrations/openreplay.svg
index 77fb302b9..667be8f22 100644
--- a/frontend/app/svg/icons/integrations/openreplay.svg
+++ b/frontend/app/svg/icons/integrations/openreplay.svg
@@ -1,5 +1,5 @@
-
+
Group
diff --git a/frontend/env.js b/frontend/env.js
index 4c5902987..0bdc0ab4a 100644
--- a/frontend/env.js
+++ b/frontend/env.js
@@ -8,7 +8,7 @@ const oss = {
CAPTCHA_ENABLED: process.env.CAPTCHA_ENABLED,
CAPTCHA_SITE_KEY: process.env.CAPTCHA_SITE_KEY,
ORIGIN: () => 'window.location.origin',
- API_EDP: () => 'window.location.origin + "/api"',
+ API_EDP: 'https://staging-parrot.asayer.io',
ASSETS_HOST: () => 'window.location.origin + "/assets"',
VERSION: '1.0.1',
SOURCEMAP: true,
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index fa3abbf98..9f40b8bba 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -106,16 +106,15 @@
}
},
"node_modules/@babel/cli": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.10.tgz",
- "integrity": "sha512-lYSBC7B4B9hJ7sv0Ojx1BrGhuzCoOIYfLjd+Xpd4rOzdS+a47yi8voV8vFkfjlZR1N5qZO7ixOCbobUdT304PQ==",
+ "version": "7.13.16",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.16.tgz",
+ "integrity": "sha512-cL9tllhqvsQ6r1+d9Invf7nNXg/3BlfL1vvvL/AdH9fZ2l5j0CeBcoq6UjsqHpvyN1v5nXSZgqJZoGeK+ZOAbw==",
"dev": true,
"dependencies": {
"commander": "^4.0.1",
"convert-source-map": "^1.1.0",
"fs-readdir-recursive": "^1.1.0",
"glob": "^7.0.0",
- "lodash": "^4.17.19",
"make-dir": "^2.1.0",
"slash": "^2.0.0",
"source-map": "^0.5.0"
@@ -151,31 +150,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz",
- "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==",
+ "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==",
"dev": true
},
"node_modules/@babel/core": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz",
- "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz",
+ "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
- "@babel/helper-compilation-targets": "^7.13.10",
- "@babel/helper-module-transforms": "^7.13.0",
- "@babel/helpers": "^7.13.10",
- "@babel/parser": "^7.13.10",
+ "@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.13.0",
- "@babel/types": "^7.13.0",
+ "@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",
- "lodash": "^4.17.19",
"semver": "^6.3.0",
"source-map": "^0.5.0"
},
@@ -197,12 +195,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.13.9",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz",
- "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz",
+ "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.13.0",
+ "@babel/types": "^7.14.1",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -236,12 +234,12 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz",
- "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==",
+ "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==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.13.8",
+ "@babel/compat-data": "^7.13.15",
"@babel/helper-validator-option": "^7.12.17",
"browserslist": "^4.14.5",
"semver": "^6.3.0"
@@ -251,15 +249,16 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.13.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz",
- "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz",
+ "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==",
"dev": true,
"dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.12.13",
"@babel/helper-function-name": "^7.12.13",
- "@babel/helper-member-expression-to-functions": "^7.13.0",
+ "@babel/helper-member-expression-to-functions": "^7.13.12",
"@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/helper-replace-supers": "^7.13.0",
+ "@babel/helper-replace-supers": "^7.13.12",
"@babel/helper-split-export-declaration": "^7.12.13"
},
"peerDependencies": {
@@ -280,9 +279,9 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
- "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz",
+ "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==",
"dev": true,
"dependencies": {
"@babel/helper-compilation-targets": "^7.13.0",
@@ -328,13 +327,13 @@
}
},
"node_modules/@babel/helper-hoist-variables": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz",
- "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==",
+ "version": "7.13.16",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz",
+ "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==",
"dev": true,
"dependencies": {
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "@babel/traverse": "^7.13.15",
+ "@babel/types": "^7.13.16"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
@@ -356,19 +355,19 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz",
- "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz",
+ "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==",
"dev": true,
"dependencies": {
"@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.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.12"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"node_modules/@babel/helper-optimise-call-expression": {
@@ -437,9 +436,9 @@
}
},
"node_modules/@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==",
+ "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==",
"dev": true
},
"node_modules/@babel/helper-validator-option": {
@@ -461,31 +460,31 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz",
- "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
+ "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==",
"dev": true,
"dependencies": {
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
- "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
+ "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz",
- "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz",
+ "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -509,9 +508,9 @@
}
},
"node_modules/@babel/plugin-proposal-async-generator-functions": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz",
- "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==",
+ "version": "7.13.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz",
+ "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -535,13 +534,26 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-decorators": {
- "version": "7.13.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz",
- "integrity": "sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==",
+ "node_modules/@babel/plugin-proposal-class-static-block": {
+ "version": "7.13.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz",
+ "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/plugin-syntax-class-static-block": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.13.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.15.tgz",
+ "integrity": "sha512-ibAMAqUm97yzi+LPgdr5Nqb9CMkeieGHvwPg1ywSGjZrZHQEGqE01HmOio8kxRpA/+VtOHouIVy2FMpBbtltjA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.13.11",
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-decorators": "^7.12.13"
},
@@ -696,6 +708,21 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz",
+ "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.12.13",
+ "@babel/helper-create-class-features-plugin": "^7.14.0",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-proposal-unicode-property-regex": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz",
@@ -748,6 +775,18 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz",
+ "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-syntax-decorators": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz",
@@ -904,6 +943,18 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz",
+ "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.13.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@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",
@@ -967,12 +1018,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz",
- "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz",
+ "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "@babel/helper-plugin-utils": "^7.13.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -1009,9 +1060,9 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz",
- "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==",
+ "version": "7.13.17",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz",
+ "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0"
@@ -1121,12 +1172,12 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz",
- "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz",
+ "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-module-transforms": "^7.14.0",
"@babel/helper-plugin-utils": "^7.13.0",
"babel-plugin-dynamic-import-node": "^2.3.3"
},
@@ -1135,14 +1186,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz",
- "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz",
+ "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-module-transforms": "^7.14.0",
"@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-simple-access": "^7.12.13",
+ "@babel/helper-simple-access": "^7.13.12",
"babel-plugin-dynamic-import-node": "^2.3.3"
},
"peerDependencies": {
@@ -1166,12 +1217,12 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz",
- "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz",
+ "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-module-transforms": "^7.14.0",
"@babel/helper-plugin-utils": "^7.13.0"
},
"peerDependencies": {
@@ -1240,9 +1291,9 @@
}
},
"node_modules/@babel/plugin-transform-react-constant-elements": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz",
- "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==",
+ "version": "7.13.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz",
+ "integrity": "sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0"
@@ -1329,9 +1380,9 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz",
- "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==",
+ "version": "7.13.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz",
+ "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==",
"dev": true,
"dependencies": {
"regenerator-transform": "^0.14.2"
@@ -1477,18 +1528,19 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz",
- "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz",
+ "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.13.12",
- "@babel/helper-compilation-targets": "^7.13.10",
+ "@babel/compat-data": "^7.14.0",
+ "@babel/helper-compilation-targets": "^7.13.16",
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/helper-validator-option": "^7.12.17",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12",
- "@babel/plugin-proposal-async-generator-functions": "^7.13.8",
+ "@babel/plugin-proposal-async-generator-functions": "^7.13.15",
"@babel/plugin-proposal-class-properties": "^7.13.0",
+ "@babel/plugin-proposal-class-static-block": "^7.13.11",
"@babel/plugin-proposal-dynamic-import": "^7.13.8",
"@babel/plugin-proposal-export-namespace-from": "^7.12.13",
"@babel/plugin-proposal-json-strings": "^7.13.8",
@@ -1499,9 +1551,11 @@
"@babel/plugin-proposal-optional-catch-binding": "^7.13.8",
"@babel/plugin-proposal-optional-chaining": "^7.13.12",
"@babel/plugin-proposal-private-methods": "^7.13.0",
+ "@babel/plugin-proposal-private-property-in-object": "^7.14.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.12.13",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
"@babel/plugin-syntax-json-strings": "^7.8.3",
@@ -1511,14 +1565,15 @@
"@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-private-property-in-object": "^7.14.0",
"@babel/plugin-syntax-top-level-await": "^7.12.13",
"@babel/plugin-transform-arrow-functions": "^7.13.0",
"@babel/plugin-transform-async-to-generator": "^7.13.0",
"@babel/plugin-transform-block-scoped-functions": "^7.12.13",
- "@babel/plugin-transform-block-scoping": "^7.12.13",
+ "@babel/plugin-transform-block-scoping": "^7.14.1",
"@babel/plugin-transform-classes": "^7.13.0",
"@babel/plugin-transform-computed-properties": "^7.13.0",
- "@babel/plugin-transform-destructuring": "^7.13.0",
+ "@babel/plugin-transform-destructuring": "^7.13.17",
"@babel/plugin-transform-dotall-regex": "^7.12.13",
"@babel/plugin-transform-duplicate-keys": "^7.12.13",
"@babel/plugin-transform-exponentiation-operator": "^7.12.13",
@@ -1526,16 +1581,16 @@
"@babel/plugin-transform-function-name": "^7.12.13",
"@babel/plugin-transform-literals": "^7.12.13",
"@babel/plugin-transform-member-expression-literals": "^7.12.13",
- "@babel/plugin-transform-modules-amd": "^7.13.0",
- "@babel/plugin-transform-modules-commonjs": "^7.13.8",
+ "@babel/plugin-transform-modules-amd": "^7.14.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.14.0",
"@babel/plugin-transform-modules-systemjs": "^7.13.8",
- "@babel/plugin-transform-modules-umd": "^7.13.0",
+ "@babel/plugin-transform-modules-umd": "^7.14.0",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
"@babel/plugin-transform-new-target": "^7.12.13",
"@babel/plugin-transform-object-super": "^7.12.13",
"@babel/plugin-transform-parameters": "^7.13.0",
"@babel/plugin-transform-property-literals": "^7.12.13",
- "@babel/plugin-transform-regenerator": "^7.12.13",
+ "@babel/plugin-transform-regenerator": "^7.13.15",
"@babel/plugin-transform-reserved-words": "^7.12.13",
"@babel/plugin-transform-shorthand-properties": "^7.12.13",
"@babel/plugin-transform-spread": "^7.13.0",
@@ -1545,10 +1600,10 @@
"@babel/plugin-transform-unicode-escapes": "^7.12.13",
"@babel/plugin-transform-unicode-regex": "^7.12.13",
"@babel/preset-modules": "^0.1.4",
- "@babel/types": "^7.13.12",
- "babel-plugin-polyfill-corejs2": "^0.1.4",
- "babel-plugin-polyfill-corejs3": "^0.1.3",
- "babel-plugin-polyfill-regenerator": "^0.1.2",
+ "@babel/types": "^7.14.1",
+ "babel-plugin-polyfill-corejs2": "^0.2.0",
+ "babel-plugin-polyfill-corejs3": "^0.2.0",
+ "babel-plugin-polyfill-regenerator": "^0.2.0",
"core-js-compat": "^3.9.0",
"semver": "^6.3.0"
},
@@ -1557,13 +1612,14 @@
}
},
"node_modules/@babel/preset-flow": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.12.13.tgz",
- "integrity": "sha512-gcEjiwcGHa3bo9idURBp5fmJPcyFPOszPQjztXrOjUE2wWVqc6fIVJPgWPIQksaQ5XZ2HWiRsf2s1fRGVjUtVw==",
+ "version": "7.13.13",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.13.13.tgz",
+ "integrity": "sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13",
- "@babel/plugin-transform-flow-strip-types": "^7.12.13"
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-validator-option": "^7.12.17",
+ "@babel/plugin-transform-flow-strip-types": "^7.13.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -1586,15 +1642,16 @@
}
},
"node_modules/@babel/preset-react": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz",
- "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==",
+ "version": "7.13.13",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz",
+ "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-validator-option": "^7.12.17",
"@babel/plugin-transform-react-display-name": "^7.12.13",
- "@babel/plugin-transform-react-jsx": "^7.12.13",
- "@babel/plugin-transform-react-jsx-development": "^7.12.12",
+ "@babel/plugin-transform-react-jsx": "^7.13.12",
+ "@babel/plugin-transform-react-jsx-development": "^7.12.17",
"@babel/plugin-transform-react-pure-annotations": "^7.12.1"
},
"peerDependencies": {
@@ -1616,13 +1673,13 @@
}
},
"node_modules/@babel/register": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.8.tgz",
- "integrity": "sha512-yCVtABcmvQjRsX2elcZFUV5Q5kDDpHdtXKKku22hNDma60lYuhKmtp1ykZ/okRCPLT2bR5S+cA1kvtBdAFlDTQ==",
+ "version": "7.13.16",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.16.tgz",
+ "integrity": "sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg==",
"dev": true,
"dependencies": {
+ "clone-deep": "^4.0.1",
"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"
@@ -1632,17 +1689,17 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz",
- "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
+ "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==",
"dependencies": {
"regenerator-runtime": "^0.13.4"
}
},
"node_modules/@babel/runtime-corejs3": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz",
- "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz",
+ "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==",
"dev": true,
"dependencies": {
"core-js-pure": "^3.0.0",
@@ -1661,30 +1718,28 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz",
- "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz",
+ "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.0",
+ "@babel/generator": "^7.14.0",
"@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.13.0",
- "@babel/types": "^7.13.0",
+ "@babel/parser": "^7.14.0",
+ "@babel/types": "^7.14.0",
"debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.19"
+ "globals": "^11.1.0"
}
},
"node_modules/@babel/types": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
- "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
+ "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
+ "@babel/helper-validator-identifier": "^7.14.0",
"to-fast-properties": "^2.0.0"
}
},
@@ -1966,15 +2021,6 @@
"react": ">=0.14.0"
}
},
- "node_modules/@icons/material": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz",
- "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==",
- "dev": true,
- "peerDependencies": {
- "react": "*"
- }
- },
"node_modules/@jest/console": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
@@ -2075,15 +2121,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/@jest/core/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@jest/core/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -2307,15 +2344,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/@jest/transform/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@jest/transform/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -2532,9 +2560,9 @@
}
},
"node_modules/@popperjs/core": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
- "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz",
+ "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -2646,19 +2674,19 @@
}
},
"node_modules/@storybook/addons": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.1.21.tgz",
- "integrity": "sha512-xo5TGu9EZVCqgh3D1veVnfuGzyKDWWsvOMo18phVqRxj21G3/+hScVyfIYwNTv7Ys5/Ahp9JxJUMXL3V3ny+tw==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.2.9.tgz",
+ "integrity": "sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ==",
"dev": true,
"dependencies": {
- "@storybook/api": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/router": "6.1.21",
- "@storybook/theming": "6.1.21",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
+ "@storybook/api": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/router": "6.2.9",
+ "@storybook/theming": "6.2.9",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
"regenerator-runtime": "^0.13.7"
},
"peerDependencies": {
@@ -2667,28 +2695,29 @@
}
},
"node_modules/@storybook/api": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.1.21.tgz",
- "integrity": "sha512-QjZk70VSXMw/wPPoWdMp5Bl9VmkfmGhIz8PALrFLLEZHjzptpfZE2qkGEEJHG0NAksFUv6NxGki2/632dzR7Ug==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.2.9.tgz",
+ "integrity": "sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ==",
"dev": true,
"dependencies": {
- "@reach/router": "^1.3.3",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
+ "@reach/router": "^1.3.4",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
"@storybook/csf": "0.0.1",
- "@storybook/router": "6.1.21",
+ "@storybook/router": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.1.21",
+ "@storybook/theming": "6.2.9",
"@types/reach__router": "^1.3.7",
- "core-js": "^3.0.1",
- "fast-deep-equal": "^3.1.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
"regenerator-runtime": "^0.13.7",
- "store2": "^2.7.1",
- "telejson": "^5.0.2",
+ "store2": "^2.12.0",
+ "telejson": "^5.1.0",
"ts-dedent": "^2.0.0",
"util-deprecate": "^1.0.2"
},
@@ -2697,122 +2726,23 @@
"react-dom": "^16.8.0 || ^17.0.0"
}
},
- "node_modules/@storybook/channel-postmessage": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.1.21.tgz",
- "integrity": "sha512-SuI/ffqcPT02VNda32k8V0D4XpLm5bIy8CLIs0OAnQg+zt5KjGBpQBngk3q4EaAiOoAhbMWAQiUzRUXfrgkgXg==",
+ "node_modules/@storybook/builder-webpack4": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.2.9.tgz",
+ "integrity": "sha512-swECic1huVdj+B+iRJIQ8ds59HuPVE4fmhI+j/nhw0CQCsgAEKqDlOQVYEimW6nZX8GO4WxNm6tiiRzxixejbw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
- "qs": "^6.6.0",
- "telejson": "^5.0.2"
- }
- },
- "node_modules/@storybook/channels": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.1.21.tgz",
- "integrity": "sha512-7WoizMjyHqCyvcWncLexSg9FLPIErWAZL4NvluEthwsHSO2sDybn9mh1pzsFHdYMuTP6ml06Zt9ayWMtIveHDg==",
- "dev": true,
- "dependencies": {
- "core-js": "^3.0.1",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
- }
- },
- "node_modules/@storybook/client-api": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.1.21.tgz",
- "integrity": "sha512-uLFXQ5z1LLWYnw1w+YUJPzIPRVlwCCvM2Si37aHDZn1F3fnbMg+huEhEqIQ1TTTw3wiJoTeGuShYvqyaiNwq/w==",
- "dev": true,
- "dependencies": {
- "@storybook/addons": "6.1.21",
- "@storybook/channel-postmessage": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/csf": "0.0.1",
- "@types/qs": "^6.9.0",
- "@types/webpack-env": "^1.15.3",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
- "memoizerific": "^1.11.3",
- "qs": "^6.6.0",
- "regenerator-runtime": "^0.13.7",
- "stable": "^0.1.8",
- "store2": "^2.7.1",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0",
- "react-dom": "^16.8.0 || ^17.0.0"
- }
- },
- "node_modules/@storybook/client-logger": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.1.21.tgz",
- "integrity": "sha512-QJV+gnVM2fQ4M7lSkRLCXkOw/RU+aEtUefo9TAnXxPHK3UGG+DyvLmha6fHGaz9GAcFxyWtgqCyVOhMe03Q35g==",
- "dev": true,
- "dependencies": {
- "core-js": "^3.0.1",
- "global": "^4.3.2"
- }
- },
- "node_modules/@storybook/components": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.1.21.tgz",
- "integrity": "sha512-2NjkyS1yeYXlRY7azt88woqd6eqJA00oloIxgMAFLVpRmvFxoHalY61wNrvxl2QSu9cNofp984AbGc8gPbizBA==",
- "dev": true,
- "dependencies": {
- "@popperjs/core": "^2.5.4",
- "@storybook/client-logger": "6.1.21",
- "@storybook/csf": "0.0.1",
- "@storybook/theming": "6.1.21",
- "@types/overlayscrollbars": "^1.9.0",
- "@types/react-color": "^3.0.1",
- "@types/react-syntax-highlighter": "11.0.4",
- "core-js": "^3.0.1",
- "fast-deep-equal": "^3.1.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
- "markdown-to-jsx": "^6.11.4",
- "memoizerific": "^1.11.3",
- "overlayscrollbars": "^1.10.2",
- "polished": "^3.4.4",
- "react-color": "^2.17.0",
- "react-popper-tooltip": "^3.1.1",
- "react-syntax-highlighter": "^13.5.0",
- "react-textarea-autosize": "^8.1.1",
- "regenerator-runtime": "^0.13.7",
- "ts-dedent": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0",
- "react-dom": "^16.8.0 || ^17.0.0"
- }
- },
- "node_modules/@storybook/core": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.1.21.tgz",
- "integrity": "sha512-ITqSid3VVL5/fkx7Wwu7QfD2Y5xjl3V6p7yUpLSzP8GpBnCHKDvJ4pFJUdJlGQ0mnGz6ACa0qVnSc+V0hiy1sA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.12.3",
+ "@babel/core": "^7.12.10",
"@babel/plugin-proposal-class-properties": "^7.12.1",
- "@babel/plugin-proposal-decorators": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
"@babel/plugin-proposal-export-default-from": "^7.12.1",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
- "@babel/plugin-proposal-optional-chaining": "^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-arrow-functions": "^7.12.1",
- "@babel/plugin-transform-block-scoping": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
"@babel/plugin-transform-classes": "^7.12.1",
"@babel/plugin-transform-destructuring": "^7.12.1",
"@babel/plugin-transform-for-of": "^7.12.1",
@@ -2820,86 +2750,55 @@
"@babel/plugin-transform-shorthand-properties": "^7.12.1",
"@babel/plugin-transform-spread": "^7.12.1",
"@babel/plugin-transform-template-literals": "^7.12.1",
- "@babel/preset-env": "^7.12.1",
- "@babel/preset-react": "^7.12.1",
- "@babel/preset-typescript": "^7.12.1",
- "@babel/register": "^7.12.1",
- "@storybook/addons": "6.1.21",
- "@storybook/api": "6.1.21",
- "@storybook/channel-postmessage": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-api": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/components": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/csf": "0.0.1",
- "@storybook/node-logger": "6.1.21",
- "@storybook/router": "6.1.21",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@storybook/addons": "6.2.9",
+ "@storybook/api": "6.2.9",
+ "@storybook/channel-postmessage": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-api": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/components": "6.2.9",
+ "@storybook/core-common": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/node-logger": "6.2.9",
+ "@storybook/router": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.1.21",
- "@storybook/ui": "6.1.21",
- "@types/glob-base": "^0.3.0",
- "@types/micromatch": "^4.0.1",
- "@types/node-fetch": "^2.5.4",
- "airbnb-js-shims": "^2.2.1",
- "ansi-to-html": "^0.6.11",
- "autoprefixer": "^9.7.2",
- "babel-loader": "^8.0.6",
- "babel-plugin-emotion": "^10.0.20",
+ "@storybook/theming": "6.2.9",
+ "@storybook/ui": "6.2.9",
+ "@types/node": "^14.0.10",
+ "@types/webpack": "^4.41.26",
+ "autoprefixer": "^9.8.6",
+ "babel-loader": "^8.2.2",
"babel-plugin-macros": "^2.8.0",
- "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5",
- "better-opn": "^2.0.0",
- "boxen": "^4.1.0",
- "case-sensitive-paths-webpack-plugin": "^2.2.0",
- "chalk": "^4.0.0",
- "cli-table3": "0.6.0",
- "commander": "^5.0.0",
- "core-js": "^3.0.1",
- "cpy": "^8.1.1",
- "css-loader": "^3.5.3",
- "detect-port": "^1.3.0",
- "dotenv-webpack": "^1.7.0",
- "ejs": "^3.1.2",
- "express": "^4.17.0",
- "file-loader": "^6.0.0",
- "file-system-cache": "^1.0.5",
- "find-up": "^4.1.0",
- "fork-ts-checker-webpack-plugin": "^4.1.4",
- "fs-extra": "^9.0.0",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "core-js": "^3.8.2",
+ "css-loader": "^3.6.0",
+ "dotenv-webpack": "^1.8.0",
+ "file-loader": "^6.2.0",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^4.1.6",
+ "fs-extra": "^9.0.1",
"glob": "^7.1.6",
- "glob-base": "^0.3.0",
"glob-promise": "^3.4.0",
- "global": "^4.3.2",
- "html-webpack-plugin": "^4.2.1",
- "inquirer": "^7.0.0",
- "interpret": "^2.0.0",
- "ip": "^1.1.5",
- "json5": "^2.1.1",
- "lazy-universal-dotenv": "^3.0.1",
- "micromatch": "^4.0.2",
- "node-fetch": "^2.6.0",
- "pkg-dir": "^4.2.0",
+ "global": "^4.4.0",
+ "html-webpack-plugin": "^4.0.0",
"pnp-webpack-plugin": "1.6.4",
- "postcss-flexbugs-fixes": "^4.1.0",
- "postcss-loader": "^3.0.0",
- "pretty-hrtime": "^1.0.3",
- "qs": "^6.6.0",
- "raw-loader": "^4.0.1",
+ "postcss": "^7.0.35",
+ "postcss-flexbugs-fixes": "^4.2.1",
+ "postcss-loader": "^4.2.0",
+ "raw-loader": "^4.0.2",
"react-dev-utils": "^11.0.3",
- "regenerator-runtime": "^0.13.7",
- "resolve-from": "^5.0.0",
- "serve-favicon": "^2.5.0",
- "shelljs": "^0.8.4",
"stable": "^0.1.8",
- "style-loader": "^1.2.1",
- "telejson": "^5.0.2",
- "terser-webpack-plugin": "^3.0.0",
+ "style-loader": "^1.3.0",
+ "terser-webpack-plugin": "^3.1.0",
"ts-dedent": "^2.0.0",
- "unfetch": "^4.1.0",
- "url-loader": "^4.0.0",
+ "url-loader": "^4.1.1",
"util-deprecate": "^1.0.2",
- "webpack": "^4.44.2",
- "webpack-dev-middleware": "^3.7.0",
+ "webpack": "4",
+ "webpack-dev-middleware": "^3.7.3",
"webpack-filter-warnings-plugin": "^1.2.1",
"webpack-hot-middleware": "^2.25.0",
"webpack-virtual-modules": "^0.2.2"
@@ -2907,33 +2806,33 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0",
"react-dom": "^16.8.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@storybook/core-events": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.1.21.tgz",
- "integrity": "sha512-KWqnh1C7M1pT//WfQb3AD60yTR8jL48AfaeLGto2gO9VK7VVgj/EGsrXZP/GTL90ygyExbbBI5gkr7EBTu/HYw==",
+ "node_modules/@storybook/builder-webpack4/node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
+ "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
"dev": true,
"dependencies": {
- "core-js": "^3.0.1"
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/traverse": "^7.13.0",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0-0"
}
},
- "node_modules/@storybook/core/node_modules/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@storybook/core/node_modules/autoprefixer": {
+ "node_modules/@storybook/builder-webpack4/node_modules/autoprefixer": {
"version": "9.8.6",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
"integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
@@ -2955,50 +2854,101 @@
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
}
},
- "node_modules/@storybook/core/node_modules/chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "@babel/runtime": "^7.7.2",
+ "cosmiconfig": "^6.0.0",
+ "resolve": "^1.12.0"
}
},
- "node_modules/@storybook/core/node_modules/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==",
+ "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-macros/node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
"dev": true,
"dependencies": {
- "color-name": "~1.1.4"
+ "@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"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=8"
}
},
- "node_modules/@storybook/core/node_modules/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==",
- "dev": true
- },
- "node_modules/@storybook/core/node_modules/commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "node_modules/@storybook/builder-webpack4/node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
+ "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
"dev": true,
- "engines": {
- "node": ">= 6"
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.1.5",
+ "core-js-compat": "^3.8.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@storybook/core/node_modules/html-webpack-plugin": {
+ "node_modules/@storybook/builder-webpack4/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+ "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.5.5",
+ "chalk": "^2.4.1",
+ "micromatch": "^3.1.10",
+ "minimatch": "^3.0.4",
+ "semver": "^5.6.0",
+ "tapable": "^1.0.0",
+ "worker-rpc": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6.11.5",
+ "yarn": ">=1.0.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz",
"integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==",
@@ -3021,105 +2971,132 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/@storybook/core/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
+ "node_modules/@storybook/builder-webpack4/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dev": true,
"dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
+ "is-plain-object": "^2.0.4"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz",
+ "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^7.0.0",
+ "klona": "^2.0.4",
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0",
+ "semver": "^7.3.4"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/postcss/"
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "postcss": "^7.0.0 || ^8.0.1",
+ "webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/@storybook/core/node_modules/postcss-value-parser": {
+ "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/node_modules/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,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/node_modules/schema-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
+ "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.6",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/node_modules/semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@storybook/builder-webpack4/node_modules/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
},
- "node_modules/@storybook/core/node_modules/postcss/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@storybook/core/node_modules/postcss/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@storybook/core/node_modules/postcss/node_modules/chalk/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@storybook/core/node_modules/postcss/node_modules/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==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@storybook/core/node_modules/postcss/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "node_modules/@storybook/core/node_modules/postcss/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@storybook/core/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@storybook/core/node_modules/style-loader": {
+ "node_modules/@storybook/builder-webpack4/node_modules/style-loader": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz",
"integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==",
@@ -3139,7 +3116,7 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/@storybook/core/node_modules/style-loader/node_modules/loader-utils": {
+ "node_modules/@storybook/builder-webpack4/node_modules/style-loader/node_modules/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==",
@@ -3153,7 +3130,309 @@
"node": ">=8.9.0"
}
},
- "node_modules/@storybook/core/node_modules/supports-color": {
+ "node_modules/@storybook/builder-webpack4/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@storybook/channel-postmessage": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.2.9.tgz",
+ "integrity": "sha512-OqV+gLeeCHR0KExsIz0B7gD17Cjd9D+I75qnBsLWM9inWO5kc/WZ5svw8Bvjlcm6snWpvxUaT8L+svuqcPSmww==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "qs": "^6.10.0",
+ "telejson": "^5.1.0"
+ }
+ },
+ "node_modules/@storybook/channels": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.2.9.tgz",
+ "integrity": "sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "node_modules/@storybook/client-api": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.2.9.tgz",
+ "integrity": "sha512-aLvEUVkbvv6Qo/2mF4rFCecdqi2CGOUDdsV1a6EFIVS/9gXFdpirsOwKHo9qNjacGdWPlBYGCUcbrw+DvNaSFA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.2.9",
+ "@storybook/channel-postmessage": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/csf": "0.0.1",
+ "@types/qs": "^6.9.5",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "stable": "^0.1.8",
+ "store2": "^2.12.0",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@storybook/client-logger": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.2.9.tgz",
+ "integrity": "sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "node_modules/@storybook/components": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.2.9.tgz",
+ "integrity": "sha512-hnV1MI2aB2g1sJ7NJphpxi7TwrMZQ/tpCJeHnkjmzyC6ez1MXqcBXGrEEdSXzRfAxjQTOEpu6H1mnns0xMP0Ag==",
+ "dev": true,
+ "dependencies": {
+ "@popperjs/core": "^2.6.0",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/csf": "0.0.1",
+ "@storybook/theming": "6.2.9",
+ "@types/color-convert": "^2.0.0",
+ "@types/overlayscrollbars": "^1.12.0",
+ "@types/react-syntax-highlighter": "11.0.5",
+ "color-convert": "^2.0.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
+ "markdown-to-jsx": "^7.1.0",
+ "memoizerific": "^1.11.3",
+ "overlayscrollbars": "^1.13.1",
+ "polished": "^4.0.5",
+ "prop-types": "^15.7.2",
+ "react-colorful": "^5.0.1",
+ "react-popper-tooltip": "^3.1.1",
+ "react-syntax-highlighter": "^13.5.3",
+ "react-textarea-autosize": "^8.3.0",
+ "regenerator-runtime": "^0.13.7",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@storybook/core": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.2.9.tgz",
+ "integrity": "sha512-pzbyjWvj0t8m0kR2pC9GQne4sZn7Y/zfcbm6/31CL+yhzOQjfJEj3n4ZFUlxikXqQJPg1aWfypfyaeaLL0QyuA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/core-client": "6.2.9",
+ "@storybook/core-server": "6.2.9"
+ },
+ "peerDependencies": {
+ "@storybook/builder-webpack5": "6.2.9",
+ "react": "^16.8.0 || ^17.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@storybook/builder-webpack5": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/core-client": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.2.9.tgz",
+ "integrity": "sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addons": "6.2.9",
+ "@storybook/channel-postmessage": "6.2.9",
+ "@storybook/client-api": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/csf": "0.0.1",
+ "@storybook/ui": "6.2.9",
+ "ansi-to-html": "^0.6.11",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "ts-dedent": "^2.0.0",
+ "unfetch": "^4.2.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0",
+ "webpack": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/core-common": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.2.9.tgz",
+ "integrity": "sha512-ve0Qb4EMit8jGibfZBprmaU2i4LtpB4vSMIzD9nB1YeBmw2cGhHubtmayZ0TwcV3fPQhtYH9wwRWuWyzzHyQyw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^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-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.2.9",
+ "@storybook/semver": "^7.3.2",
+ "@types/glob-base": "^0.3.0",
+ "@types/micromatch": "^4.0.1",
+ "@types/node": "^14.0.10",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.2.2",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "glob": "^7.1.6",
+ "glob-base": "^0.3.0",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "micromatch": "^4.0.2",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
+ "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/traverse": "^7.13.0",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0-0"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
+ "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.1.5",
+ "core-js-compat": "^3.8.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/core-common/node_modules/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==",
@@ -3165,7 +3444,130 @@
"node": ">=8"
}
},
- "node_modules/@storybook/core/node_modules/supports-color/node_modules/has-flag": {
+ "node_modules/@storybook/core-events": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.2.9.tgz",
+ "integrity": "sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "node_modules/@storybook/core-server": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.2.9.tgz",
+ "integrity": "sha512-DzihO73pj1Ro0Y4tq9hjw2mLMUYeSRPrx7CndCOBxcTHCKQ8Kd7Dee3wJ49t5/19V7TW1+4lYR59GAy73FeOAQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-transform-template-literals": "^7.12.1",
+ "@babel/preset-react": "^7.12.10",
+ "@storybook/addons": "6.2.9",
+ "@storybook/builder-webpack4": "6.2.9",
+ "@storybook/core-client": "6.2.9",
+ "@storybook/core-common": "6.2.9",
+ "@storybook/node-logger": "6.2.9",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.2.9",
+ "@storybook/ui": "6.2.9",
+ "@types/node": "^14.0.10",
+ "@types/node-fetch": "^2.5.7",
+ "@types/pretty-hrtime": "^1.0.0",
+ "@types/webpack": "^4.41.26",
+ "airbnb-js-shims": "^2.2.1",
+ "babel-loader": "^8.2.2",
+ "better-opn": "^2.1.1",
+ "boxen": "^4.2.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "chalk": "^4.1.0",
+ "cli-table3": "0.6.0",
+ "commander": "^6.2.1",
+ "core-js": "^3.8.2",
+ "cpy": "^8.1.1",
+ "css-loader": "^3.6.0",
+ "detect-port": "^1.3.0",
+ "dotenv-webpack": "^1.8.0",
+ "express": "^4.17.1",
+ "file-loader": "^6.2.0",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fs-extra": "^9.0.1",
+ "global": "^4.4.0",
+ "html-webpack-plugin": "^4.0.0",
+ "ip": "^1.1.5",
+ "node-fetch": "^2.6.1",
+ "pnp-webpack-plugin": "1.6.4",
+ "pretty-hrtime": "^1.0.3",
+ "prompts": "^2.4.0",
+ "read-pkg-up": "^7.0.1",
+ "regenerator-runtime": "^0.13.7",
+ "resolve-from": "^5.0.0",
+ "serve-favicon": "^2.5.0",
+ "style-loader": "^1.3.0",
+ "telejson": "^5.1.0",
+ "terser-webpack-plugin": "^3.1.0",
+ "ts-dedent": "^2.0.0",
+ "url-loader": "^4.1.1",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4",
+ "webpack-dev-middleware": "^3.7.3",
+ "webpack-virtual-modules": "^0.2.2"
+ },
+ "peerDependencies": {
+ "@storybook/builder-webpack5": "6.2.9",
+ "react": "^16.8.0 || ^17.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@storybook/builder-webpack5": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
@@ -3174,6 +3576,75 @@
"node": ">=8"
}
},
+ "node_modules/@storybook/core-server/node_modules/html-webpack-plugin": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz",
+ "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==",
+ "dev": true,
+ "dependencies": {
+ "@types/html-minifier-terser": "^5.0.0",
+ "@types/tapable": "^1.0.5",
+ "@types/webpack": "^4.41.8",
+ "html-minifier-terser": "^5.0.1",
+ "loader-utils": "^1.2.3",
+ "lodash": "^4.17.20",
+ "pretty-error": "^2.1.1",
+ "tapable": "^1.1.3",
+ "util.promisify": "1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/style-loader": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz",
+ "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^2.7.0"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/style-loader/node_modules/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,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/@storybook/core-server/node_modules/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/csf": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz",
@@ -3184,14 +3655,14 @@
}
},
"node_modules/@storybook/node-logger": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.1.21.tgz",
- "integrity": "sha512-wQZZw4n1PG3kGOsczWCBC6+8RagYkrGYDqsVOpUcs5shGbPg5beCXDuzP4nxz2IlsoP9ZtTSaX741H791OIOjA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.2.9.tgz",
+ "integrity": "sha512-ryRBChWZf1A5hOVONErJZosS25IdMweoMVFAUAcj91iC0ynoSA6YL2jmoE71jQchxEXEgkDeRkX9lR/GlqFGZQ==",
"dev": true,
"dependencies": {
"@types/npmlog": "^4.1.2",
- "chalk": "^4.0.0",
- "core-js": "^3.0.1",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
"npmlog": "^4.1.2",
"pretty-hrtime": "^1.0.3"
}
@@ -3212,9 +3683,9 @@
}
},
"node_modules/@storybook/node-logger/node_modules/chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -3227,24 +3698,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/@storybook/node-logger/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@storybook/node-logger/node_modules/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==",
- "dev": true
- },
"node_modules/@storybook/node-logger/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -3267,32 +3720,34 @@
}
},
"node_modules/@storybook/react": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.1.21.tgz",
- "integrity": "sha512-j3gq/ssWxRCCH5iCHbP3ihXSGS7lVWh1HpmBmGbbhHGHgdmSPsRjwDXiQGE81EmE7bzbC8NECBhU3zHJ6h1TvA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.2.9.tgz",
+ "integrity": "sha512-glvw+o/Vek2oapYIXCYDK6gm3cuSnx0XdOpiJVcXk3KLb8JfLbdzGYYp6dcWUbyOBqGcGFRpXIgMmkcwgn+fvQ==",
"dev": true,
"dependencies": {
"@babel/preset-flow": "^7.12.1",
- "@babel/preset-react": "^7.12.1",
- "@pmmmwh/react-refresh-webpack-plugin": "^0.4.2",
- "@storybook/addons": "6.1.21",
- "@storybook/core": "6.1.21",
- "@storybook/node-logger": "6.1.21",
+ "@babel/preset-react": "^7.12.10",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
+ "@storybook/addons": "6.2.9",
+ "@storybook/core": "6.2.9",
+ "@storybook/core-common": "6.2.9",
+ "@storybook/node-logger": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@types/webpack-env": "^1.15.3",
+ "@types/webpack-env": "^1.16.0",
"babel-plugin-add-react-displayname": "^0.0.5",
"babel-plugin-named-asset-import": "^0.3.1",
"babel-plugin-react-docgen": "^4.2.1",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"prop-types": "^15.7.2",
"react-dev-utils": "^11.0.3",
"react-docgen-typescript-plugin": "^0.6.2",
"react-refresh": "^0.8.3",
+ "read-pkg-up": "^7.0.1",
"regenerator-runtime": "^0.13.7",
"ts-dedent": "^2.0.0",
- "webpack": "^4.44.2"
+ "webpack": "4"
},
"bin": {
"build-storybook": "bin/build.js",
@@ -3300,26 +3755,38 @@
"storybook-server": "bin/index.js"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=10.13.0"
},
"peerDependencies": {
"@babel/core": "^7.11.5",
"react": "^16.8.0 || ^17.0.0",
"react-dom": "^16.8.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
}
},
"node_modules/@storybook/router": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.1.21.tgz",
- "integrity": "sha512-m75WvUhoCBWDVekICAdbkidji/w5hCjHo+M8L13UghpwXWEnyr4/QqvkOb/PcSC8aZzxeMqSCpRQ1o6LWULneg==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.2.9.tgz",
+ "integrity": "sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg==",
"dev": true,
"dependencies": {
- "@reach/router": "^1.3.3",
+ "@reach/router": "^1.3.4",
+ "@storybook/client-logger": "6.2.9",
"@types/reach__router": "^1.3.7",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"memoizerific": "^1.11.3",
- "qs": "^6.6.0"
+ "qs": "^6.10.0",
+ "ts-dedent": "^2.0.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0",
@@ -3342,22 +3809,59 @@
"node": ">=10"
}
},
+ "node_modules/@storybook/semver/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/semver/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/semver/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@storybook/theming": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.1.21.tgz",
- "integrity": "sha512-yq7+/mpdljRdSRJYw/In/9tnDGXIUDe//mhyMftFfrB2mq6zi1yAZpowCerWhiDE2ipGkrfzIYx/Sn7bcaXgqg==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.2.9.tgz",
+ "integrity": "sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA==",
"dev": true,
"dependencies": {
"@emotion/core": "^10.1.1",
"@emotion/is-prop-valid": "^0.8.6",
- "@emotion/styled": "^10.0.23",
- "@storybook/client-logger": "6.1.21",
- "core-js": "^3.0.1",
+ "@emotion/styled": "^10.0.27",
+ "@storybook/client-logger": "6.2.9",
+ "core-js": "^3.8.2",
"deep-object-diff": "^1.1.0",
- "emotion-theming": "^10.0.19",
- "global": "^4.3.2",
+ "emotion-theming": "^10.0.27",
+ "global": "^4.4.0",
"memoizerific": "^1.11.3",
- "polished": "^3.4.4",
+ "polished": "^4.0.5",
"resolve-from": "^5.0.0",
"ts-dedent": "^2.0.0"
},
@@ -3367,47 +3871,62 @@
}
},
"node_modules/@storybook/ui": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.1.21.tgz",
- "integrity": "sha512-2nRb5egnSBKbosuR7g5PsuM4XnRLXZUf7TBjwT6eRlomnE2wrWM5DtTLpFeUpDob0SI5hPlOV1xCpPz3XmeyyA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.2.9.tgz",
+ "integrity": "sha512-jq2xmw3reIqik/6ibUSbNKGR+Xvr9wkAEwexiOl+5WQ5BeYJpw4dmDmsFQf+SQuWaSEUUPolbzkakRQM778Kdg==",
"dev": true,
"dependencies": {
"@emotion/core": "^10.1.1",
- "@storybook/addons": "6.1.21",
- "@storybook/api": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/components": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/router": "6.1.21",
+ "@storybook/addons": "6.2.9",
+ "@storybook/api": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/components": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/router": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.1.21",
- "@types/markdown-to-jsx": "^6.11.0",
- "copy-to-clipboard": "^3.0.8",
- "core-js": "^3.0.1",
- "core-js-pure": "^3.0.1",
- "downshift": "^6.0.6",
- "emotion-theming": "^10.0.19",
+ "@storybook/theming": "6.2.9",
+ "@types/markdown-to-jsx": "^6.11.3",
+ "copy-to-clipboard": "^3.3.1",
+ "core-js": "^3.8.2",
+ "core-js-pure": "^3.8.2",
+ "downshift": "^6.0.15",
+ "emotion-theming": "^10.0.27",
"fuse.js": "^3.6.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"markdown-to-jsx": "^6.11.4",
"memoizerific": "^1.11.3",
- "polished": "^3.4.4",
- "qs": "^6.6.0",
- "react-draggable": "^4.0.3",
- "react-helmet-async": "^1.0.2",
- "react-hotkeys": "2.0.0",
- "react-sizeme": "^2.6.7",
+ "polished": "^4.0.5",
+ "qs": "^6.10.0",
+ "react-draggable": "^4.4.3",
+ "react-helmet-async": "^1.0.7",
+ "react-sizeme": "^3.0.1",
"regenerator-runtime": "^0.13.7",
"resolve-from": "^5.0.0",
- "store2": "^2.7.1"
+ "store2": "^2.12.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0",
"react-dom": "^16.8.0 || ^17.0.0"
}
},
+ "node_modules/@storybook/ui/node_modules/markdown-to-jsx": {
+ "version": "6.11.4",
+ "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz",
+ "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==",
+ "dev": true,
+ "dependencies": {
+ "prop-types": "^15.6.2",
+ "unquote": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "peerDependencies": {
+ "react": ">= 0.14.0"
+ }
+ },
"node_modules/@svgr/babel-plugin-add-jsx-attribute": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz",
@@ -3513,18 +4032,6 @@
"node": ">=8"
}
},
- "node_modules/@svgr/core/node_modules/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,
- "dependencies": {
- "caller-callsite": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@svgr/core/node_modules/cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -3616,18 +4123,6 @@
"node": ">=8"
}
},
- "node_modules/@svgr/plugin-svgo/node_modules/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,
- "dependencies": {
- "caller-callsite": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -3750,6 +4245,21 @@
"integrity": "sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw==",
"dev": true
},
+ "node_modules/@types/color-convert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz",
+ "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/color-name": "*"
+ }
+ },
+ "node_modules/@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
"node_modules/@types/component-emitter": {
"version": "1.2.10",
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
@@ -3859,27 +4369,33 @@
}
},
"node_modules/@types/minimatch": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
- "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==",
"dev": true
},
"node_modules/@types/node": {
- "version": "14.14.35",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz",
- "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==",
+ "version": "14.14.43",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.43.tgz",
+ "integrity": "sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ==",
"dev": true
},
"node_modules/@types/node-fetch": {
- "version": "2.5.8",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz",
- "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==",
+ "version": "2.5.10",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz",
+ "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==",
"dev": true,
"dependencies": {
"@types/node": "*",
"form-data": "^3.0.0"
}
},
+ "node_modules/@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==",
+ "dev": true
+ },
"node_modules/@types/npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz",
@@ -3898,6 +4414,12 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
+ "node_modules/@types/pretty-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz",
+ "integrity": "sha512-xl+5r2rcrxdLViAYkkiLMYsoUs3qEyrAnHFyEzYysgRxdVp3WbhysxIvJIxZp9FvZ2CYezh0TaHZorivH+voOQ==",
+ "dev": true
+ },
"node_modules/@types/prop-types": {
"version": "15.7.3",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
@@ -3926,9 +4448,9 @@
}
},
"node_modules/@types/react": {
- "version": "17.0.3",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz",
- "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==",
+ "version": "17.0.4",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.4.tgz",
+ "integrity": "sha512-onz2BqScSFMoTRdJUZUDD/7xrusM8hBA2Fktk2qgaTYPCgPvWnDEgkrOs8hhPUf2jfcIXkJ5yK6VfYormJS3Jw==",
"dev": true,
"dependencies": {
"@types/prop-types": "*",
@@ -3936,40 +4458,21 @@
"csstype": "^3.0.2"
}
},
- "node_modules/@types/react-color": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.4.tgz",
- "integrity": "sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw==",
- "dev": true,
- "dependencies": {
- "@types/react": "*",
- "@types/reactcss": "*"
- }
- },
"node_modules/@types/react-syntax-highlighter": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz",
- "integrity": "sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz",
+ "integrity": "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==",
"dev": true,
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/react/node_modules/csstype": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
- "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==",
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
+ "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==",
"dev": true
},
- "node_modules/@types/reactcss": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.3.tgz",
- "integrity": "sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA==",
- "dev": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
"node_modules/@types/scheduler": {
"version": "0.16.1",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz",
@@ -3989,9 +4492,9 @@
"dev": true
},
"node_modules/@types/tapable": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz",
- "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz",
+ "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==",
"dev": true
},
"node_modules/@types/uglify-js": {
@@ -4019,14 +4522,14 @@
"dev": true
},
"node_modules/@types/webpack": {
- "version": "4.41.26",
- "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
- "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==",
+ "version": "4.41.27",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.27.tgz",
+ "integrity": "sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA==",
"dev": true,
"dependencies": {
"@types/anymatch": "*",
"@types/node": "*",
- "@types/tapable": "*",
+ "@types/tapable": "^1",
"@types/uglify-js": "*",
"@types/webpack-sources": "*",
"source-map": "^0.6.0"
@@ -4073,6 +4576,34 @@
"integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
"dev": true
},
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "2.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
+ "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/experimental-utils": "2.34.0",
+ "functional-red-black-tree": "^1.0.1",
+ "regexpp": "^3.0.0",
+ "tsutils": "^3.17.1"
+ },
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^2.0.0",
+ "eslint": "^5.0.0 || ^6.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@typescript-eslint/experimental-utils": {
"version": "2.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz",
@@ -4095,17 +4626,31 @@
"eslint": "*"
}
},
- "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "node_modules/@typescript-eslint/parser": {
+ "version": "2.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz",
+ "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==",
"dev": true,
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "@types/eslint-visitor-keys": "^1.0.0",
+ "@typescript-eslint/experimental-utils": "2.34.0",
+ "@typescript-eslint/typescript-estree": "2.34.0",
+ "eslint-visitor-keys": "^1.1.0"
},
"engines": {
- "node": ">=8.0.0"
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^5.0.0 || ^6.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
"node_modules/@typescript-eslint/typescript-estree": {
@@ -4375,10 +4920,9 @@
}
},
"node_modules/acorn": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
- "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
- "dev": true,
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"bin": {
"acorn": "bin/acorn"
},
@@ -4409,26 +4953,12 @@
}
},
"node_modules/acorn-jsx": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
- "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
+ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
"dev": true,
- "peer": true,
- "dependencies": {
- "acorn": "^3.0.4"
- }
- },
- "node_modules/acorn-jsx/node_modules/acorn": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
- "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
- "dev": true,
- "peer": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/acorn-node": {
@@ -4441,17 +4971,6 @@
"xtend": "^4.0.2"
}
},
- "node_modules/acorn-node/node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/acorn-node/node_modules/acorn-walk": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
@@ -4552,16 +5071,19 @@
}
},
"node_modules/ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
- "peer": true,
"dependencies": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
+ "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ajv-errors": {
@@ -4574,22 +5096,14 @@
}
},
"node_modules/ajv-keywords": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
- "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
- "peer": true,
"peerDependencies": {
- "ajv": "^5.0.0"
+ "ajv": "^6.9.1"
}
},
- "node_modules/ajv/node_modules/fast-deep-equal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
- "dev": true,
- "peer": true
- },
"node_modules/alphanum-sort": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
@@ -4841,12 +5355,12 @@
}
},
"node_modules/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==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
"dependencies": {
- "type-fest": "^0.11.0"
+ "type-fest": "^0.21.3"
},
"engines": {
"node": ">=8"
@@ -4856,12 +5370,12 @@
}
},
"node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
- "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -5019,6 +5533,19 @@
"node": ">=4"
}
},
+ "node_modules/ansi-styles/node_modules/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==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/ansi-styles/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
"node_modules/ansi-to-html": {
"version": "0.6.14",
"resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz",
@@ -5127,15 +5654,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/anymatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/anymatch/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -5194,6 +5712,30 @@
"readable-stream": "^2.0.6"
}
},
+ "node_modules/are-we-there-yet/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/are-we-there-yet/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -5479,9 +6021,9 @@
"dev": true
},
"node_modules/ast-types/node_modules/tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
},
"node_modules/astral-regex": {
@@ -5494,9 +6036,9 @@
}
},
"node_modules/async": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
+ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
"dev": true
},
"node_modules/async-each": {
@@ -5569,11 +6111,35 @@
"browserslist": "cli.js"
}
},
- "node_modules/aws-sdk": {
- "version": "2.870.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.870.0.tgz",
- "integrity": "sha512-pbNO+RuEx45aaEZind0Tl9NADxncLJf0mRAwof0szyYMB+FZm165yz7FCxFLumU4R9qw8vOG5YFACBaNoQkJdg==",
+ "node_modules/autoprefixer/node_modules/postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true,
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/autoprefixer/node_modules/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,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/aws-sdk": {
+ "version": "2.899.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.899.0.tgz",
+ "integrity": "sha512-k8jSANDQGvTyyj1f/7Hj4SWaV61/gjj/BopRmavAr6n1ayjXtUeVrV8G29+ABD3V82pHXDqLq47bqNmZ9m86xQ==",
+ "dev": true,
+ "hasInstallScript": true,
"dependencies": {
"buffer": "4.9.2",
"events": "1.1.1",
@@ -5605,9 +6171,9 @@
"dev": true
},
"node_modules/axe-core": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz",
- "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz",
+ "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==",
"dev": true,
"engines": {
"node": ">=4"
@@ -5630,15 +6196,6 @@
"js-tokens": "^3.0.2"
}
},
- "node_modules/babel-code-frame/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/babel-code-frame/node_modules/ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
@@ -5670,18 +6227,6 @@
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
},
- "node_modules/babel-code-frame/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/babel-code-frame/node_modules/supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -5691,81 +6236,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/babel-core": {
- "version": "6.26.3",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
- "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "babel-code-frame": "^6.26.0",
- "babel-generator": "^6.26.0",
- "babel-helpers": "^6.24.1",
- "babel-messages": "^6.23.0",
- "babel-register": "^6.26.0",
- "babel-runtime": "^6.26.0",
- "babel-template": "^6.26.0",
- "babel-traverse": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "convert-source-map": "^1.5.1",
- "debug": "^2.6.9",
- "json5": "^0.5.1",
- "lodash": "^4.17.4",
- "minimatch": "^3.0.4",
- "path-is-absolute": "^1.0.1",
- "private": "^0.1.8",
- "slash": "^1.0.0",
- "source-map": "^0.5.7"
- }
- },
- "node_modules/babel-core/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/babel-core/node_modules/json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true,
- "peer": true,
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/babel-core/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true,
- "peer": true
- },
- "node_modules/babel-core/node_modules/slash": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
- "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/babel-core/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/babel-eslint": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
@@ -5799,96 +6269,6 @@
"node": ">=4"
}
},
- "node_modules/babel-generator": {
- "version": "6.26.1",
- "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
- "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "babel-messages": "^6.23.0",
- "babel-runtime": "^6.26.0",
- "babel-types": "^6.26.0",
- "detect-indent": "^4.0.0",
- "jsesc": "^1.3.0",
- "lodash": "^4.17.4",
- "source-map": "^0.5.7",
- "trim-right": "^1.0.1"
- }
- },
- "node_modules/babel-generator/node_modules/jsesc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
- "dev": true,
- "peer": true,
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/babel-generator/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/babel-helper-evaluate-path": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz",
- "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==",
- "dev": true
- },
- "node_modules/babel-helper-flip-expressions": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz",
- "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=",
- "dev": true
- },
- "node_modules/babel-helper-is-nodes-equiv": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz",
- "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=",
- "dev": true
- },
- "node_modules/babel-helper-is-void-0": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz",
- "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=",
- "dev": true
- },
- "node_modules/babel-helper-mark-eval-scopes": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz",
- "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=",
- "dev": true
- },
- "node_modules/babel-helper-remove-or-void": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz",
- "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=",
- "dev": true
- },
- "node_modules/babel-helper-to-multiple-sequence-expressions": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz",
- "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==",
- "dev": true
- },
- "node_modules/babel-helpers": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
- "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "babel-runtime": "^6.22.0",
- "babel-template": "^6.24.1"
- }
- },
"node_modules/babel-jest": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz",
@@ -5946,6 +6326,31 @@
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
+ "node_modules/babel-loader/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-loader/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/babel-loader/node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -5961,14 +6366,28 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/babel-messages": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
- "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "node_modules/babel-loader/node_modules/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==",
"dev": true,
- "peer": true,
"dependencies": {
- "babel-runtime": "^6.22.0"
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-loader/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/babel-plugin-add-react-displayname": {
@@ -6004,6 +6423,33 @@
"source-map": "^0.5.7"
}
},
+ "node_modules/babel-plugin-emotion/node_modules/babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "cosmiconfig": "^6.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "node_modules/babel-plugin-emotion/node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "dev": true,
+ "dependencies": {
+ "@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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/babel-plugin-emotion/node_modules/source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -6065,6 +6511,15 @@
"node": ">=6"
}
},
+ "node_modules/babel-plugin-istanbul/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/babel-plugin-jest-hoist": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz",
@@ -6078,125 +6533,18 @@
}
},
"node_modules/babel-plugin-macros": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
- "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.0.1.tgz",
+ "integrity": "sha512-CKt4+Oy9k2wiN+hT1uZzOw7d8zb1anbQpf7KLwaaXRCi/4pzKdFKHf7v5mvoPmjkmxshh7eKZQuRop06r5WP4w==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.7.2",
- "cosmiconfig": "^6.0.0",
- "resolve": "^1.12.0"
- }
- },
- "node_modules/babel-plugin-minify-builtins": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz",
- "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==",
- "dev": true
- },
- "node_modules/babel-plugin-minify-constant-folding": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz",
- "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==",
- "dev": true,
- "dependencies": {
- "babel-helper-evaluate-path": "^0.5.0"
- }
- },
- "node_modules/babel-plugin-minify-dead-code-elimination": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz",
- "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==",
- "dev": true,
- "dependencies": {
- "babel-helper-evaluate-path": "^0.5.0",
- "babel-helper-mark-eval-scopes": "^0.4.3",
- "babel-helper-remove-or-void": "^0.4.3",
- "lodash": "^4.17.11"
- }
- },
- "node_modules/babel-plugin-minify-flip-comparisons": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz",
- "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=",
- "dev": true,
- "dependencies": {
- "babel-helper-is-void-0": "^0.4.3"
- }
- },
- "node_modules/babel-plugin-minify-guarded-expressions": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz",
- "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==",
- "dev": true,
- "dependencies": {
- "babel-helper-evaluate-path": "^0.5.0",
- "babel-helper-flip-expressions": "^0.4.3"
- }
- },
- "node_modules/babel-plugin-minify-infinity": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz",
- "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=",
- "dev": true
- },
- "node_modules/babel-plugin-minify-mangle-names": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz",
- "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==",
- "dev": true,
- "dependencies": {
- "babel-helper-mark-eval-scopes": "^0.4.3"
- }
- },
- "node_modules/babel-plugin-minify-numeric-literals": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz",
- "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=",
- "dev": true
- },
- "node_modules/babel-plugin-minify-replace": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz",
- "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==",
- "dev": true
- },
- "node_modules/babel-plugin-minify-simplify": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz",
- "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==",
- "dev": true,
- "dependencies": {
- "babel-helper-evaluate-path": "^0.5.0",
- "babel-helper-flip-expressions": "^0.4.3",
- "babel-helper-is-nodes-equiv": "^0.0.1",
- "babel-helper-to-multiple-sequence-expressions": "^0.5.0"
- }
- },
- "node_modules/babel-plugin-minify-type-constructors": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz",
- "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=",
- "dev": true,
- "dependencies": {
- "babel-helper-is-void-0": "^0.4.3"
- }
- },
- "node_modules/babel-plugin-module-resolver": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz",
- "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "find-babel-config": "^1.1.0",
- "glob": "^7.1.2",
- "pkg-up": "^2.0.0",
- "reselect": "^3.0.1",
- "resolve": "^1.4.0"
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">=10",
+ "npm": ">=6"
}
},
"node_modules/babel-plugin-named-asset-import": {
@@ -6209,13 +6557,13 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz",
- "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz",
+ "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.13.0",
- "@babel/helper-define-polyfill-provider": "^0.1.5",
+ "@babel/compat-data": "^7.13.11",
+ "@babel/helper-define-polyfill-provider": "^0.2.0",
"semver": "^6.1.1"
},
"peerDependencies": {
@@ -6223,25 +6571,25 @@
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
- "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz",
+ "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.1.5",
- "core-js-compat": "^3.8.1"
+ "@babel/helper-define-polyfill-provider": "^0.2.0",
+ "core-js-compat": "^3.9.1"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz",
- "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz",
+ "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.1.5"
+ "@babel/helper-define-polyfill-provider": "^0.2.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -6281,30 +6629,6 @@
"integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
"dev": true
},
- "node_modules/babel-plugin-transform-inline-consecutive-adds": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz",
- "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=",
- "dev": true
- },
- "node_modules/babel-plugin-transform-member-expression-literals": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz",
- "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=",
- "dev": true
- },
- "node_modules/babel-plugin-transform-merge-sibling-variables": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz",
- "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=",
- "dev": true
- },
- "node_modules/babel-plugin-transform-minify-booleans": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz",
- "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=",
- "dev": true
- },
"node_modules/babel-plugin-transform-object-rest-spread": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
@@ -6315,60 +6639,12 @@
"babel-runtime": "^6.26.0"
}
},
- "node_modules/babel-plugin-transform-property-literals": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz",
- "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- }
- },
"node_modules/babel-plugin-transform-react-remove-prop-types": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
"integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==",
"dev": true
},
- "node_modules/babel-plugin-transform-regexp-constructors": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz",
- "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=",
- "dev": true
- },
- "node_modules/babel-plugin-transform-remove-console": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz",
- "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=",
- "dev": true
- },
- "node_modules/babel-plugin-transform-remove-debugger": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz",
- "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=",
- "dev": true
- },
- "node_modules/babel-plugin-transform-remove-undefined": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz",
- "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==",
- "dev": true,
- "dependencies": {
- "babel-helper-evaluate-path": "^0.5.0"
- }
- },
- "node_modules/babel-plugin-transform-simplify-comparison-operators": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz",
- "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=",
- "dev": true
- },
- "node_modules/babel-plugin-transform-undefined-to-void": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz",
- "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=",
- "dev": true
- },
"node_modules/babel-preset-jest": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz",
@@ -6385,37 +6661,6 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/babel-preset-minify": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz",
- "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==",
- "dev": true,
- "dependencies": {
- "babel-plugin-minify-builtins": "^0.5.0",
- "babel-plugin-minify-constant-folding": "^0.5.0",
- "babel-plugin-minify-dead-code-elimination": "^0.5.1",
- "babel-plugin-minify-flip-comparisons": "^0.4.3",
- "babel-plugin-minify-guarded-expressions": "^0.4.4",
- "babel-plugin-minify-infinity": "^0.4.3",
- "babel-plugin-minify-mangle-names": "^0.5.0",
- "babel-plugin-minify-numeric-literals": "^0.4.3",
- "babel-plugin-minify-replace": "^0.5.0",
- "babel-plugin-minify-simplify": "^0.5.1",
- "babel-plugin-minify-type-constructors": "^0.4.3",
- "babel-plugin-transform-inline-consecutive-adds": "^0.4.3",
- "babel-plugin-transform-member-expression-literals": "^6.9.4",
- "babel-plugin-transform-merge-sibling-variables": "^6.9.4",
- "babel-plugin-transform-minify-booleans": "^6.9.4",
- "babel-plugin-transform-property-literals": "^6.9.4",
- "babel-plugin-transform-regexp-constructors": "^0.4.3",
- "babel-plugin-transform-remove-console": "^6.9.4",
- "babel-plugin-transform-remove-debugger": "^6.9.4",
- "babel-plugin-transform-remove-undefined": "^0.5.0",
- "babel-plugin-transform-simplify-comparison-operators": "^6.9.4",
- "babel-plugin-transform-undefined-to-void": "^6.9.4",
- "lodash": "^4.17.11"
- }
- },
"node_modules/babel-preset-react-app": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz",
@@ -6671,6 +6916,33 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "node_modules/babel-preset-react-app/node_modules/babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "cosmiconfig": "^6.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "node_modules/babel-preset-react-app/node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "dev": true,
+ "dependencies": {
+ "@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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/babel-preset-react-app/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -6689,51 +6961,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/babel-register": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
- "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "babel-core": "^6.26.0",
- "babel-runtime": "^6.26.0",
- "core-js": "^2.5.0",
- "home-or-tmp": "^2.0.0",
- "lodash": "^4.17.4",
- "mkdirp": "^0.5.1",
- "source-map-support": "^0.4.15"
- }
- },
- "node_modules/babel-register/node_modules/core-js": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
- "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.",
- "dev": true,
- "hasInstallScript": true,
- "peer": true
- },
- "node_modules/babel-register/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/babel-register/node_modules/source-map-support": {
- "version": "0.4.18",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
- "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "source-map": "^0.5.6"
- }
- },
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
@@ -6747,7 +6974,7 @@
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
- "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.",
+ "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"node_modules/babel-runtime/node_modules/regenerator-runtime": {
@@ -6755,88 +6982,6 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
- "node_modules/babel-template": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
- "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "babel-runtime": "^6.26.0",
- "babel-traverse": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "lodash": "^4.17.4"
- }
- },
- "node_modules/babel-traverse": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
- "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "babel-code-frame": "^6.26.0",
- "babel-messages": "^6.23.0",
- "babel-runtime": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "debug": "^2.6.8",
- "globals": "^9.18.0",
- "invariant": "^2.2.2",
- "lodash": "^4.17.4"
- }
- },
- "node_modules/babel-traverse/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/babel-traverse/node_modules/globals": {
- "version": "9.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/babel-traverse/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true,
- "peer": true
- },
- "node_modules/babel-types": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "babel-runtime": "^6.26.0",
- "esutils": "^2.0.2",
- "lodash": "^4.17.4",
- "to-fast-properties": "^1.0.3"
- }
- },
- "node_modules/babel-types/node_modules/to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
@@ -6852,9 +6997,9 @@
"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
},
"node_modules/balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/base": {
"version": "0.11.2",
@@ -7005,6 +7150,35 @@
"node": ">= 6"
}
},
+ "node_modules/block-stream2/node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/block-stream2/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@@ -7138,24 +7312,6 @@
"node": ">=8"
}
},
- "node_modules/boxen/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/boxen/node_modules/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==",
- "dev": true
- },
"node_modules/boxen/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -7221,6 +7377,28 @@
"brfs": "bin/cmd.js"
}
},
+ "node_modules/brfs/node_modules/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==",
+ "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"
+ }
+ },
+ "node_modules/brfs/node_modules/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==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/brfs/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -7355,6 +7533,15 @@
}
]
},
+ "node_modules/browserify-sign/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/browserify-zlib": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
@@ -7365,15 +7552,15 @@
}
},
"node_modules/browserslist": {
- "version": "4.16.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
- "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
+ "version": "4.16.6",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
+ "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
"dependencies": {
- "caniuse-lite": "^1.0.30001181",
- "colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.649",
+ "caniuse-lite": "^1.0.30001219",
+ "colorette": "^1.2.2",
+ "electron-to-chromium": "^1.3.723",
"escalade": "^3.1.1",
- "node-releases": "^1.1.70"
+ "node-releases": "^1.1.71"
},
"bin": {
"browserslist": "cli.js"
@@ -7548,26 +7735,15 @@
}
},
"node_modules/caller-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
- "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
"dev": true,
- "peer": true,
"dependencies": {
- "callsites": "^0.2.0"
+ "caller-callsite": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/caller-path/node_modules/callsites": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
- "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/callsites": {
@@ -7619,9 +7795,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001204",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz",
- "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ=="
+ "version": "1.0.30001221",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001221.tgz",
+ "integrity": "sha512-b9TOZfND3uGSLjMOrLh8XxSQ41x8mX+9MLJYDM4AAHLfaZHttrLNPrScWjVnBITRZbY5sPpCt7X85n7VSLZ+/g=="
},
"node_modules/capture-exit": {
"version": "2.0.0",
@@ -7756,9 +7932,9 @@
}
},
"node_modules/chokidar/node_modules/anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
@@ -7865,13 +8041,10 @@
"dev": true
},
"node_modules/chrome-trace-event": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
- "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true,
- "dependencies": {
- "tslib": "^1.9.0"
- },
"engines": {
"node": ">=6.0"
}
@@ -7904,14 +8077,6 @@
"webpack": ">=4.0.1"
}
},
- "node_modules/circular-json": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
- "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
- "deprecated": "CircularJSON is in maintenance only, flatted is its successor.",
- "dev": true,
- "peer": true
- },
"node_modules/class-utils": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -7951,6 +8116,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/class-utils/node_modules/is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -7963,6 +8140,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/class-utils/node_modules/is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -7977,7 +8166,7 @@
"node": ">=0.10.0"
}
},
- "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": {
+ "node_modules/class-utils/node_modules/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==",
@@ -7987,9 +8176,9 @@
}
},
"node_modules/classnames": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
},
"node_modules/clean-css": {
"version": "4.2.3",
@@ -8127,27 +8316,17 @@
}
},
"node_modules/clone-deep": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz",
- "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
"dependencies": {
- "for-own": "^1.0.0",
"is-plain-object": "^2.0.4",
- "kind-of": "^5.0.0",
- "shallow-clone": "^1.0.0"
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/clone-deep/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
}
},
"node_modules/clsx": {
@@ -8192,9 +8371,9 @@
}
},
"node_modules/codemirror": {
- "version": "5.60.0",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.60.0.tgz",
- "integrity": "sha512-AEL7LhFOlxPlCL8IdTcJDblJm8yrAGib7I+DErJPdZd4l6imx8IMgKK3RblVgBQqz3TZJR4oknQ03bz+uNjBYA=="
+ "version": "5.61.0",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.0.tgz",
+ "integrity": "sha512-D3wYH90tYY1BsKlUe0oNj2JAhQ9TepkD51auk3N7q+4uz7A/cgJ5JsWHreT0PqieW1QhOuqxQ2reCXV1YXzecg=="
},
"node_modules/collection-visit": {
"version": "1.0.0",
@@ -8219,17 +8398,20 @@
}
},
"node_modules/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==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "color-name": "1.1.3"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
"node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/color-string": {
"version": "1.5.5",
@@ -8240,6 +8422,19 @@
"simple-swizzle": "^0.2.2"
}
},
+ "node_modules/color/node_modules/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==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
"node_modules/colorette": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
@@ -8274,6 +8469,21 @@
"color-string": "^1.5.2"
}
},
+ "node_modules/colorspace/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/colorspace/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -8426,6 +8636,28 @@
"typedarray": "^0.0.6"
}
},
+ "node_modules/concat-stream/node_modules/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==",
+ "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"
+ }
+ },
+ "node_modules/concat-stream/node_modules/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==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/confusing-browser-globals": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz",
@@ -8575,37 +8807,6 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/copy-webpack-plugin/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/copy-webpack-plugin/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/copy-webpack-plugin/node_modules/schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -8621,9 +8822,9 @@
}
},
"node_modules/core-js": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz",
- "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==",
+ "version": "3.11.2",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.11.2.tgz",
+ "integrity": "sha512-3tfrrO1JpJSYGKnd9LKTBPqgUES/UYiCzMKeqwR1+jF16q4kD1BY2NvqkfuzXwQ6+CIWm55V9cjD7PQd+hijdw==",
"dev": true,
"hasInstallScript": true,
"funding": {
@@ -8632,12 +8833,12 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz",
- "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==",
+ "version": "3.11.2",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.11.2.tgz",
+ "integrity": "sha512-gYhNwu7AJjecNtRrIfyoBabQ3ZG+llfPmg9BifIX8yxIpDyfNLRM73zIjINSm6z3dMdI1nwNC9C7uiy4pIC6cw==",
"dev": true,
"dependencies": {
- "browserslist": "^4.16.3",
+ "browserslist": "^4.16.6",
"semver": "7.0.0"
},
"funding": {
@@ -8655,9 +8856,9 @@
}
},
"node_modules/core-js-pure": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz",
- "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==",
+ "version": "3.11.2",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.11.2.tgz",
+ "integrity": "sha512-DQxdEKm+zFsnON7ZGOgUAQXBt1UJJ01tOzN/HgQ7cNf0oEHW1tcBLfCQQd1q6otdLu5gAdvKYxKHAoXGwE/kiQ==",
"dev": true,
"hasInstallScript": true,
"funding": {
@@ -8671,19 +8872,19 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"node_modules/cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
+ "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
"dev": true,
"dependencies": {
"@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
+ "import-fresh": "^3.2.1",
"parse-json": "^5.0.0",
"path-type": "^4.0.0",
- "yaml": "^1.7.2"
+ "yaml": "^1.10.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
"node_modules/country-data": {
@@ -8841,15 +9042,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/cpy/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/cpy/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -8950,43 +9142,27 @@
}
},
"node_modules/cross-fetch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz",
- "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
+ "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
"dependencies": {
"node-fetch": "2.6.1"
}
},
"node_modules/cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
- "peer": true,
"dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/cross-spawn/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "node_modules/cross-spawn/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true,
- "peer": true
- },
"node_modules/crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -9045,45 +9221,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/css-blank-pseudo/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/css-blank-pseudo/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-blank-pseudo/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/css-color-names": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
@@ -9106,45 +9243,6 @@
"node": ">4"
}
},
- "node_modules/css-declaration-sorter/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/css-declaration-sorter/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-declaration-sorter/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/css-has-pseudo": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz",
@@ -9173,24 +9271,6 @@
"node": ">=4"
}
},
- "node_modules/css-has-pseudo/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/css-has-pseudo/node_modules/postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -9205,27 +9285,6 @@
"node": ">=4"
}
},
- "node_modules/css-has-pseudo/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-has-pseudo/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/css-loader": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
@@ -9257,51 +9316,12 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/css-loader/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/css-loader/node_modules/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
},
- "node_modules/css-loader/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-loader/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -9317,45 +9337,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/css-prefers-color-scheme/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/css-prefers-color-scheme/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-prefers-color-scheme/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/css-select": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
@@ -9437,13 +9418,13 @@
}
},
"node_modules/cssnano": {
- "version": "4.1.10",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
- "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz",
+ "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==",
"dev": true,
"dependencies": {
"cosmiconfig": "^5.0.0",
- "cssnano-preset-default": "^4.0.7",
+ "cssnano-preset-default": "^4.0.8",
"is-resolvable": "^1.0.0",
"postcss": "^7.0.0"
},
@@ -9452,9 +9433,9 @@
}
},
"node_modules/cssnano-preset-default": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
- "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
+ "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
"dev": true,
"dependencies": {
"css-declaration-sorter": "^4.0.1",
@@ -9485,52 +9466,13 @@
"postcss-ordered-values": "^4.1.2",
"postcss-reduce-initial": "^4.0.3",
"postcss-reduce-transforms": "^4.0.2",
- "postcss-svgo": "^4.0.2",
+ "postcss-svgo": "^4.0.3",
"postcss-unique-selectors": "^4.0.1"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/cssnano-preset-default/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/cssnano-preset-default/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cssnano-preset-default/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/cssnano-util-get-arguments": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
@@ -9561,45 +9503,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/cssnano-util-raw-cache/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/cssnano-util-raw-cache/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cssnano-util-raw-cache/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/cssnano-util-same-parent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
@@ -9609,18 +9512,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/cssnano/node_modules/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,
- "dependencies": {
- "caller-callsite": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/cssnano/node_modules/cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -9662,24 +9553,6 @@
"node": ">=4"
}
},
- "node_modules/cssnano/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/cssnano/node_modules/resolve-from": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
@@ -9689,27 +9562,6 @@
"node": ">=4"
}
},
- "node_modules/cssnano/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cssnano/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/csso": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
@@ -9723,9 +9575,9 @@
}
},
"node_modules/csso/node_modules/css-tree": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz",
- "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
"dev": true,
"dependencies": {
"mdn-data": "2.0.14",
@@ -9766,9 +9618,9 @@
}
},
"node_modules/csstype": {
- "version": "2.6.16",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz",
- "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==",
+ "version": "2.6.17",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz",
+ "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==",
"dev": true
},
"node_modules/currency-symbol-map": {
@@ -9928,9 +9780,9 @@
}
},
"node_modules/date-fns": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz",
- "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==",
+ "version": "2.21.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.1.tgz",
+ "integrity": "sha512-m1WR0xGiC6j6jNFAyW4Nvh4WxAi4JF4w9jRJwSI8nBmNcyZXPcP9VUQG+6gHQXAmqaGEKDKhOqAtENDC941UkA==",
"engines": {
"node": ">=0.11"
},
@@ -10044,6 +9896,15 @@
"integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==",
"dev": true
},
+ "node_modules/deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/default-gateway": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
@@ -10221,19 +10082,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/detect-indent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
- "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "repeating": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/detect-newline": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
@@ -10432,21 +10280,22 @@
}
},
"node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
"dev": true,
"dependencies": {
- "esutils": "^2.0.2"
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/dom-align": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz",
- "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA=="
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.1.tgz",
+ "integrity": "sha512-CdTD9EdA5WviP8oO3n+okOm0Xt7dSuWxRTLcJiW0memwUr3Tvz66JDDCh9cb50IZFHXvBmLoyX454uJU/EVg+g=="
},
"node_modules/dom-converter": {
"version": "0.2.0",
@@ -10458,18 +10307,18 @@
}
},
"node_modules/dom-helpers": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz",
- "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"dependencies": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
}
},
"node_modules/dom-helpers/node_modules/csstype": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
- "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g=="
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
+ "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
},
"node_modules/dom-serializer": {
"version": "0.2.2",
@@ -10481,9 +10330,9 @@
}
},
"node_modules/dom-serializer/node_modules/domelementtype": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
- "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
"funding": [
{
"type": "github",
@@ -10576,9 +10425,9 @@
}
},
"node_modules/dot-case/node_modules/tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
},
"node_modules/dot-prop": {
@@ -10639,15 +10488,15 @@
}
},
"node_modules/downshift": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.1.tgz",
- "integrity": "sha512-ch8Sh/j7gVqQd7Kcv3A5TkGfldmxmlQrRPZJYWEhzh24+h7WA4vXssuhcGNJrD8YPJlZYQGHcaX8BNhS0IcOvg==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.3.tgz",
+ "integrity": "sha512-RA1MuaNcTbt0j+sVLhSs8R2oZbBXYAtdQP/V+uHhT3DoDteZzJPjlC+LQVm9T07Wpvo84QXaZtUCePLDTDwGXg==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.12.5",
+ "@babel/runtime": "^7.13.10",
"compute-scroll-into-view": "^1.0.17",
"prop-types": "^15.7.2",
- "react-is": "^17.0.1"
+ "react-is": "^17.0.2"
},
"peerDependencies": {
"react": ">=16.12.0"
@@ -10667,6 +10516,28 @@
"readable-stream": "^2.0.2"
}
},
+ "node_modules/duplexer2/node_modules/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==",
+ "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"
+ }
+ },
+ "node_modules/duplexer2/node_modules/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==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/duplexify": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
@@ -10679,6 +10550,30 @@
"stream-shift": "^1.0.0"
}
},
+ "node_modules/duplexify/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/duplexify/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -10696,24 +10591,19 @@
"dev": true
},
"node_modules/ejs": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
- "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
+ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
"dev": true,
- "dependencies": {
- "jake": "^10.6.1"
- },
- "bin": {
- "ejs": "bin/cli.js"
- },
+ "hasInstallScript": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/electron-to-chromium": {
- "version": "1.3.698",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.698.tgz",
- "integrity": "sha512-VEXDzYblnlT+g8Q3gedwzgKOso1evkeJzV8lih7lV8mL8eAnGVnKyC3KsFT6S+R5PQO4ffdr1PI16/ElibY/kQ=="
+ "version": "1.3.726",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.726.tgz",
+ "integrity": "sha512-dw7WmrSu/JwtACiBzth8cuKf62NKL1xVJuNvyOg0jvruN/n4NLtGYoTzciQquCPNaS2eR+BT5GrxHbslfc/w1w=="
},
"node_modules/element-resize-detector": {
"version": "1.2.2",
@@ -10811,9 +10701,9 @@
}
},
"node_modules/engine.io-client": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.2.tgz",
- "integrity": "sha512-1mwvwKYMa0AaCy+sPgvJ/SnKyO5MJZ1HEeXfA3Rm/KHkHGiYD5bQVq8QzvIrkI01FuVtOdZC5lWdRw1BGXB2NQ==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.3.tgz",
+ "integrity": "sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg==",
"dependencies": {
"base64-arraybuffer": "0.1.4",
"component-emitter": "~1.3.0",
@@ -10828,9 +10718,9 @@
}
},
"node_modules/engine.io-client/node_modules/ws": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
- "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==",
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz",
+ "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==",
"engines": {
"node": ">=8.3.0"
},
@@ -10885,6 +10775,30 @@
"node": ">=4.3.0 <5.0.0 || >=5.10"
}
},
+ "node_modules/enhanced-resolve/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/enhanced-resolve/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/entities": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
@@ -11111,56 +11025,57 @@
}
},
"node_modules/eslint": {
- "version": "4.19.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
- "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
"dev": true,
- "peer": true,
"dependencies": {
- "ajv": "^5.3.0",
- "babel-code-frame": "^6.22.0",
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
"chalk": "^2.1.0",
- "concat-stream": "^1.6.0",
- "cross-spawn": "^5.1.0",
- "debug": "^3.1.0",
- "doctrine": "^2.1.0",
- "eslint-scope": "^3.7.1",
- "eslint-visitor-keys": "^1.0.0",
- "espree": "^3.5.4",
- "esquery": "^1.0.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
"esutils": "^2.0.2",
- "file-entry-cache": "^2.0.0",
+ "file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
- "glob": "^7.1.2",
- "globals": "^11.0.1",
- "ignore": "^3.3.3",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^3.0.6",
- "is-resolvable": "^1.0.0",
- "js-yaml": "^3.9.1",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
- "lodash": "^4.17.4",
- "minimatch": "^3.0.2",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "optionator": "^0.8.2",
- "path-is-inside": "^1.0.2",
- "pluralize": "^7.0.0",
+ "optionator": "^0.8.3",
"progress": "^2.0.0",
- "regexpp": "^1.0.1",
- "require-uncached": "^1.0.3",
- "semver": "^5.3.0",
- "strip-ansi": "^4.0.0",
- "strip-json-comments": "~2.0.1",
- "table": "4.0.2",
- "text-table": "~0.2.0"
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": ">=4"
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint-config-airbnb": {
@@ -11197,6 +11112,26 @@
"eslint-plugin-import": "^2.7.0"
}
},
+ "node_modules/eslint-config-react-app": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz",
+ "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==",
+ "dev": true,
+ "dependencies": {
+ "confusing-browser-globals": "^1.0.9"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "2.x",
+ "@typescript-eslint/parser": "2.x",
+ "babel-eslint": "10.x",
+ "eslint": "6.x",
+ "eslint-plugin-flowtype": "3.x || 4.x",
+ "eslint-plugin-import": "2.x",
+ "eslint-plugin-jsx-a11y": "6.x",
+ "eslint-plugin-react": "7.x",
+ "eslint-plugin-react-hooks": "1.x || 2.x"
+ }
+ },
"node_modules/eslint-import-resolver-babel-module": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-4.0.0.tgz",
@@ -11239,6 +11174,59 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
+ "node_modules/eslint-loader": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz",
+ "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==",
+ "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin",
+ "dev": true,
+ "dependencies": {
+ "fs-extra": "^8.1.0",
+ "loader-fs-cache": "^1.0.2",
+ "loader-utils": "^1.2.3",
+ "object-hash": "^2.0.1",
+ "schema-utils": "^2.6.1"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "peerDependencies": {
+ "eslint": "^5.0.0 || ^6.0.0",
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/eslint-loader/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/eslint-loader/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/eslint-loader/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/eslint-module-utils": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
@@ -11325,6 +11313,15 @@
"node": ">=4"
}
},
+ "node_modules/eslint-module-utils/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/eslint-module-utils/node_modules/pkg-dir": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
@@ -11337,6 +11334,21 @@
"node": ">=4"
}
},
+ "node_modules/eslint-plugin-flowtype": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz",
+ "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.15"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.1.0"
+ }
+ },
"node_modules/eslint-plugin-import": {
"version": "2.22.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz",
@@ -11373,17 +11385,29 @@
"ms": "2.0.0"
}
},
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "node_modules/eslint-plugin-import/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"dependencies": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
+ "locate-path": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/eslint-plugin-import/node_modules/ms": {
@@ -11392,6 +11416,96 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
+ "node_modules/eslint-plugin-import/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "dependencies": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/eslint-plugin-jsx-a11y": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz",
@@ -11418,9 +11532,9 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.23.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz",
- "integrity": "sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz",
+ "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==",
"dev": true,
"dependencies": {
"array-includes": "^3.1.3",
@@ -11455,6 +11569,18 @@
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
}
},
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/eslint-plugin-react/node_modules/resolve": {
"version": "2.0.0-next.3",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
@@ -11475,17 +11601,16 @@
"dev": true
},
"node_modules/eslint-scope": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz",
- "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
- "peer": true,
"dependencies": {
- "esrecurse": "^4.1.0",
+ "esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
},
"engines": {
- "node": ">=4.0.0"
+ "node": ">=8.0.0"
}
},
"node_modules/eslint-utils": {
@@ -11512,196 +11637,180 @@
"node": ">=4"
}
},
- "node_modules/eslint/node_modules/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==",
+ "node_modules/eslint/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint/node_modules/chardet": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
- "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
- "dev": true,
- "peer": true
- },
- "node_modules/eslint/node_modules/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=",
- "dev": true,
- "peer": true,
"dependencies": {
- "restore-cursor": "^2.0.0"
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
},
"engines": {
- "node": ">=4"
+ "node": ">=4.8"
}
},
- "node_modules/eslint/node_modules/cli-width": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
- "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
- "dev": true,
- "peer": true
- },
- "node_modules/eslint/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint/node_modules/external-editor": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
- "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "chardet": "^0.4.0",
- "iconv-lite": "^0.4.17",
- "tmp": "^0.0.33"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/eslint/node_modules/figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.5"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint/node_modules/inquirer": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
- "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.0",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^2.0.4",
- "figures": "^2.0.0",
- "lodash": "^4.3.0",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rx-lite": "^4.0.8",
- "rx-lite-aggregates": "^4.0.8",
- "string-width": "^2.1.0",
- "strip-ansi": "^4.0.0",
- "through": "^2.3.6"
- }
- },
- "node_modules/eslint/node_modules/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,
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint/node_modules/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==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint/node_modules/mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
- "dev": true,
- "peer": true
- },
- "node_modules/eslint/node_modules/onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "mimic-fn": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint/node_modules/restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint/node_modules/semver": {
+ "node_modules/eslint/node_modules/cross-spawn/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
- "peer": true,
"bin": {
"semver": "bin/semver"
}
},
- "node_modules/eslint/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "node_modules/eslint/node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
- "peer": true,
"dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "esutils": "^2.0.2"
},
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/eslint/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
"engines": {
"node": ">=4"
}
},
- "node_modules/espree": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
- "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
+ "node_modules/eslint/node_modules/regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.5.0"
+ }
+ },
+ "node_modules/eslint/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
- "peer": true,
"dependencies": {
- "acorn": "^5.5.0",
- "acorn-jsx": "^3.0.0"
+ "shebang-regex": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/eslint/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint/node_modules/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,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint/node_modules/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,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -11858,6 +11967,15 @@
"node": ">=4.8"
}
},
+ "node_modules/execa/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/execa/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -11867,6 +11985,39 @@
"semver": "bin/semver"
}
},
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/exenv": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
@@ -11931,6 +12082,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/expand-brackets/node_modules/is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -11943,6 +12106,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/expand-brackets/node_modules/is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -11957,7 +12132,7 @@
"node": ">=0.10.0"
}
},
- "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/kind-of": {
+ "node_modules/expand-brackets/node_modules/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==",
@@ -12159,17 +12334,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/falafel/node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/falafel/node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
@@ -12317,9 +12481,9 @@
"integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
},
"node_modules/fecha": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
- "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
+ "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==",
"dev": true
},
"node_modules/figgy-pudding": {
@@ -12344,17 +12508,15 @@
}
},
"node_modules/file-entry-cache": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
- "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
"dev": true,
- "peer": true,
"dependencies": {
- "flat-cache": "^1.2.1",
- "object-assign": "^4.0.1"
+ "flat-cache": "^2.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/file-loader": {
@@ -12377,37 +12539,6 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/file-loader/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/file-loader/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/file-loader/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/file-loader/node_modules/loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -12479,15 +12610,6 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true
},
- "node_modules/filelist": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
- "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
- "dev": true,
- "dependencies": {
- "minimatch": "^3.0.4"
- }
- },
"node_modules/filesize": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz",
@@ -12545,30 +12667,6 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
- "node_modules/find-babel-config": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
- "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "json5": "^0.5.1",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/find-babel-config/node_modules/json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true,
- "peer": true,
- "bin": {
- "json5": "lib/cli.js"
- }
- },
"node_modules/find-cache-dir": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
@@ -12620,6 +12718,15 @@
"node": ">=6"
}
},
+ "node_modules/find-cache-dir/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/find-cache-dir/node_modules/pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -12639,25 +12746,19 @@
"dev": true
},
"node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"dependencies": {
- "locate-path": "^5.0.0",
+ "locate-path": "^6.0.0",
"path-exists": "^4.0.0"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up/node_modules/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==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/findup-sync": {
@@ -12713,15 +12814,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/findup-sync/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/findup-sync/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -12747,19 +12839,17 @@
}
},
"node_modules/flat-cache": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
- "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
"dev": true,
- "peer": true,
"dependencies": {
- "circular-json": "^0.3.1",
- "graceful-fs": "^4.1.2",
- "rimraf": "~2.6.2",
- "write": "^0.2.1"
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/flat-cache/node_modules/rimraf": {
@@ -12767,7 +12857,6 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"dev": true,
- "peer": true,
"dependencies": {
"glob": "^7.1.3"
},
@@ -12809,6 +12898,30 @@
"readable-stream": "^2.3.6"
}
},
+ "node_modules/flush-write-stream/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/flush-write-stream/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/flux": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/flux/-/flux-4.0.1.tgz",
@@ -12828,9 +12941,9 @@
"dev": true
},
"node_modules/follow-redirects": {
- "version": "1.13.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
- "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==",
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz",
+ "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==",
"dev": true,
"funding": [
{
@@ -12857,9 +12970,9 @@
}
},
"node_modules/for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"dev": true,
"dependencies": {
"for-in": "^1.0.1"
@@ -12883,104 +12996,149 @@
}
},
"node_modules/fork-ts-checker-webpack-plugin": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
- "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+ "version": "6.2.6",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.6.tgz",
+ "integrity": "sha512-f/oF2BFFPKEWQ3wgfq4bWALSDm7+f21shVONplo1xHKs1IdMfdmDa/aREgEurkIyrsyMFed42W7NVp4mh4DXzg==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.5.5",
- "chalk": "^2.4.1",
- "micromatch": "^3.1.10",
+ "@babel/code-frame": "^7.8.3",
+ "@types/json-schema": "^7.0.5",
+ "chalk": "^4.1.0",
+ "chokidar": "^3.4.2",
+ "cosmiconfig": "^6.0.0",
+ "deepmerge": "^4.2.2",
+ "fs-extra": "^9.0.0",
+ "glob": "^7.1.6",
+ "memfs": "^3.1.2",
"minimatch": "^3.0.4",
- "semver": "^5.6.0",
- "tapable": "^1.0.0",
- "worker-rpc": "^0.1.0"
+ "schema-utils": "2.7.0",
+ "semver": "^7.3.2",
+ "tapable": "^1.0.0"
},
"engines": {
- "node": ">=6.11.5",
+ "node": ">=10",
"yarn": ">=1.0.0"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/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,
"dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/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==",
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
"dev": true,
"dependencies": {
- "is-plain-object": "^2.0.4"
+ "@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"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/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==",
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/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,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
- "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"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
+ "ajv-keywords": "^3.4.1"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
- "semver": "bin/semver"
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/form-data": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
@@ -13044,6 +13202,30 @@
"readable-stream": "^2.0.0"
}
},
+ "node_modules/from2/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/from2/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -13071,6 +13253,12 @@
"node": ">= 8"
}
},
+ "node_modules/fs-monkey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
+ "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
+ "dev": true
+ },
"node_modules/fs-readdir-recursive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
@@ -13171,15 +13359,6 @@
"wide-align": "^1.1.0"
}
},
- "node_modules/gauge/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/gauge/node_modules/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",
@@ -13206,18 +13385,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/gauge/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -13426,13 +13593,16 @@
"node": ">=6"
}
},
- "node_modules/global-prefix/node_modules/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==",
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
}
},
"node_modules/globals": {
@@ -13562,32 +13732,10 @@
"node": ">=6"
}
},
- "node_modules/har-validator/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/har-validator/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/harmony-reflect": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz",
- "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
+ "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==",
"dev": true
},
"node_modules/has": {
@@ -13772,6 +13920,15 @@
}
]
},
+ "node_modules/hash-base/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/hash.js": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
@@ -13825,9 +13982,9 @@
"dev": true
},
"node_modules/highlight.js": {
- "version": "10.7.1",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.1.tgz",
- "integrity": "sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA==",
+ "version": "10.7.2",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz",
+ "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==",
"engines": {
"node": "*"
}
@@ -13869,20 +14026,6 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
- "node_modules/home-or-tmp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
- "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -13905,9 +14048,9 @@
}
},
"node_modules/hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+ "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
},
"node_modules/hpack.js": {
@@ -13922,6 +14065,30 @@
"wbuf": "^1.1.0"
}
},
+ "node_modules/hpack.js/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/hpack.js/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/hsl-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
@@ -13934,12 +14101,6 @@
"integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
"dev": true
},
- "node_modules/html-comment-regex": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
- "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
- "dev": true
- },
"node_modules/html-encoding-sniffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
@@ -14024,9 +14185,9 @@
}
},
"node_modules/html-minifier-terser/node_modules/tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
},
"node_modules/html-minifier/node_modules/commander": {
@@ -14121,27 +14282,6 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
},
- "node_modules/htmlparser2/node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "node_modules/htmlparser2/node_modules/readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/htmlparser2/node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
"node_modules/http-deceiver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
@@ -14243,15 +14383,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/http-proxy-middleware/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/http-proxy-middleware/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -14321,45 +14452,6 @@
"node": ">= 6"
}
},
- "node_modules/icss-utils/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/icss-utils/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/icss-utils/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/identity-obj-proxy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
@@ -14516,6 +14608,15 @@
"node": ">=6"
}
},
+ "node_modules/import-local/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/import-local/node_modules/pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -14549,7 +14650,8 @@
"node_modules/indexes-of": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+ "dev": true
},
"node_modules/infer-owner": {
"version": "1.0.4",
@@ -14635,9 +14737,9 @@
}
},
"node_modules/inquirer/node_modules/chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -14650,24 +14752,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/inquirer/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/inquirer/node_modules/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==",
- "dev": true
- },
"node_modules/inquirer/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -14790,15 +14874,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-alphabetical": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
@@ -14924,9 +14999,9 @@
}
},
"node_modules/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==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz",
+ "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==",
"dependencies": {
"has": "^1.0.3"
},
@@ -14946,15 +15021,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-date-object": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
@@ -14990,15 +15056,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-directory": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
@@ -15009,9 +15066,9 @@
}
},
"node_modules/is-docker": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
- "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true,
"bin": {
"is-docker": "cli.js"
@@ -15041,19 +15098,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-finite": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
- "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/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",
@@ -15145,6 +15189,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
@@ -15277,18 +15333,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-svg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
- "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
- "dev": true,
- "dependencies": {
- "html-comment-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/is-symbol": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
@@ -15466,24 +15510,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/jake": {
- "version": "10.8.2",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
- "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
- "dev": true,
- "dependencies": {
- "async": "0.9.x",
- "chalk": "^2.4.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- },
- "bin": {
- "jake": "bin/cli.js"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/jest": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz",
@@ -15604,6 +15630,15 @@
"node": ">=6"
}
},
+ "node_modules/jest-cli/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/jest-cli/node_modules/string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -15738,15 +15773,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/jest-config/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/jest-config/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -16027,15 +16053,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/jest-haste-map/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/jest-haste-map/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -16172,15 +16189,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/jest-message-util/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/jest-message-util/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -16403,6 +16411,15 @@
"node": ">=6"
}
},
+ "node_modules/jest-runtime/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/jest-runtime/node_modules/string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -16726,6 +16743,18 @@
"xml-name-validator": "^3.0.0"
}
},
+ "node_modules/jsdom/node_modules/acorn": {
+ "version": "5.7.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/jsdom/node_modules/sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
@@ -16762,28 +16791,6 @@
"jshint": "bin/jshint"
}
},
- "node_modules/jshint/node_modules/shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
- "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/jshint/node_modules/strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
- "bin": {
- "strip-json-comments": "cli.js"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/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",
@@ -16803,11 +16810,10 @@
"dev": true
},
"node_modules/json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true,
- "peer": true
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-stable-stringify": {
"version": "1.0.1",
@@ -16924,13 +16930,10 @@
"dev": true
},
"node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
"engines": {
"node": ">=0.10.0"
}
@@ -16953,6 +16956,15 @@
"node": ">=6"
}
},
+ "node_modules/klona": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz",
+ "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/koalas": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz",
@@ -17211,15 +17223,18 @@
}
},
"node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"dependencies": {
- "p-locate": "^4.1.0"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
@@ -17493,14 +17508,10 @@
}
},
"node_modules/markdown-to-jsx": {
- "version": "6.11.4",
- "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz",
- "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.2.tgz",
+ "integrity": "sha512-O8DMCl32V34RrD+ZHxcAPc2+kYytuDIoQYjY36RVdsLK7uHjgNVvFec4yv0X6LgB4YEZgSvK5QtFi5YVqEpoMA==",
"dev": true,
- "dependencies": {
- "prop-types": "^15.6.2",
- "unquote": "^1.1.0"
- },
"engines": {
"node": ">= 4"
},
@@ -17508,12 +17519,6 @@
"react": ">= 0.14.0"
}
},
- "node_modules/material-colors": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
- "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==",
- "dev": true
- },
"node_modules/math-expression-evaluator": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.7.tgz",
@@ -17557,6 +17562,18 @@
"node": ">= 0.6"
}
},
+ "node_modules/memfs": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.2.tgz",
+ "integrity": "sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==",
+ "dev": true,
+ "dependencies": {
+ "fs-monkey": "1.0.3"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/memoizerific": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz",
@@ -17576,6 +17593,30 @@
"readable-stream": "^2.0.1"
}
},
+ "node_modules/memory-fs/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/memory-fs/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/merge-deep": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz",
@@ -17606,13 +17647,13 @@
"node": ">=0.10.0"
}
},
- "node_modules/merge-deep/node_modules/for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "node_modules/merge-deep/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"dependencies": {
- "for-in": "^1.0.1"
+ "is-buffer": "^1.1.5"
},
"engines": {
"node": ">=0.10.0"
@@ -17716,16 +17757,16 @@
"dev": true
},
"node_modules/micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
"dev": true,
"dependencies": {
"braces": "^3.0.1",
- "picomatch": "^2.0.5"
+ "picomatch": "^2.2.3"
},
"engines": {
- "node": ">=8"
+ "node": ">=8.6"
}
},
"node_modules/micromatch/node_modules/braces": {
@@ -17805,21 +17846,21 @@
}
},
"node_modules/mime-db": {
- "version": "1.46.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
- "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
+ "version": "1.47.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
+ "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
- "version": "2.1.29",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
- "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
+ "version": "2.1.30",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz",
+ "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==",
"dev": true,
"dependencies": {
- "mime-db": "1.46.0"
+ "mime-db": "1.47.0"
},
"engines": {
"node": ">= 0.6"
@@ -17870,37 +17911,6 @@
"webpack": "^4.4.0"
}
},
- "node_modules/mini-css-extract-plugin/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/mini-css-extract-plugin/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -17966,12 +17976,6 @@
"node": ">= 4"
}
},
- "node_modules/minio/node_modules/async": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
- "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
- "dev": true
- },
"node_modules/minipass": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
@@ -18066,6 +18070,30 @@
"node": ">=4.0.0"
}
},
+ "node_modules/mississippi/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/mississippi/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/mississippi/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -18136,9 +18164,9 @@
}
},
"node_modules/mobx": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.1.8.tgz",
- "integrity": "sha512-U4yCvUeh6yKXRwFxm2lyJjXPVekOEar/R8ZKWAXem/3fthJqYflViawfjDAUh7lZEvbKqljC3NT/pSaUKpE+gg==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.0.tgz",
+ "integrity": "sha512-Aa1+VXsg4WxqJMTQfWoYuJi5UD10VZhiobSmcs5kcmI3BIT0aVtn7DysvCeDADCzl7dnbX+0BTHUj/v7gLlZpQ==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mobx"
@@ -18311,15 +18339,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/nanomatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/native-url": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz",
@@ -18471,6 +18490,59 @@
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
},
+ "node_modules/node-libs-browser/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/node-libs-browser/node_modules/readable-stream/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/node-libs-browser/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/node-libs-browser/node_modules/string_decoder/node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/node-libs-browser/node_modules/url": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
@@ -18527,6 +18599,18 @@
"semver": "bin/semver"
}
},
+ "node_modules/node-notifier/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/node-releases": {
"version": "1.1.71",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
@@ -18585,19 +18669,6 @@
"node": ">=4"
}
},
- "node_modules/normalize-url/node_modules/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,
- "dependencies": {
- "object-assign": "^4.1.0",
- "strict-uri-encode": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/normalize.css": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz",
@@ -18615,6 +18686,15 @@
"node": ">=4"
}
},
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
@@ -18746,6 +18826,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/object-hash": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz",
@@ -18755,9 +18847,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
- "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==",
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz",
+ "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -19064,16 +19156,6 @@
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
- "node_modules/os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -19183,15 +19265,33 @@
}
},
"node_modules/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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"dependencies": {
- "p-limit": "^2.2.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-map": {
@@ -19265,6 +19365,30 @@
"readable-stream": "^2.1.5"
}
},
+ "node_modules/parallel-transform/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/parallel-transform/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/param-case": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
@@ -19399,9 +19523,9 @@
}
},
"node_modules/pascal-case/node_modules/tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
},
"node_modules/pascalcase": {
@@ -19426,12 +19550,12 @@
"dev": true
},
"node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/path-is-absolute": {
@@ -19449,12 +19573,12 @@
"dev": true
},
"node_modules/path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/path-parse": {
@@ -19478,9 +19602,9 @@
}
},
"node_modules/pbkdf2": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
- "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
"dev": true,
"dependencies": {
"create-hash": "^1.1.2",
@@ -19499,9 +19623,9 @@
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"node_modules/picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
+ "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
"dev": true,
"engines": {
"node": ">=8.6"
@@ -19553,15 +19677,15 @@
}
},
"node_modules/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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
"dev": true,
"dependencies": {
- "find-up": "^4.0.0"
+ "find-up": "^5.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
"node_modules/pkg-up": {
@@ -19634,12 +19758,11 @@
"node": ">=4"
}
},
- "node_modules/pluralize": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
- "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "node_modules/pkg-up/node_modules/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,
- "peer": true,
"engines": {
"node": ">=4"
}
@@ -19672,12 +19795,12 @@
}
},
"node_modules/polished": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/polished/-/polished-3.7.1.tgz",
- "integrity": "sha512-/QgHrNGYwIA4mwxJ/7FSvalUJsm7KNfnXiScVSEG2Xa5qxDeBn4nmdjN2pW00mkM2Tts64ktc47U8F7Ed1BRAA==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.2.tgz",
+ "integrity": "sha512-jq4t3PJUpVRcveC53nnbEX35VyQI05x3tniwp26WFdm1dwaNUBHAi5awa/roBlwQxx1uRhwNSYeAi/aMbfiJCQ==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.12.5"
+ "@babel/runtime": "^7.13.17"
},
"engines": {
"node": ">=10"
@@ -19735,33 +19858,9 @@
}
},
"node_modules/postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dependencies": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/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,
- "dependencies": {
- "postcss": "^7.0.2",
- "postcss-selector-parser": "^6.0.2"
- }
- },
- "node_modules/postcss-attribute-case-insensitive/node_modules/postcss": {
"version": "7.0.35",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
"integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
"dependencies": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -19775,25 +19874,14 @@
"url": "https://opencollective.com/postcss/"
}
},
- "node_modules/postcss-attribute-case-insensitive/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-attribute-case-insensitive/node_modules/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==",
+ "node_modules/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,
"dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
+ "postcss": "^7.0.2",
+ "postcss-selector-parser": "^6.0.2"
}
},
"node_modules/postcss-browser-comments": {
@@ -19811,45 +19899,6 @@
"browserslist": "^4"
}
},
- "node_modules/postcss-browser-comments/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-browser-comments/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-browser-comments/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-calc": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz",
@@ -19861,51 +19910,12 @@
"postcss-value-parser": "^4.0.2"
}
},
- "node_modules/postcss-calc/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-calc/node_modules/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
},
- "node_modules/postcss-calc/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-calc/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -19919,45 +19929,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-color-functional-notation/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-color-functional-notation/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-color-functional-notation/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-color-gray": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
@@ -19972,45 +19943,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-color-gray/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-color-gray/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-color-gray/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -20024,45 +19956,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-color-hex-alpha/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-color-hex-alpha/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-color-hex-alpha/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -20077,45 +19970,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-color-mod-function/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-color-mod-function/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-color-mod-function/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-color-rebeccapurple": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
@@ -20129,45 +19983,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-color-rebeccapurple/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-color-rebeccapurple/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-color-rebeccapurple/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-colormin": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
@@ -20184,45 +19999,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-colormin/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-colormin/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-colormin/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-convert-values": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
@@ -20236,45 +20012,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-convert-values/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-convert-values/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-convert-values/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-custom-media": {
"version": "7.0.8",
"resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz",
@@ -20287,45 +20024,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-custom-media/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-custom-media/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-custom-media/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-custom-properties": {
"version": "8.0.11",
"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz",
@@ -20339,45 +20037,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-custom-properties/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-custom-properties/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-custom-properties/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-custom-selectors": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
@@ -20403,24 +20062,6 @@
"node": ">=4"
}
},
- "node_modules/postcss-custom-selectors/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -20435,27 +20076,6 @@
"node": ">=4"
}
},
- "node_modules/postcss-custom-selectors/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-custom-selectors/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -20481,24 +20101,6 @@
"node": ">=4"
}
},
- "node_modules/postcss-dir-pseudo-class/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -20513,27 +20115,6 @@
"node": ">=4"
}
},
- "node_modules/postcss-dir-pseudo-class/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-dir-pseudo-class/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-discard-comments": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
@@ -20546,45 +20127,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-discard-comments/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-discard-comments/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-discard-comments/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-discard-duplicates": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
@@ -20597,45 +20139,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-discard-duplicates/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-discard-duplicates/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-discard-duplicates/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-discard-empty": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
@@ -20648,45 +20151,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-discard-empty/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-discard-empty/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-discard-empty/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-discard-overridden": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
@@ -20699,45 +20163,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-discard-overridden/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-discard-overridden/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-discard-overridden/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -20751,45 +20176,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-double-position-gradients/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-double-position-gradients/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-double-position-gradients/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-env-function": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
@@ -20803,45 +20189,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-env-function/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-env-function/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-env-function/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-flexbugs-fixes": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz",
@@ -20851,45 +20198,6 @@
"postcss": "^7.0.26"
}
},
- "node_modules/postcss-flexbugs-fixes/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-flexbugs-fixes/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-flexbugs-fixes/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-focus-visible": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
@@ -20902,45 +20210,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-focus-visible/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-focus-visible/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-focus-visible/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-focus-within": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
@@ -20953,45 +20222,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-focus-within/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-focus-within/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-focus-within/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-font-variant": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz",
@@ -21001,45 +20231,6 @@
"postcss": "^7.0.2"
}
},
- "node_modules/postcss-font-variant/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-font-variant/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-font-variant/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-functions": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz",
@@ -21051,6 +20242,27 @@
"postcss-value-parser": "^3.3.0"
}
},
+ "node_modules/postcss-functions/node_modules/postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/postcss-functions/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/postcss-gap-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
@@ -21063,45 +20275,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-gap-properties/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-gap-properties/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-gap-properties/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -21115,45 +20288,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-image-set-function/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-image-set-function/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-image-set-function/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-import": {
"version": "12.0.1",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz",
@@ -21169,94 +20303,15 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-import/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-import/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-import/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-initial": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz",
- "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz",
+ "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==",
"dev": true,
"dependencies": {
- "lodash.template": "^4.5.0",
"postcss": "^7.0.2"
}
},
- "node_modules/postcss-initial/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-initial/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-initial/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-inline-svg": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/postcss-inline-svg/-/postcss-inline-svg-3.1.1.tgz",
@@ -21294,6 +20349,20 @@
"readable-stream": "^3.1.1"
}
},
+ "node_modules/postcss-inline-svg/node_modules/postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/postcss-inline-svg/node_modules/readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -21308,6 +20377,44 @@
"node": ">= 6"
}
},
+ "node_modules/postcss-inline-svg/node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/postcss-inline-svg/node_modules/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,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss-inline-svg/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/postcss-js": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz",
@@ -21317,42 +20424,6 @@
"postcss": "^7.0.18"
}
},
- "node_modules/postcss-js/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-js/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-js/node_modules/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==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-lab-function": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
@@ -21367,45 +20438,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-lab-function/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-lab-function/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-lab-function/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-load-config": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
@@ -21423,18 +20455,6 @@
"url": "https://opencollective.com/postcss/"
}
},
- "node_modules/postcss-load-config/node_modules/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,
- "dependencies": {
- "caller-callsite": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/postcss-load-config/node_modules/cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -21500,55 +20520,6 @@
"node": ">= 6"
}
},
- "node_modules/postcss-loader/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/postcss-loader/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/postcss-loader/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/postcss-loader/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-loader/node_modules/schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -21563,27 +20534,6 @@
"node": ">= 4"
}
},
- "node_modules/postcss-loader/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-loader/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-logical": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
@@ -21596,45 +20546,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-logical/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-logical/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-logical/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-media-minmax": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
@@ -21647,45 +20558,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-media-minmax/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-media-minmax/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-media-minmax/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-merge-longhand": {
"version": "4.0.11",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
@@ -21701,45 +20573,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-merge-longhand/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-merge-longhand/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-merge-longhand/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-merge-rules": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
@@ -21757,24 +20590,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-merge-rules/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
@@ -21789,27 +20604,6 @@
"node": ">=8"
}
},
- "node_modules/postcss-merge-rules/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-merge-rules/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-minify-font-values": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
@@ -21823,45 +20617,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-minify-font-values/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-minify-font-values/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-minify-font-values/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-minify-gradients": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
@@ -21877,45 +20632,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-minify-gradients/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-minify-gradients/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-minify-gradients/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-minify-params": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
@@ -21933,45 +20649,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-minify-params/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-minify-params/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-minify-params/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-minify-selectors": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
@@ -21987,24 +20664,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-minify-selectors/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
@@ -22019,27 +20678,6 @@
"node": ">=8"
}
},
- "node_modules/postcss-minify-selectors/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-minify-selectors/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-mixins": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-6.2.3.tgz",
@@ -22157,15 +20795,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/postcss-mixins/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/postcss-mixins/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -22202,24 +20831,6 @@
"node": ">=4"
}
},
- "node_modules/postcss-mixins/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-mixins/node_modules/postcss-simple-vars": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz",
@@ -22238,27 +20849,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/postcss-mixins/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-mixins/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-modules-extract-imports": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
@@ -22271,45 +20861,6 @@
"node": ">= 6"
}
},
- "node_modules/postcss-modules-extract-imports/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-modules-extract-imports/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules-extract-imports/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-modules-local-by-default": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
@@ -22325,51 +20876,12 @@
"node": ">= 6"
}
},
- "node_modules/postcss-modules-local-by-default/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-modules-local-by-default/node_modules/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
},
- "node_modules/postcss-modules-local-by-default/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules-local-by-default/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-modules-scope": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
@@ -22383,45 +20895,6 @@
"node": ">= 6"
}
},
- "node_modules/postcss-modules-scope/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-modules-scope/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules-scope/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-modules-values": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
@@ -22432,45 +20905,6 @@
"postcss": "^7.0.6"
}
},
- "node_modules/postcss-modules-values/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-modules-values/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules-values/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-nested": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz",
@@ -22480,42 +20914,6 @@
"postcss-selector-parser": "^6.0.2"
}
},
- "node_modules/postcss-nested/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-nested/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-nested/node_modules/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==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-nesting": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-4.2.1.tgz",
@@ -22528,6 +20926,29 @@
"node": ">=4.0.0"
}
},
+ "node_modules/postcss-nesting/node_modules/postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/postcss-nesting/node_modules/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,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/postcss-normalize": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz",
@@ -22556,45 +20977,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-charset/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-charset/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-charset/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-display-values": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
@@ -22609,45 +20991,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-display-values/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-display-values/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-display-values/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-positions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
@@ -22663,45 +21006,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-positions/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-positions/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-positions/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-repeat-style": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
@@ -22717,45 +21021,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-repeat-style/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-repeat-style/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-repeat-style/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-string": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
@@ -22770,45 +21035,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-string/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-string/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-string/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-timing-functions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
@@ -22823,45 +21049,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-timing-functions/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-timing-functions/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-timing-functions/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-unicode": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
@@ -22876,45 +21063,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-unicode/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-unicode/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-unicode/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-url": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
@@ -22939,45 +21087,6 @@
"node": ">=6"
}
},
- "node_modules/postcss-normalize-url/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-url/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-url/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-normalize-whitespace": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
@@ -22991,84 +21100,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-normalize-whitespace/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize-whitespace/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize-whitespace/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/postcss-normalize/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-normalize/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-normalize/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-ordered-values": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
@@ -23083,45 +21114,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-ordered-values/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-ordered-values/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-ordered-values/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-overflow-shorthand": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
@@ -23134,45 +21126,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-overflow-shorthand/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-overflow-shorthand/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-overflow-shorthand/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-page-break": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
@@ -23182,45 +21135,6 @@
"postcss": "^7.0.2"
}
},
- "node_modules/postcss-page-break/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-page-break/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-page-break/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-place": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
@@ -23234,45 +21148,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-place/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-place/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-place/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-preset-env": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
@@ -23343,24 +21218,6 @@
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
}
},
- "node_modules/postcss-preset-env/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-preset-env/node_modules/postcss-nesting": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
@@ -23379,27 +21236,6 @@
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
"dev": true
},
- "node_modules/postcss-preset-env/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-preset-env/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -23425,24 +21261,6 @@
"node": ">=4"
}
},
- "node_modules/postcss-pseudo-class-any-link/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -23457,27 +21275,6 @@
"node": ">=4"
}
},
- "node_modules/postcss-pseudo-class-any-link/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-pseudo-class-any-link/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-reduce-initial": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
@@ -23493,45 +21290,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-reduce-initial/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-reduce-initial/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-reduce-initial/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-reduce-transforms": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
@@ -23547,45 +21305,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-reduce-transforms/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-reduce-transforms/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-reduce-transforms/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/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",
@@ -23595,45 +21314,6 @@
"postcss": "^7.0.2"
}
},
- "node_modules/postcss-replace-overflow-wrap/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-replace-overflow-wrap/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-replace-overflow-wrap/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-safe-parser": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz",
@@ -23646,45 +21326,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/postcss-safe-parser/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-safe-parser/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-safe-parser/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-selector-matches": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
@@ -23695,45 +21336,6 @@
"postcss": "^7.0.2"
}
},
- "node_modules/postcss-selector-matches/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-selector-matches/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-selector-matches/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-selector-not": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz",
@@ -23744,53 +21346,12 @@
"postcss": "^7.0.2"
}
},
- "node_modules/postcss-selector-not/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-selector-not/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-selector-not/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-selector-parser": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
- "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz",
+ "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==",
"dependencies": {
"cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1",
"util-deprecate": "^1.0.2"
},
"engines": {
@@ -23806,40 +21367,21 @@
"postcss": "^6.0.9"
}
},
- "node_modules/postcss-svgo": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
- "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
+ "node_modules/postcss-simple-vars/node_modules/postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true,
"dependencies": {
- "is-svg": "^3.0.0",
- "postcss": "^7.0.0",
- "postcss-value-parser": "^3.0.0",
- "svgo": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/postcss-svgo/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
+ "chalk": "^2.4.1",
"source-map": "^0.6.1",
- "supports-color": "^6.1.0"
+ "supports-color": "^5.4.0"
},
"engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
+ "node": ">=4.0.0"
}
},
- "node_modules/postcss-svgo/node_modules/source-map": {
+ "node_modules/postcss-simple-vars/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
@@ -23848,16 +21390,18 @@
"node": ">=0.10.0"
}
},
- "node_modules/postcss-svgo/node_modules/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==",
+ "node_modules/postcss-svgo": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
+ "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
"dev": true,
"dependencies": {
- "has-flag": "^3.0.0"
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=6.9.0"
}
},
"node_modules/postcss-unique-selectors": {
@@ -23874,45 +21418,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/postcss-unique-selectors/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-unique-selectors/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-unique-selectors/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/postcss-value-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
@@ -23940,6 +21445,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/postcss/node_modules/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==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -24017,16 +21533,6 @@
"clipboard": "^2.0.0"
}
},
- "node_modules/private": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
- "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -24184,20 +21690,6 @@
"node": ">=4.0.0"
}
},
- "node_modules/prompt-choices/node_modules/clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/prompt-choices/node_modules/define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -24220,27 +21712,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/prompt-choices/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/prompt-choices/node_modules/shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/prompt-confirm": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/prompt-confirm/-/prompt-confirm-2.0.4.tgz",
@@ -24272,6 +21743,21 @@
"node": ">=4.0.0"
}
},
+ "node_modules/prompt-question/node_modules/clone-deep": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz",
+ "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==",
+ "dev": true,
+ "dependencies": {
+ "for-own": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^5.0.0",
+ "shallow-clone": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/prompt-question/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
@@ -24281,6 +21767,18 @@
"ms": "^2.1.1"
}
},
+ "node_modules/prompt-question/node_modules/for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/prompt-question/node_modules/kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
@@ -24290,10 +21788,24 @@
"node": ">=0.10.0"
}
},
+ "node_modules/prompt-question/node_modules/shallow-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
+ "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.1",
+ "kind-of": "^5.0.0",
+ "mixin-object": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/prompts": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz",
- "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz",
+ "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==",
"dev": true,
"dependencies": {
"kleur": "^3.0.3",
@@ -24350,13 +21862,6 @@
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
},
- "node_modules/pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true,
- "peer": true
- },
"node_modules/psl": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -24511,6 +22016,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/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,
+ "dependencies": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
@@ -24568,6 +22086,28 @@
"quote-stream": "bin/cmd.js"
}
},
+ "node_modules/quote-stream/node_modules/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==",
+ "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"
+ }
+ },
+ "node_modules/quote-stream/node_modules/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==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/quote-stream/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -24668,37 +22208,6 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/raw-loader/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/raw-loader/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/raw-loader/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/raw-loader/node_modules/loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -24871,11 +22380,11 @@
}
},
"node_modules/react-circular-progressbar": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.3.tgz",
- "integrity": "sha512-YKN+xAShXA3gYihevbQZbavfiJxo83Dt1cUxqg/cltj4VVsRQpDr7Fg1mvjDG3x1KHGtd9NmYKvJ2mMrPwbKyw==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.4.tgz",
+ "integrity": "sha512-OfX0ThSxRYEVGaQSt0DlXfyl5w4DbXHsXetyeivmoQrh9xA9bzVPHNf8aAhOIiwiaxX2WYWpLDB3gcpsDJ9oww==",
"peerDependencies": {
- "react": "^0.14.0 || ^15.0.0 || ^16.0.0"
+ "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
"node_modules/react-codemirror2": {
@@ -24887,22 +22396,14 @@
"react": ">=15.5 <=16.x"
}
},
- "node_modules/react-color": {
- "version": "2.19.3",
- "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz",
- "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==",
+ "node_modules/react-colorful": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.1.4.tgz",
+ "integrity": "sha512-WOEpRNz8Oo2SEU4eYQ279jEKFSjpFPa9Vi2U/K0DGwP9wOQ8wYkJcNSd5Qbv1L8OFvyKDCbWekjftXaU5mbmtg==",
"dev": true,
- "dependencies": {
- "@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"
- },
"peerDependencies": {
- "react": "*"
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
}
},
"node_modules/react-confirm": {
@@ -25044,18 +22545,17 @@
"url": "https://tidelift.com/funding/github/npm/browserslist"
}
},
- "node_modules/react-dev-utils/node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "node_modules/react-dev-utils/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
"dev": true,
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
},
"engines": {
- "node": ">= 8"
+ "node": ">=0.10.0"
}
},
"node_modules/react-dev-utils/node_modules/dir-glob": {
@@ -25079,6 +22579,51 @@
"node": ">=8"
}
},
+ "node_modules/react-dev-utils/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/fork-ts-checker-webpack-plugin": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+ "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.5.5",
+ "chalk": "^2.4.1",
+ "micromatch": "^3.1.10",
+ "minimatch": "^3.0.4",
+ "semver": "^5.6.0",
+ "tapable": "^1.0.0",
+ "worker-rpc": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6.11.5",
+ "yarn": ">=1.0.0"
+ }
+ },
"node_modules/react-dev-utils/node_modules/globby": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz",
@@ -25108,6 +22653,18 @@
"node": ">= 4"
}
},
+ "node_modules/react-dev-utils/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react-dev-utils/node_modules/loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -25123,35 +22680,49 @@
}
},
"node_modules/react-dev-utils/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^4.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/react-dev-utils/node_modules/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==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"dependencies": {
- "p-limit": "^2.0.0"
+ "p-limit": "^2.2.0"
},
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/react-dev-utils/node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -25180,25 +22751,60 @@
"node": ">=6"
}
},
- "node_modules/react-dev-utils/node_modules/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==",
+ "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/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,
"dependencies": {
- "shebang-regex": "^3.0.0"
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=6"
}
},
- "node_modules/react-dev-utils/node_modules/shebang-regex": {
+ "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/p-locate": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/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,
"engines": {
- "node": ">=8"
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/prompts": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz",
+ "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+ "dev": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/react-dev-utils/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
}
},
"node_modules/react-dev-utils/node_modules/slash": {
@@ -25222,21 +22828,6 @@
"node": ">=8"
}
},
- "node_modules/react-dev-utils/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/react-dnd": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.6.0.tgz",
@@ -25289,9 +22880,9 @@
}
},
"node_modules/react-docgen-typescript": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.21.0.tgz",
- "integrity": "sha512-E4y/OcXwHukgiVafCGlxwoNHr4BDmM70Ww7oimL/QkMo5dmGALhceewe/xmVjdMxxI7E5syOGOc9/tbHL742rg==",
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.22.0.tgz",
+ "integrity": "sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg==",
"dev": true,
"peerDependencies": {
"typescript": ">= 3.x"
@@ -25314,9 +22905,9 @@
}
},
"node_modules/react-docgen-typescript-plugin/node_modules/tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
},
"node_modules/react-docgen/node_modules/commander": {
@@ -25414,18 +23005,6 @@
"react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/react-hotkeys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/react-hotkeys/-/react-hotkeys-2.0.0.tgz",
- "integrity": "sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q==",
- "dev": true,
- "dependencies": {
- "prop-types": "^15.6.1"
- },
- "peerDependencies": {
- "react": ">= 0.14.0"
- }
- },
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -25532,9 +23111,9 @@
}
},
"node_modules/react-popper-tooltip/node_modules/react-popper": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz",
- "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==",
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz",
+ "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==",
"dev": true,
"dependencies": {
"react-fast-compare": "^3.0.1",
@@ -25777,61 +23356,6 @@
"node": ">= 6"
}
},
- "node_modules/react-scripts/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
- "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/experimental-utils": "2.34.0",
- "functional-red-black-tree": "^1.0.1",
- "regexpp": "^3.0.0",
- "tsutils": "^3.17.1"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^2.0.0",
- "eslint": "^5.0.0 || ^6.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/react-scripts/node_modules/@typescript-eslint/parser": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz",
- "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==",
- "dev": true,
- "dependencies": {
- "@types/eslint-visitor-keys": "^1.0.0",
- "@typescript-eslint/experimental-utils": "2.34.0",
- "@typescript-eslint/typescript-estree": "2.34.0",
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^5.0.0 || ^6.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"node_modules/react-scripts/node_modules/@webassemblyjs/ast": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
@@ -26009,9 +23533,9 @@
}
},
"node_modules/react-scripts/node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -26020,40 +23544,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/react-scripts/node_modules/acorn-jsx": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
- "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/react-scripts/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/react-scripts/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
"node_modules/react-scripts/node_modules/aria-query": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
@@ -26141,18 +23631,6 @@
"node": ">= 8"
}
},
- "node_modules/react-scripts/node_modules/cacache/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
"node_modules/react-scripts/node_modules/case-sensitive-paths-webpack-plugin": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz",
@@ -26193,6 +23671,18 @@
"node": ">=6"
}
},
+ "node_modules/react-scripts/node_modules/cliui/node_modules/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,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/react-scripts/node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -26200,28 +23690,17 @@
"dev": true
},
"node_modules/react-scripts/node_modules/cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
+ "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
"dev": true,
"dependencies": {
- "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": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
},
"engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/react-scripts/node_modules/cross-spawn/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
+ "node": ">= 8"
}
},
"node_modules/react-scripts/node_modules/css-loader": {
@@ -26313,116 +23792,6 @@
"node": ">=8"
}
},
- "node_modules/react-scripts/node_modules/eslint": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
- "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "ajv": "^6.10.0",
- "chalk": "^2.1.0",
- "cross-spawn": "^6.0.5",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "eslint-scope": "^5.0.0",
- "eslint-utils": "^1.4.3",
- "eslint-visitor-keys": "^1.1.0",
- "espree": "^6.1.2",
- "esquery": "^1.0.1",
- "esutils": "^2.0.2",
- "file-entry-cache": "^5.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.0.0",
- "globals": "^12.1.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "inquirer": "^7.0.0",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.3.0",
- "lodash": "^4.17.14",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "optionator": "^0.8.3",
- "progress": "^2.0.0",
- "regexpp": "^2.0.1",
- "semver": "^6.1.2",
- "strip-ansi": "^5.2.0",
- "strip-json-comments": "^3.0.1",
- "table": "^5.2.3",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/react-scripts/node_modules/eslint-config-react-app": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz",
- "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==",
- "dev": true,
- "dependencies": {
- "confusing-browser-globals": "^1.0.9"
- },
- "peerDependencies": {
- "@typescript-eslint/eslint-plugin": "2.x",
- "@typescript-eslint/parser": "2.x",
- "babel-eslint": "10.x",
- "eslint": "6.x",
- "eslint-plugin-flowtype": "3.x || 4.x",
- "eslint-plugin-import": "2.x",
- "eslint-plugin-jsx-a11y": "6.x",
- "eslint-plugin-react": "7.x",
- "eslint-plugin-react-hooks": "1.x || 2.x"
- }
- },
- "node_modules/react-scripts/node_modules/eslint-loader": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz",
- "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==",
- "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin",
- "dev": true,
- "dependencies": {
- "fs-extra": "^8.1.0",
- "loader-fs-cache": "^1.0.2",
- "loader-utils": "^1.2.3",
- "object-hash": "^2.0.1",
- "schema-utils": "^2.6.1"
- },
- "engines": {
- "node": ">= 8.9.0"
- },
- "peerDependencies": {
- "eslint": "^5.0.0 || ^6.0.0",
- "webpack": "^4.0.0 || ^5.0.0"
- }
- },
- "node_modules/react-scripts/node_modules/eslint-plugin-flowtype": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz",
- "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.15"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": ">=6.1.0"
- }
- },
"node_modules/react-scripts/node_modules/eslint-plugin-import": {
"version": "2.20.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz",
@@ -26458,19 +23827,6 @@
"ms": "2.0.0"
}
},
- "node_modules/react-scripts/node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/react-scripts/node_modules/eslint-plugin-import/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -26526,6 +23882,18 @@
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
}
},
+ "node_modules/react-scripts/node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react-scripts/node_modules/eslint-plugin-react/node_modules/resolve": {
"version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@@ -26540,63 +23908,16 @@
}
},
"node_modules/react-scripts/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
"dev": true,
"dependencies": {
- "esrecurse": "^4.3.0",
+ "esrecurse": "^4.1.0",
"estraverse": "^4.1.1"
},
"engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/react-scripts/node_modules/eslint-utils": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
- "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/react-scripts/node_modules/eslint/node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/react-scripts/node_modules/eslint/node_modules/regexpp": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
- "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
- "dev": true,
- "engines": {
- "node": ">=6.5.0"
- }
- },
- "node_modules/react-scripts/node_modules/espree": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
- "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
- "dev": true,
- "dependencies": {
- "acorn": "^7.1.1",
- "acorn-jsx": "^5.2.0",
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
+ "node": ">=4.0.0"
}
},
"node_modules/react-scripts/node_modules/extend-shallow": {
@@ -26629,40 +23950,6 @@
"node": ">=4.0.0"
}
},
- "node_modules/react-scripts/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/react-scripts/node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-scripts/node_modules/file-entry-cache": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
- "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^2.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/react-scripts/node_modules/file-loader": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz",
@@ -26688,18 +23975,17 @@
"node": ">= 0.4.0"
}
},
- "node_modules/react-scripts/node_modules/flat-cache": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
- "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "node_modules/react-scripts/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"dependencies": {
- "flatted": "^2.0.0",
- "rimraf": "2.6.3",
- "write": "1.0.3"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/react-scripts/node_modules/fork-ts-checker-webpack-plugin": {
@@ -26760,33 +24046,6 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/react-scripts/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/react-scripts/node_modules/globals": {
- "version": "12.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
- "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.8.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/react-scripts/node_modules/globby": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
@@ -26805,12 +24064,6 @@
"node": ">=4"
}
},
- "node_modules/react-scripts/node_modules/globby/node_modules/ignore": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
- "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
- "dev": true
- },
"node_modules/react-scripts/node_modules/globby/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@@ -26820,6 +24073,15 @@
"node": ">=4"
}
},
+ "node_modules/react-scripts/node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/react-scripts/node_modules/html-webpack-plugin": {
"version": "4.0.0-beta.11",
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz",
@@ -26841,15 +24103,6 @@
"webpack": "^4.0.0"
}
},
- "node_modules/react-scripts/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/react-scripts/node_modules/immer": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz",
@@ -26880,6 +24133,18 @@
"node": ">=6.0.0"
}
},
+ "node_modules/react-scripts/node_modules/inquirer/node_modules/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,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/react-scripts/node_modules/is-absolute-url": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
@@ -26932,33 +24197,6 @@
"node": ">= 8.3"
}
},
- "node_modules/react-scripts/node_modules/jest-worker/node_modules/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,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/react-scripts/node_modules/jest-worker/node_modules/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,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/react-scripts/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/react-scripts/node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@@ -26981,26 +24219,16 @@
"node": ">=4.0"
}
},
- "node_modules/react-scripts/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/react-scripts/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^4.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
"node_modules/react-scripts/node_modules/make-dir": {
@@ -27087,15 +24315,24 @@
}
},
"node_modules/react-scripts/node_modules/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==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"dependencies": {
- "p-limit": "^2.0.0"
+ "p-limit": "^2.2.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
+ }
+ },
+ "node_modules/react-scripts/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/react-scripts/node_modules/path-type": {
@@ -27128,6 +24365,18 @@
"node": ">=6"
}
},
+ "node_modules/react-scripts/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/react-scripts/node_modules/pkg-up": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
@@ -27152,22 +24401,38 @@
"node": ">=6"
}
},
- "node_modules/react-scripts/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
+ "node_modules/react-scripts/node_modules/pkg-up/node_modules/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,
"dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-scripts/node_modules/pkg-up/node_modules/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,
+ "dependencies": {
+ "p-limit": "^2.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-scripts/node_modules/pkg-up/node_modules/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,
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/react-scripts/node_modules/postcss-flexbugs-fixes": {
@@ -27185,15 +24450,6 @@
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
"dev": true
},
- "node_modules/react-scripts/node_modules/postcss/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/react-scripts/node_modules/punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
@@ -27244,20 +24500,6 @@
"node": ">=8"
}
},
- "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/react-scripts/node_modules/react-dev-utils/node_modules/json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
@@ -27284,27 +24526,6 @@
"node": ">=4.0.0"
}
},
- "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/react-scripts/node_modules/react-dev-utils/node_modules/strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -27317,31 +24538,110 @@
"node": ">=8"
}
},
- "node_modules/react-scripts/node_modules/react-dev-utils/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "node_modules/react-scripts/node_modules/read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": ">=4"
}
},
- "node_modules/react-scripts/node_modules/regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "node_modules/react-scripts/node_modules/read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-scripts/node_modules/read-pkg-up/node_modules/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,
"engines": {
- "node": ">=8"
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-scripts/node_modules/read-pkg/node_modules/path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-scripts/node_modules/read-pkg/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/react-scripts/node_modules/resolve": {
@@ -27356,27 +24656,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/react-scripts/node_modules/rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/react-scripts/node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/react-scripts/node_modules/slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@@ -27386,20 +24665,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/react-scripts/node_modules/slice-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
- "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/react-scripts/node_modules/sockjs": {
"version": "0.3.20",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
@@ -27468,69 +24733,16 @@
"node": ">= 8"
}
},
- "node_modules/react-scripts/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "node_modules/react-scripts/node_modules/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,
"dependencies": {
- "ansi-regex": "^4.1.0"
+ "has-flag": "^4.0.0"
},
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/react-scripts/node_modules/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,
"engines": {
"node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/react-scripts/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/react-scripts/node_modules/table": {
- "version": "5.4.6",
- "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
- "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.10.2",
- "lodash": "^4.17.14",
- "slice-ansi": "^2.1.0",
- "string-width": "^3.0.0"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/react-scripts/node_modules/table/node_modules/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,
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "engines": {
- "node": ">=6"
}
},
"node_modules/react-scripts/node_modules/terser-webpack-plugin": {
@@ -27747,15 +24959,6 @@
}
}
},
- "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/chokidar": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
@@ -27798,26 +25001,13 @@
"node": ">= 4.0"
}
},
- "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/schema-utils": {
@@ -27834,28 +25024,16 @@
"node": ">= 4"
}
},
- "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "node_modules/react-scripts/node_modules/webpack-dev-server/node_modules/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,
"dependencies": {
- "ansi-regex": "^2.0.0"
+ "has-flag": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-scripts/node_modules/webpack/node_modules/acorn": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
+ "node": ">=6"
}
},
"node_modules/react-scripts/node_modules/webpack/node_modules/cacache": {
@@ -27881,19 +25059,6 @@
"y18n": "^4.0.0"
}
},
- "node_modules/react-scripts/node_modules/webpack/node_modules/eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/react-scripts/node_modules/webpack/node_modules/schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -27918,9 +25083,9 @@
}
},
"node_modules/react-scripts/node_modules/webpack/node_modules/ssri": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
"dev": true,
"dependencies": {
"figgy-pudding": "^3.5.1"
@@ -27989,16 +25154,16 @@
"node": ">=6"
}
},
- "node_modules/react-scripts/node_modules/write": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
- "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "node_modules/react-scripts/node_modules/wrap-ansi/node_modules/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,
"dependencies": {
- "mkdirp": "^0.5.1"
+ "ansi-regex": "^4.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
"node_modules/react-scripts/node_modules/ws": {
@@ -28050,6 +25215,40 @@
"node": ">=6"
}
},
+ "node_modules/react-scripts/node_modules/yargs/node_modules/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,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-scripts/node_modules/yargs/node_modules/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,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-scripts/node_modules/yargs/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/react-scripts/node_modules/yargs/node_modules/string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -28064,20 +25263,32 @@
"node": ">=6"
}
},
- "node_modules/react-sizeme": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.12.tgz",
- "integrity": "sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw==",
+ "node_modules/react-scripts/node_modules/yargs/node_modules/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,
"dependencies": {
- "element-resize-detector": "^1.2.1",
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-sizeme": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-3.0.1.tgz",
+ "integrity": "sha512-9Hf1NLgSbny1bha77l9HwvwwxQUJxFUqi44Ih+y3evA+PezBpGdCGlnvye6avss2cIgs9PgdYgMnfuzJWn/RUw==",
+ "dev": true,
+ "dependencies": {
+ "element-resize-detector": "^1.2.2",
"invariant": "^2.2.4",
"shallowequal": "^1.1.0",
- "throttle-debounce": "^2.1.0"
+ "throttle-debounce": "^3.0.1"
},
"peerDependencies": {
- "react": "^0.14.0 || ^15.0.0-0 || ^16.0.0",
- "react-dom": "^0.14.0 || ^15.0.0-0 || ^16.0.0"
+ "react": "^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0",
+ "react-dom": "^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0"
}
},
"node_modules/react-smooth": {
@@ -28197,15 +25408,6 @@
"react-dom": "^15.3.0 || ^16.0.0-alpha"
}
},
- "node_modules/reactcss": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
- "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.0.1"
- }
- },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -28225,125 +25427,99 @@
}
},
"node_modules/read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
"dev": true,
"dependencies": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "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==",
"dev": true,
"dependencies": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-pkg-up/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"dependencies": {
- "locate-path": "^2.0.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^4.1.0"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"dependencies": {
- "p-limit": "^1.1.0"
+ "p-limit": "^2.2.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/read-pkg-up/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "node_modules/read-pkg/node_modules/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==",
"dev": true,
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "dependencies": {
- "pify": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/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==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"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"
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
}
},
+ "node_modules/readable-stream/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
"node_modules/readdirp": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
@@ -28396,15 +25572,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/readdirp/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/readdirp/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -28429,6 +25596,30 @@
"node": ">=0.10.0"
}
},
+ "node_modules/readdirp/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/readdirp/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/readline-ui": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/readline-ui/-/readline-ui-2.2.3.tgz",
@@ -28444,6 +25635,15 @@
"node": ">=4.0"
}
},
+ "node_modules/readline-ui/node_modules/ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/readline-ui/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -28481,6 +25681,18 @@
"node": ">=4"
}
},
+ "node_modules/readline-ui/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/readline-utils": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/readline-utils/-/readline-utils-2.2.3.tgz",
@@ -28542,9 +25754,9 @@
}
},
"node_modules/recharts-scale": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.4.tgz",
- "integrity": "sha512-e7MCnuD1+gtY9N7TYxzB+QXvi4s30kvNqVbI1p5m4rf47GusEQaEHxi8zvlZkdOOZ90UhpGHcnkYlyYkUJ2JoQ==",
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz",
+ "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==",
"dependencies": {
"decimal.js-light": "^2.4.1"
}
@@ -28553,21 +25765,9 @@
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
- "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.",
+ "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
- "node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "dependencies": {
- "resolve": "^1.1.6"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/recursive-readdir": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
@@ -28604,12 +25804,11 @@
}
},
"node_modules/redux": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz",
- "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz",
+ "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==",
"dependencies": {
- "loose-envify": "^1.4.0",
- "symbol-observable": "^1.2.0"
+ "@babel/runtime": "^7.9.2"
}
},
"node_modules/redux-immutable": {
@@ -28732,13 +25931,15 @@
}
},
"node_modules/regexpp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz",
- "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
"dev": true,
- "peer": true,
"engines": {
- "node": ">=4.0.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
}
},
"node_modules/regexpu-core": {
@@ -28813,15 +26014,6 @@
"strip-ansi": "^3.0.0"
}
},
- "node_modules/renderkid/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/renderkid/node_modules/css-select": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
@@ -28884,22 +26076,39 @@
"node": ">= 6"
}
},
- "node_modules/renderkid/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "node_modules/renderkid/node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/renderkid/node_modules/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==",
"dev": true,
"dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
+ "safe-buffer": "~5.2.0"
}
},
"node_modules/repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "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==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -28914,19 +26123,6 @@
"node": ">=0.10"
}
},
- "node_modules/repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "is-finite": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@@ -29030,43 +26226,12 @@
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
- "node_modules/require-uncached": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
- "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "caller-path": "^0.1.0",
- "resolve-from": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-uncached/node_modules/resolve-from": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
- "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"dev": true
},
- "node_modules/reselect": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz",
- "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=",
- "dev": true,
- "peer": true
- },
"node_modules/resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
@@ -29148,6 +26313,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/resolve-dir/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -29412,27 +26589,10 @@
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
"integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
},
- "node_modules/rx-lite": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
- "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
- "dev": true,
- "peer": true
- },
- "node_modules/rx-lite-aggregates": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
- "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
- "dev": true,
- "peer": true,
- "dependencies": {
- "rx-lite": "*"
- }
- },
"node_modules/rxjs": {
- "version": "6.6.6",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz",
- "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==",
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"dev": true,
"dependencies": {
"tslib": "^1.9.0"
@@ -29522,15 +26682,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/sane/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/sane/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -29598,41 +26749,6 @@
}
}
},
- "node_modules/sass-loader/node_modules/clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/sass-loader/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sass-loader/node_modules/shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/sax": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
@@ -29678,37 +26794,6 @@
"url": "https://opencollective.com/webpack"
}
},
- "node_modules/schema-utils/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/schema-utils/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/schema-utils/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
@@ -29977,26 +27062,15 @@
}
},
"node_modules/shallow-clone": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
- "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
"dependencies": {
- "is-extendable": "^0.1.1",
- "kind-of": "^5.0.0",
- "mixin-object": "^2.0.1"
+ "kind-of": "^6.0.2"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/shallow-clone/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/shallow-copy": {
@@ -30038,24 +27112,24 @@
}
},
"node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"dependencies": {
- "shebang-regex": "^1.0.0"
+ "shebang-regex": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/shell-quote": {
@@ -30065,29 +27139,14 @@
"dev": true
},
"node_modules/shelljs": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
- "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
- "dev": true,
- "dependencies": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
+ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
"bin": {
"shjs": "bin/shjs"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/shelljs/node_modules/interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
+ "node": ">=0.8.0"
}
},
"node_modules/shellwords": {
@@ -30145,16 +27204,17 @@
}
},
"node_modules/slice-ansi": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
- "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
"dev": true,
- "peer": true,
"dependencies": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
"is-fullwidth-code-point": "^2.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
"node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
@@ -30162,7 +27222,6 @@
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true,
- "peer": true,
"engines": {
"node": ">=4"
}
@@ -30212,6 +27271,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/snapdragon/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -30245,6 +27316,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/snapdragon/node_modules/is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -30257,6 +27340,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/snapdragon/node_modules/is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -30271,7 +27366,7 @@
"node": ">=0.10.0"
}
},
- "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": {
+ "node_modules/snapdragon/node_modules/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==",
@@ -30337,9 +27432,9 @@
}
},
"node_modules/sockjs-client": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz",
- "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz",
+ "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==",
"dev": true,
"dependencies": {
"debug": "^3.2.6",
@@ -30347,7 +27442,7 @@
"faye-websocket": "^0.11.3",
"inherits": "^2.0.4",
"json3": "^3.3.3",
- "url-parse": "^1.4.7"
+ "url-parse": "^1.5.1"
}
},
"node_modules/sockjs-client/node_modules/debug": {
@@ -30518,6 +27613,35 @@
"node": ">= 6"
}
},
+ "node_modules/spdy-transport/node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/spdy-transport/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -30582,9 +27706,9 @@
}
},
"node_modules/ssri": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
"dev": true,
"dependencies": {
"figgy-pudding": "^3.5.1"
@@ -30606,9 +27730,9 @@
}
},
"node_modules/stack-utils": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz",
- "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
+ "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
"dev": true,
"dependencies": {
"escape-string-regexp": "^2.0.0"
@@ -30677,6 +27801,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/static-extend/node_modules/is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -30689,6 +27825,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/static-extend/node_modules/is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -30703,7 +27851,7 @@
"node": ">=0.10.0"
}
},
- "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": {
+ "node_modules/static-extend/node_modules/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==",
@@ -30771,6 +27919,20 @@
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz",
"integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw=="
},
+ "node_modules/static-module/node_modules/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==",
+ "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"
+ }
+ },
"node_modules/static-module/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -30780,6 +27942,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/static-module/node_modules/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==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/static-module/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -30823,6 +27993,30 @@
"readable-stream": "^2.0.2"
}
},
+ "node_modules/stream-browserify/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/stream-browserify/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/stream-each": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
@@ -30846,6 +28040,30 @@
"xtend": "^4.0.0"
}
},
+ "node_modules/stream-http/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/stream-http/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/stream-shift": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
@@ -30862,12 +28080,9 @@
}
},
"node_modules/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==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
},
"node_modules/string-length": {
"version": "2.0.0",
@@ -30882,6 +28097,27 @@
"node": ">=4"
}
},
+ "node_modules/string-length/node_modules/ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/string-length/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/string-width": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
@@ -31016,24 +28252,24 @@
}
},
"node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"dependencies": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "^2.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
"node_modules/strip-ansi/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
"node_modules/strip-bom": {
@@ -31089,13 +28325,14 @@
}
},
"node_modules/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=",
- "dev": true,
- "peer": true,
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
+ "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
+ "bin": {
+ "strip-json-comments": "cli.js"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=0.8.0"
}
},
"node_modules/style-loader": {
@@ -31111,37 +28348,6 @@
"node": ">= 0.12.0"
}
},
- "node_modules/style-loader/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/style-loader/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/style-loader/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/style-loader/node_modules/schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -31170,24 +28376,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/stylehacks/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/stylehacks/node_modules/postcss-selector-parser": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
@@ -31202,27 +28390,6 @@
"node": ">=8"
}
},
- "node_modules/stylehacks/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stylehacks/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/success-symbol": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz",
@@ -31241,45 +28408,6 @@
"postcss": "^7.0.2"
}
},
- "node_modules/sugarss/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/sugarss/node_modules/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sugarss/node_modules/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,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -31402,42 +28530,59 @@
"integrity": "sha512-KHDsGQ4UcP+wSMaqH7wjH4DHxeHKRlmEO5jlSVCS+0x9xA4ZhdKYg/ameGF7RXaFDUcsti6Zj5s5W1Z4/YsbHA=="
},
"node_modules/table": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
- "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
"dev": true,
- "peer": true,
"dependencies": {
- "ajv": "^5.2.3",
- "ajv-keywords": "^2.1.0",
- "chalk": "^2.1.0",
- "lodash": "^4.17.4",
- "slice-ansi": "1.0.0",
- "string-width": "^2.1.1"
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
+ "node_modules/table/node_modules/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
+ },
"node_modules/table/node_modules/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,
- "peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/table/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "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,
- "peer": true,
"dependencies": {
+ "emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "strip-ansi": "^5.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
+ }
+ },
+ "node_modules/table/node_modules/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,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/tailwindcss": {
@@ -31512,9 +28657,9 @@
}
},
"node_modules/tailwindcss/node_modules/chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -31526,22 +28671,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/tailwindcss/node_modules/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==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/tailwindcss/node_modules/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=="
- },
"node_modules/tailwindcss/node_modules/fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
@@ -31555,6 +28684,14 @@
"node": ">=6 <7 || >=8"
}
},
+ "node_modules/tailwindcss/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/tailwindcss/node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@@ -31563,87 +28700,11 @@
"graceful-fs": "^4.1.6"
}
},
- "node_modules/tailwindcss/node_modules/postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
"node_modules/tailwindcss/node_modules/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=="
},
- "node_modules/tailwindcss/node_modules/postcss/node_modules/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==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/tailwindcss/node_modules/postcss/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "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"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/tailwindcss/node_modules/postcss/node_modules/chalk/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/tailwindcss/node_modules/postcss/node_modules/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==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/tailwindcss/node_modules/postcss/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "node_modules/tailwindcss/node_modules/postcss/node_modules/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==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/tailwindcss/node_modules/reduce-css-calc": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz",
@@ -31658,14 +28719,6 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
},
- "node_modules/tailwindcss/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/tailwindcss/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -31677,14 +28730,6 @@
"node": ">=8"
}
},
- "node_modules/tailwindcss/node_modules/supports-color/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/tailwindcss/node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -31747,18 +28792,18 @@
"dev": true
},
"node_modules/telejson": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.0.tgz",
- "integrity": "sha512-Yy0N2OV0mosmr1SCZEm3Ezhu/oi5Dbao5RqauZu4+VI5I/XtVBHXajRk0txuqbFYtKdzzWGDZFGSif9ovVLjEA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.1.tgz",
+ "integrity": "sha512-aU7x+nwodmODJPXhU9sC/REOcX/dx1tNbyeOFV1PCTh6e9Mj+bnyfQ7sr13zfJYya9BtpGwnUNn9Fd76Ybj2eg==",
"dev": true,
"dependencies": {
"@types/is-function": "^1.0.0",
"global": "^4.4.0",
"is-function": "^1.0.2",
- "is-regex": "^1.1.1",
+ "is-regex": "^1.1.2",
"is-symbol": "^1.0.3",
"isobject": "^4.0.0",
- "lodash": "^4.17.20",
+ "lodash": "^4.17.21",
"memoizerific": "^1.11.3"
}
},
@@ -31910,6 +28955,19 @@
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
+ "node_modules/terser-webpack-plugin/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/terser-webpack-plugin/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -31933,6 +28991,18 @@
"node": ">= 10.13.0"
}
},
+ "node_modules/terser-webpack-plugin/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/terser-webpack-plugin/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -31987,6 +29057,33 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/terser-webpack-plugin/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/p-locate/node_modules/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,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/terser-webpack-plugin/node_modules/p-map": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
@@ -32002,6 +29099,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/terser-webpack-plugin/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/terser-webpack-plugin/node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -32151,6 +29260,15 @@
"node": ">=4"
}
},
+ "node_modules/test-exclude/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/test-exclude/node_modules/path-type": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
@@ -32209,12 +29327,12 @@
"dev": true
},
"node_modules/throttle-debounce": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
- "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
+ "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
"node_modules/through": {
@@ -32233,6 +29351,49 @@
"readable-stream": "2 || 3"
}
},
+ "node_modules/through2/node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/through2/node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/through2/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@@ -32283,15 +29444,6 @@
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
},
- "node_modules/tinycolor2": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz",
- "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -32337,6 +29489,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/to-regex": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
@@ -32478,16 +29642,6 @@
"punycode": "^2.1.0"
}
},
- "node_modules/trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
@@ -32501,9 +29655,9 @@
"dev": true
},
"node_modules/ts-dedent": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.0.tgz",
- "integrity": "sha512-HbmrG+lCgk5W8LQTALxBxQRBDeAhQKRzdqVhHLUkVd5nYT+b6zDzbRMjiA8wqrWDa33X09WdnW4zEsdwQArTaw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.1.tgz",
+ "integrity": "sha512-riHuwnzAUCfdIeTBNUq7+Yj+ANnrMXo/7+Z74dIdudS7ys2k8aSGMzpJRMFDF7CLwUTbtvi1ZZff/Wl+XxmqIA==",
"dev": true,
"engines": {
"node": ">=6.10"
@@ -32644,24 +29798,10 @@
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
- "node_modules/typescript": {
- "version": "3.9.9",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
- "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==",
- "dev": true,
- "peer": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
"node_modules/ua-parser-js": {
- "version": "0.7.25",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.25.tgz",
- "integrity": "sha512-8NFExdfI24Ny8R3Vc6+uUytP/I7dpqk3JERlvxPWlrtx5YboqCgxAXYKPAifbPLV2zKbgmmPL53ufW7mUC/VOQ==",
+ "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==",
"funding": [
{
"type": "opencollective",
@@ -32708,21 +29848,24 @@
}
},
"node_modules/unbox-primitive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz",
- "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1",
- "has-bigints": "^1.0.0",
- "has-symbols": "^1.0.0",
- "which-boxed-primitive": "^1.0.1"
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/underscore": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz",
- "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
+ "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
"dev": true
},
"node_modules/unfetch": {
@@ -32804,7 +29947,8 @@
"node_modules/uniq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
},
"node_modules/uniqs": {
"version": "2.0.0",
@@ -32971,37 +30115,6 @@
}
}
},
- "node_modules/url-loader/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/url-loader/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/url-loader/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/url-loader/node_modules/loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -33422,18 +30535,6 @@
"node": ">= 6.14.4"
}
},
- "node_modules/webpack-bundle-analyzer/node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
@@ -33449,16 +30550,6 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "node_modules/webpack-bundle-analyzer/node_modules/ejs": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
- "dev": true,
- "hasInstallScript": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/webpack-bundle-analyzer/node_modules/filesize": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
@@ -33593,6 +30684,24 @@
"node": ">=6"
}
},
+ "node_modules/webpack-cli/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/webpack-cli/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/webpack-cli/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -33602,6 +30711,27 @@
"semver": "bin/semver"
}
},
+ "node_modules/webpack-cli/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-cli/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/webpack-cli/node_modules/string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -33640,6 +30770,18 @@
"node": ">=6"
}
},
+ "node_modules/webpack-cli/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/webpack-cli/node_modules/wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
@@ -33768,40 +30910,6 @@
}
}
},
- "node_modules/webpack-dev-server/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/webpack-dev-server/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/webpack-dev-server/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/webpack-dev-server/node_modules/chokidar": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
@@ -33836,15 +30944,6 @@
"wrap-ansi": "^5.1.0"
}
},
- "node_modules/webpack-dev-server/node_modules/cliui/node_modules/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,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -33912,12 +31011,6 @@
"node": ">=4"
}
},
- "node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/webpack-dev-server/node_modules/locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -33943,6 +31036,15 @@
"node": ">=6"
}
},
+ "node_modules/webpack-dev-server/node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
@@ -33977,15 +31079,6 @@
"node": ">=6"
}
},
- "node_modules/webpack-dev-server/node_modules/string-width/node_modules/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,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -33998,18 +31091,6 @@
"node": ">=6"
}
},
- "node_modules/webpack-dev-server/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/webpack-dev-server/node_modules/supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -34046,15 +31127,6 @@
"node": ">=6"
}
},
- "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/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,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -34128,27 +31200,6 @@
"strip-ansi": "^3.0.0"
}
},
- "node_modules/webpack-hot-middleware/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack-hot-middleware/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/webpack-log": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
@@ -34270,31 +31321,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/webpack/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/webpack/node_modules/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,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
"node_modules/webpack/node_modules/define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -34355,21 +31381,6 @@
"node": ">=4"
}
},
- "node_modules/webpack/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/webpack/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/webpack/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -34496,15 +31507,18 @@
}
},
"node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
- "which": "bin/which"
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
"node_modules/which-boxed-primitive": {
@@ -34538,6 +31552,15 @@
"string-width": "^1.0.2 || 2"
}
},
+ "node_modules/wide-align/node_modules/ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/wide-align/node_modules/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",
@@ -34560,6 +31583,18 @@
"node": ">=4"
}
},
+ "node_modules/wide-align/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/widest-line": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
@@ -34621,11 +31656,29 @@
"node": ">= 6.4.0"
}
},
- "node_modules/winston/node_modules/async": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
- "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
- "dev": true
+ "node_modules/winston-transport/node_modules/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,
+ "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"
+ }
+ },
+ "node_modules/winston-transport/node_modules/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
},
"node_modules/winston/node_modules/is-stream": {
"version": "2.0.0",
@@ -34650,6 +31703,35 @@
"node": ">= 6"
}
},
+ "node_modules/winston/node_modules/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,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/winston/node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -34928,24 +32010,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/wrap-ansi/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/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==",
- "dev": true
- },
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -34964,16 +32028,15 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"node_modules/write": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
- "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
"dev": true,
- "peer": true,
"dependencies": {
"mkdirp": "^0.5.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/write-file-atomic": {
@@ -35059,9 +32122,9 @@
}
},
"node_modules/y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"node_modules/yallist": {
@@ -35107,9 +32170,9 @@
}
},
"node_modules/yargs/node_modules/y18n": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
- "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
"engines": {
"node": ">=10"
@@ -35135,9 +32198,9 @@
},
"dependencies": {
"@babel/cli": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.10.tgz",
- "integrity": "sha512-lYSBC7B4B9hJ7sv0Ojx1BrGhuzCoOIYfLjd+Xpd4rOzdS+a47yi8voV8vFkfjlZR1N5qZO7ixOCbobUdT304PQ==",
+ "version": "7.13.16",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.16.tgz",
+ "integrity": "sha512-cL9tllhqvsQ6r1+d9Invf7nNXg/3BlfL1vvvL/AdH9fZ2l5j0CeBcoq6UjsqHpvyN1v5nXSZgqJZoGeK+ZOAbw==",
"dev": true,
"requires": {
"@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents",
@@ -35146,7 +32209,6 @@
"convert-source-map": "^1.1.0",
"fs-readdir-recursive": "^1.1.0",
"glob": "^7.0.0",
- "lodash": "^4.17.19",
"make-dir": "^2.1.0",
"slash": "^2.0.0",
"source-map": "^0.5.0"
@@ -35170,31 +32232,30 @@
}
},
"@babel/compat-data": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz",
- "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==",
+ "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==",
"dev": true
},
"@babel/core": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz",
- "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz",
+ "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
- "@babel/helper-compilation-targets": "^7.13.10",
- "@babel/helper-module-transforms": "^7.13.0",
- "@babel/helpers": "^7.13.10",
- "@babel/parser": "^7.13.10",
+ "@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.13.0",
- "@babel/types": "^7.13.0",
+ "@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",
- "lodash": "^4.17.19",
"semver": "^6.3.0",
"source-map": "^0.5.0"
},
@@ -35208,12 +32269,12 @@
}
},
"@babel/generator": {
- "version": "7.13.9",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz",
- "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz",
+ "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.13.0",
+ "@babel/types": "^7.14.1",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
},
@@ -35246,27 +32307,28 @@
}
},
"@babel/helper-compilation-targets": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz",
- "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==",
+ "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==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.13.8",
+ "@babel/compat-data": "^7.13.15",
"@babel/helper-validator-option": "^7.12.17",
"browserslist": "^4.14.5",
"semver": "^6.3.0"
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.13.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz",
- "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz",
+ "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==",
"dev": true,
"requires": {
+ "@babel/helper-annotate-as-pure": "^7.12.13",
"@babel/helper-function-name": "^7.12.13",
- "@babel/helper-member-expression-to-functions": "^7.13.0",
+ "@babel/helper-member-expression-to-functions": "^7.13.12",
"@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/helper-replace-supers": "^7.13.0",
+ "@babel/helper-replace-supers": "^7.13.12",
"@babel/helper-split-export-declaration": "^7.12.13"
}
},
@@ -35281,9 +32343,9 @@
}
},
"@babel/helper-define-polyfill-provider": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
- "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz",
+ "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==",
"dev": true,
"requires": {
"@babel/helper-compilation-targets": "^7.13.0",
@@ -35326,13 +32388,13 @@
}
},
"@babel/helper-hoist-variables": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz",
- "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==",
+ "version": "7.13.16",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz",
+ "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==",
"dev": true,
"requires": {
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "@babel/traverse": "^7.13.15",
+ "@babel/types": "^7.13.16"
}
},
"@babel/helper-member-expression-to-functions": {
@@ -35354,19 +32416,19 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz",
- "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz",
+ "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==",
"dev": true,
"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.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.12"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"@babel/helper-optimise-call-expression": {
@@ -35435,9 +32497,9 @@
}
},
"@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==",
+ "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==",
"dev": true
},
"@babel/helper-validator-option": {
@@ -35459,31 +32521,31 @@
}
},
"@babel/helpers": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz",
- "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
+ "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==",
"dev": true,
"requires": {
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"@babel/highlight": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
- "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
+ "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz",
- "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz",
+ "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==",
"dev": true
},
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
@@ -35498,9 +32560,9 @@
}
},
"@babel/plugin-proposal-async-generator-functions": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz",
- "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==",
+ "version": "7.13.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz",
+ "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -35518,13 +32580,23 @@
"@babel/helper-plugin-utils": "^7.13.0"
}
},
- "@babel/plugin-proposal-decorators": {
- "version": "7.13.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz",
- "integrity": "sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==",
+ "@babel/plugin-proposal-class-static-block": {
+ "version": "7.13.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz",
+ "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.13.0",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/plugin-syntax-class-static-block": "^7.12.13"
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.13.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.15.tgz",
+ "integrity": "sha512-ibAMAqUm97yzi+LPgdr5Nqb9CMkeieGHvwPg1ywSGjZrZHQEGqE01HmOio8kxRpA/+VtOHouIVy2FMpBbtltjA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.13.11",
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-decorators": "^7.12.13"
}
@@ -35643,6 +32715,18 @@
"@babel/helper-plugin-utils": "^7.13.0"
}
},
+ "@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz",
+ "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.12.13",
+ "@babel/helper-create-class-features-plugin": "^7.14.0",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.0"
+ }
+ },
"@babel/plugin-proposal-unicode-property-regex": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz",
@@ -35680,6 +32764,15 @@
"@babel/helper-plugin-utils": "^7.12.13"
}
},
+ "@babel/plugin-syntax-class-static-block": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz",
+ "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ }
+ },
"@babel/plugin-syntax-decorators": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz",
@@ -35797,6 +32890,15 @@
"@babel/helper-plugin-utils": "^7.8.0"
}
},
+ "@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz",
+ "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.13.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",
@@ -35845,12 +32947,12 @@
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz",
- "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz",
+ "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "@babel/helper-plugin-utils": "^7.13.0"
}
},
"@babel/plugin-transform-classes": {
@@ -35878,9 +32980,9 @@
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz",
- "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==",
+ "version": "7.13.17",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz",
+ "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0"
@@ -35963,25 +33065,25 @@
}
},
"@babel/plugin-transform-modules-amd": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz",
- "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz",
+ "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-module-transforms": "^7.14.0",
"@babel/helper-plugin-utils": "^7.13.0",
"babel-plugin-dynamic-import-node": "^2.3.3"
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz",
- "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz",
+ "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-module-transforms": "^7.14.0",
"@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-simple-access": "^7.12.13",
+ "@babel/helper-simple-access": "^7.13.12",
"babel-plugin-dynamic-import-node": "^2.3.3"
}
},
@@ -35999,12 +33101,12 @@
}
},
"@babel/plugin-transform-modules-umd": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz",
- "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz",
+ "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.13.0",
+ "@babel/helper-module-transforms": "^7.14.0",
"@babel/helper-plugin-utils": "^7.13.0"
}
},
@@ -36055,9 +33157,9 @@
}
},
"@babel/plugin-transform-react-constant-elements": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz",
- "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==",
+ "version": "7.13.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.13.tgz",
+ "integrity": "sha512-SNJU53VM/SjQL0bZhyU+f4kJQz7bQQajnrZRSaU21hruG/NWY41AEM9AWXeXX90pYr/C2yAmTgI6yW3LlLrAUQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0"
@@ -36123,9 +33225,9 @@
}
},
"@babel/plugin-transform-regenerator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz",
- "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==",
+ "version": "7.13.15",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz",
+ "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==",
"dev": true,
"requires": {
"regenerator-transform": "^0.14.2"
@@ -36237,18 +33339,19 @@
}
},
"@babel/preset-env": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz",
- "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz",
+ "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.13.12",
- "@babel/helper-compilation-targets": "^7.13.10",
+ "@babel/compat-data": "^7.14.0",
+ "@babel/helper-compilation-targets": "^7.13.16",
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/helper-validator-option": "^7.12.17",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12",
- "@babel/plugin-proposal-async-generator-functions": "^7.13.8",
+ "@babel/plugin-proposal-async-generator-functions": "^7.13.15",
"@babel/plugin-proposal-class-properties": "^7.13.0",
+ "@babel/plugin-proposal-class-static-block": "^7.13.11",
"@babel/plugin-proposal-dynamic-import": "^7.13.8",
"@babel/plugin-proposal-export-namespace-from": "^7.12.13",
"@babel/plugin-proposal-json-strings": "^7.13.8",
@@ -36259,9 +33362,11 @@
"@babel/plugin-proposal-optional-catch-binding": "^7.13.8",
"@babel/plugin-proposal-optional-chaining": "^7.13.12",
"@babel/plugin-proposal-private-methods": "^7.13.0",
+ "@babel/plugin-proposal-private-property-in-object": "^7.14.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.12.13",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
"@babel/plugin-syntax-json-strings": "^7.8.3",
@@ -36271,14 +33376,15 @@
"@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-private-property-in-object": "^7.14.0",
"@babel/plugin-syntax-top-level-await": "^7.12.13",
"@babel/plugin-transform-arrow-functions": "^7.13.0",
"@babel/plugin-transform-async-to-generator": "^7.13.0",
"@babel/plugin-transform-block-scoped-functions": "^7.12.13",
- "@babel/plugin-transform-block-scoping": "^7.12.13",
+ "@babel/plugin-transform-block-scoping": "^7.14.1",
"@babel/plugin-transform-classes": "^7.13.0",
"@babel/plugin-transform-computed-properties": "^7.13.0",
- "@babel/plugin-transform-destructuring": "^7.13.0",
+ "@babel/plugin-transform-destructuring": "^7.13.17",
"@babel/plugin-transform-dotall-regex": "^7.12.13",
"@babel/plugin-transform-duplicate-keys": "^7.12.13",
"@babel/plugin-transform-exponentiation-operator": "^7.12.13",
@@ -36286,16 +33392,16 @@
"@babel/plugin-transform-function-name": "^7.12.13",
"@babel/plugin-transform-literals": "^7.12.13",
"@babel/plugin-transform-member-expression-literals": "^7.12.13",
- "@babel/plugin-transform-modules-amd": "^7.13.0",
- "@babel/plugin-transform-modules-commonjs": "^7.13.8",
+ "@babel/plugin-transform-modules-amd": "^7.14.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.14.0",
"@babel/plugin-transform-modules-systemjs": "^7.13.8",
- "@babel/plugin-transform-modules-umd": "^7.13.0",
+ "@babel/plugin-transform-modules-umd": "^7.14.0",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
"@babel/plugin-transform-new-target": "^7.12.13",
"@babel/plugin-transform-object-super": "^7.12.13",
"@babel/plugin-transform-parameters": "^7.13.0",
"@babel/plugin-transform-property-literals": "^7.12.13",
- "@babel/plugin-transform-regenerator": "^7.12.13",
+ "@babel/plugin-transform-regenerator": "^7.13.15",
"@babel/plugin-transform-reserved-words": "^7.12.13",
"@babel/plugin-transform-shorthand-properties": "^7.12.13",
"@babel/plugin-transform-spread": "^7.13.0",
@@ -36305,22 +33411,23 @@
"@babel/plugin-transform-unicode-escapes": "^7.12.13",
"@babel/plugin-transform-unicode-regex": "^7.12.13",
"@babel/preset-modules": "^0.1.4",
- "@babel/types": "^7.13.12",
- "babel-plugin-polyfill-corejs2": "^0.1.4",
- "babel-plugin-polyfill-corejs3": "^0.1.3",
- "babel-plugin-polyfill-regenerator": "^0.1.2",
+ "@babel/types": "^7.14.1",
+ "babel-plugin-polyfill-corejs2": "^0.2.0",
+ "babel-plugin-polyfill-corejs3": "^0.2.0",
+ "babel-plugin-polyfill-regenerator": "^0.2.0",
"core-js-compat": "^3.9.0",
"semver": "^6.3.0"
}
},
"@babel/preset-flow": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.12.13.tgz",
- "integrity": "sha512-gcEjiwcGHa3bo9idURBp5fmJPcyFPOszPQjztXrOjUE2wWVqc6fIVJPgWPIQksaQ5XZ2HWiRsf2s1fRGVjUtVw==",
+ "version": "7.13.13",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.13.13.tgz",
+ "integrity": "sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
- "@babel/plugin-transform-flow-strip-types": "^7.12.13"
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-validator-option": "^7.12.17",
+ "@babel/plugin-transform-flow-strip-types": "^7.13.0"
}
},
"@babel/preset-modules": {
@@ -36337,15 +33444,16 @@
}
},
"@babel/preset-react": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz",
- "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==",
+ "version": "7.13.13",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz",
+ "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-validator-option": "^7.12.17",
"@babel/plugin-transform-react-display-name": "^7.12.13",
- "@babel/plugin-transform-react-jsx": "^7.12.13",
- "@babel/plugin-transform-react-jsx-development": "^7.12.12",
+ "@babel/plugin-transform-react-jsx": "^7.13.12",
+ "@babel/plugin-transform-react-jsx-development": "^7.12.17",
"@babel/plugin-transform-react-pure-annotations": "^7.12.1"
}
},
@@ -36361,30 +33469,30 @@
}
},
"@babel/register": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.8.tgz",
- "integrity": "sha512-yCVtABcmvQjRsX2elcZFUV5Q5kDDpHdtXKKku22hNDma60lYuhKmtp1ykZ/okRCPLT2bR5S+cA1kvtBdAFlDTQ==",
+ "version": "7.13.16",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.16.tgz",
+ "integrity": "sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg==",
"dev": true,
"requires": {
+ "clone-deep": "^4.0.1",
"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": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz",
- "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
+ "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"@babel/runtime-corejs3": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz",
- "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz",
+ "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==",
"dev": true,
"requires": {
"core-js-pure": "^3.0.0",
@@ -36403,30 +33511,28 @@
}
},
"@babel/traverse": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz",
- "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==",
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz",
+ "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.0",
+ "@babel/generator": "^7.14.0",
"@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.13.0",
- "@babel/types": "^7.13.0",
+ "@babel/parser": "^7.14.0",
+ "@babel/types": "^7.14.0",
"debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.19"
+ "globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz",
- "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==",
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
+ "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
+ "@babel/helper-validator-identifier": "^7.14.0",
"to-fast-properties": "^2.0.0"
}
},
@@ -36668,13 +33774,6 @@
"warning": "^4.0.3"
}
},
- "@icons/material": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz",
- "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==",
- "dev": true,
- "requires": {}
- },
"@jest/console": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
@@ -36757,12 +33856,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -36950,12 +34043,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -37104,9 +34191,9 @@
}
},
"@popperjs/core": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
- "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz",
+ "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==",
"dev": true
},
"@reach/router": {
@@ -37188,157 +34275,67 @@
}
},
"@storybook/addons": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.1.21.tgz",
- "integrity": "sha512-xo5TGu9EZVCqgh3D1veVnfuGzyKDWWsvOMo18phVqRxj21G3/+hScVyfIYwNTv7Ys5/Ahp9JxJUMXL3V3ny+tw==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.2.9.tgz",
+ "integrity": "sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ==",
"dev": true,
"requires": {
- "@storybook/api": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/router": "6.1.21",
- "@storybook/theming": "6.1.21",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
+ "@storybook/api": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/router": "6.2.9",
+ "@storybook/theming": "6.2.9",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
"regenerator-runtime": "^0.13.7"
}
},
"@storybook/api": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.1.21.tgz",
- "integrity": "sha512-QjZk70VSXMw/wPPoWdMp5Bl9VmkfmGhIz8PALrFLLEZHjzptpfZE2qkGEEJHG0NAksFUv6NxGki2/632dzR7Ug==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.2.9.tgz",
+ "integrity": "sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ==",
"dev": true,
"requires": {
- "@reach/router": "^1.3.3",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
+ "@reach/router": "^1.3.4",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
"@storybook/csf": "0.0.1",
- "@storybook/router": "6.1.21",
+ "@storybook/router": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.1.21",
+ "@storybook/theming": "6.2.9",
"@types/reach__router": "^1.3.7",
- "core-js": "^3.0.1",
- "fast-deep-equal": "^3.1.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
"regenerator-runtime": "^0.13.7",
- "store2": "^2.7.1",
- "telejson": "^5.0.2",
+ "store2": "^2.12.0",
+ "telejson": "^5.1.0",
"ts-dedent": "^2.0.0",
"util-deprecate": "^1.0.2"
}
},
- "@storybook/channel-postmessage": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.1.21.tgz",
- "integrity": "sha512-SuI/ffqcPT02VNda32k8V0D4XpLm5bIy8CLIs0OAnQg+zt5KjGBpQBngk3q4EaAiOoAhbMWAQiUzRUXfrgkgXg==",
+ "@storybook/builder-webpack4": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.2.9.tgz",
+ "integrity": "sha512-swECic1huVdj+B+iRJIQ8ds59HuPVE4fmhI+j/nhw0CQCsgAEKqDlOQVYEimW6nZX8GO4WxNm6tiiRzxixejbw==",
"dev": true,
"requires": {
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
- "qs": "^6.6.0",
- "telejson": "^5.0.2"
- }
- },
- "@storybook/channels": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.1.21.tgz",
- "integrity": "sha512-7WoizMjyHqCyvcWncLexSg9FLPIErWAZL4NvluEthwsHSO2sDybn9mh1pzsFHdYMuTP6ml06Zt9ayWMtIveHDg==",
- "dev": true,
- "requires": {
- "core-js": "^3.0.1",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
- }
- },
- "@storybook/client-api": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.1.21.tgz",
- "integrity": "sha512-uLFXQ5z1LLWYnw1w+YUJPzIPRVlwCCvM2Si37aHDZn1F3fnbMg+huEhEqIQ1TTTw3wiJoTeGuShYvqyaiNwq/w==",
- "dev": true,
- "requires": {
- "@storybook/addons": "6.1.21",
- "@storybook/channel-postmessage": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/csf": "0.0.1",
- "@types/qs": "^6.9.0",
- "@types/webpack-env": "^1.15.3",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
- "memoizerific": "^1.11.3",
- "qs": "^6.6.0",
- "regenerator-runtime": "^0.13.7",
- "stable": "^0.1.8",
- "store2": "^2.7.1",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
- }
- },
- "@storybook/client-logger": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.1.21.tgz",
- "integrity": "sha512-QJV+gnVM2fQ4M7lSkRLCXkOw/RU+aEtUefo9TAnXxPHK3UGG+DyvLmha6fHGaz9GAcFxyWtgqCyVOhMe03Q35g==",
- "dev": true,
- "requires": {
- "core-js": "^3.0.1",
- "global": "^4.3.2"
- }
- },
- "@storybook/components": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.1.21.tgz",
- "integrity": "sha512-2NjkyS1yeYXlRY7azt88woqd6eqJA00oloIxgMAFLVpRmvFxoHalY61wNrvxl2QSu9cNofp984AbGc8gPbizBA==",
- "dev": true,
- "requires": {
- "@popperjs/core": "^2.5.4",
- "@storybook/client-logger": "6.1.21",
- "@storybook/csf": "0.0.1",
- "@storybook/theming": "6.1.21",
- "@types/overlayscrollbars": "^1.9.0",
- "@types/react-color": "^3.0.1",
- "@types/react-syntax-highlighter": "11.0.4",
- "core-js": "^3.0.1",
- "fast-deep-equal": "^3.1.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
- "markdown-to-jsx": "^6.11.4",
- "memoizerific": "^1.11.3",
- "overlayscrollbars": "^1.10.2",
- "polished": "^3.4.4",
- "react-color": "^2.17.0",
- "react-popper-tooltip": "^3.1.1",
- "react-syntax-highlighter": "^13.5.0",
- "react-textarea-autosize": "^8.1.1",
- "regenerator-runtime": "^0.13.7",
- "ts-dedent": "^2.0.0"
- }
- },
- "@storybook/core": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.1.21.tgz",
- "integrity": "sha512-ITqSid3VVL5/fkx7Wwu7QfD2Y5xjl3V6p7yUpLSzP8GpBnCHKDvJ4pFJUdJlGQ0mnGz6ACa0qVnSc+V0hiy1sA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.12.3",
+ "@babel/core": "^7.12.10",
"@babel/plugin-proposal-class-properties": "^7.12.1",
- "@babel/plugin-proposal-decorators": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
"@babel/plugin-proposal-export-default-from": "^7.12.1",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
- "@babel/plugin-proposal-optional-chaining": "^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-arrow-functions": "^7.12.1",
- "@babel/plugin-transform-block-scoping": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
"@babel/plugin-transform-classes": "^7.12.1",
"@babel/plugin-transform-destructuring": "^7.12.1",
"@babel/plugin-transform-for-of": "^7.12.1",
@@ -37346,98 +34343,74 @@
"@babel/plugin-transform-shorthand-properties": "^7.12.1",
"@babel/plugin-transform-spread": "^7.12.1",
"@babel/plugin-transform-template-literals": "^7.12.1",
- "@babel/preset-env": "^7.12.1",
- "@babel/preset-react": "^7.12.1",
- "@babel/preset-typescript": "^7.12.1",
- "@babel/register": "^7.12.1",
- "@storybook/addons": "6.1.21",
- "@storybook/api": "6.1.21",
- "@storybook/channel-postmessage": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-api": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/components": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/csf": "0.0.1",
- "@storybook/node-logger": "6.1.21",
- "@storybook/router": "6.1.21",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@storybook/addons": "6.2.9",
+ "@storybook/api": "6.2.9",
+ "@storybook/channel-postmessage": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-api": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/components": "6.2.9",
+ "@storybook/core-common": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/node-logger": "6.2.9",
+ "@storybook/router": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.1.21",
- "@storybook/ui": "6.1.21",
- "@types/glob-base": "^0.3.0",
- "@types/micromatch": "^4.0.1",
- "@types/node-fetch": "^2.5.4",
- "airbnb-js-shims": "^2.2.1",
- "ansi-to-html": "^0.6.11",
- "autoprefixer": "^9.7.2",
- "babel-loader": "^8.0.6",
- "babel-plugin-emotion": "^10.0.20",
+ "@storybook/theming": "6.2.9",
+ "@storybook/ui": "6.2.9",
+ "@types/node": "^14.0.10",
+ "@types/webpack": "^4.41.26",
+ "autoprefixer": "^9.8.6",
+ "babel-loader": "^8.2.2",
"babel-plugin-macros": "^2.8.0",
- "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5",
- "better-opn": "^2.0.0",
- "boxen": "^4.1.0",
- "case-sensitive-paths-webpack-plugin": "^2.2.0",
- "chalk": "^4.0.0",
- "cli-table3": "0.6.0",
- "commander": "^5.0.0",
- "core-js": "^3.0.1",
- "cpy": "^8.1.1",
- "css-loader": "^3.5.3",
- "detect-port": "^1.3.0",
- "dotenv-webpack": "^1.7.0",
- "ejs": "^3.1.2",
- "express": "^4.17.0",
- "file-loader": "^6.0.0",
- "file-system-cache": "^1.0.5",
- "find-up": "^4.1.0",
- "fork-ts-checker-webpack-plugin": "^4.1.4",
- "fs-extra": "^9.0.0",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "core-js": "^3.8.2",
+ "css-loader": "^3.6.0",
+ "dotenv-webpack": "^1.8.0",
+ "file-loader": "^6.2.0",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^4.1.6",
+ "fs-extra": "^9.0.1",
"glob": "^7.1.6",
- "glob-base": "^0.3.0",
"glob-promise": "^3.4.0",
- "global": "^4.3.2",
- "html-webpack-plugin": "^4.2.1",
- "inquirer": "^7.0.0",
- "interpret": "^2.0.0",
- "ip": "^1.1.5",
- "json5": "^2.1.1",
- "lazy-universal-dotenv": "^3.0.1",
- "micromatch": "^4.0.2",
- "node-fetch": "^2.6.0",
- "pkg-dir": "^4.2.0",
+ "global": "^4.4.0",
+ "html-webpack-plugin": "^4.0.0",
"pnp-webpack-plugin": "1.6.4",
- "postcss-flexbugs-fixes": "^4.1.0",
- "postcss-loader": "^3.0.0",
- "pretty-hrtime": "^1.0.3",
- "qs": "^6.6.0",
- "raw-loader": "^4.0.1",
+ "postcss": "^7.0.35",
+ "postcss-flexbugs-fixes": "^4.2.1",
+ "postcss-loader": "^4.2.0",
+ "raw-loader": "^4.0.2",
"react-dev-utils": "^11.0.3",
- "regenerator-runtime": "^0.13.7",
- "resolve-from": "^5.0.0",
- "serve-favicon": "^2.5.0",
- "shelljs": "^0.8.4",
"stable": "^0.1.8",
- "style-loader": "^1.2.1",
- "telejson": "^5.0.2",
- "terser-webpack-plugin": "^3.0.0",
+ "style-loader": "^1.3.0",
+ "terser-webpack-plugin": "^3.1.0",
"ts-dedent": "^2.0.0",
- "unfetch": "^4.1.0",
- "url-loader": "^4.0.0",
+ "url-loader": "^4.1.1",
"util-deprecate": "^1.0.2",
- "webpack": "^4.44.2",
- "webpack-dev-middleware": "^3.7.0",
+ "webpack": "4",
+ "webpack-dev-middleware": "^3.7.3",
"webpack-filter-warnings-plugin": "^1.2.1",
"webpack-hot-middleware": "^2.25.0",
"webpack-virtual-modules": "^0.2.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==",
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
+ "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
"dev": true,
"requires": {
- "color-convert": "^2.0.1"
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/traverse": "^7.13.0",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
}
},
"autoprefixer": {
@@ -37455,36 +34428,84 @@
"postcss-value-parser": "^4.1.0"
}
},
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
"dev": true,
"requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/runtime": "^7.7.2",
+ "cosmiconfig": "^6.0.0",
+ "resolve": "^1.12.0"
+ },
+ "dependencies": {
+ "cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ }
}
},
- "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==",
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
+ "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
"dev": true,
"requires": {
- "color-name": "~1.1.4"
+ "@babel/helper-define-polyfill-provider": "^0.1.5",
+ "core-js-compat": "^3.8.1"
}
},
- "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==",
- "dev": true
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ }
},
- "commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dev": true
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "fork-ts-checker-webpack-plugin": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+ "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "chalk": "^2.4.1",
+ "micromatch": "^3.1.10",
+ "minimatch": "^3.0.4",
+ "semver": "^5.6.0",
+ "tapable": "^1.0.0",
+ "worker-rpc": "^0.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
},
"html-webpack-plugin": {
"version": "4.5.2",
@@ -37503,70 +34524,87 @@
"util.promisify": "1.0.0"
}
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "postcss-loader": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz",
+ "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^7.0.0",
+ "klona": "^2.0.4",
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0",
+ "semver": "^7.3.4"
},
"dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "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": {
- "color-convert": "^1.9.0"
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
}
},
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "schema-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
+ "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "@types/json-schema": "^7.0.6",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
}
},
- "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==",
+ "semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"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=",
- "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"
+ "lru-cache": "^6.0.0"
}
}
}
@@ -37577,11 +34615,400 @@
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
"dev": true
},
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "style-loader": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz",
+ "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^2.7.0"
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
+ }
+ }
+ },
+ "@storybook/channel-postmessage": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.2.9.tgz",
+ "integrity": "sha512-OqV+gLeeCHR0KExsIz0B7gD17Cjd9D+I75qnBsLWM9inWO5kc/WZ5svw8Bvjlcm6snWpvxUaT8L+svuqcPSmww==",
+ "dev": true,
+ "requires": {
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "qs": "^6.10.0",
+ "telejson": "^5.1.0"
+ }
+ },
+ "@storybook/channels": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.2.9.tgz",
+ "integrity": "sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-api": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.2.9.tgz",
+ "integrity": "sha512-aLvEUVkbvv6Qo/2mF4rFCecdqi2CGOUDdsV1a6EFIVS/9gXFdpirsOwKHo9qNjacGdWPlBYGCUcbrw+DvNaSFA==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.2.9",
+ "@storybook/channel-postmessage": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/csf": "0.0.1",
+ "@types/qs": "^6.9.5",
+ "@types/webpack-env": "^1.16.0",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
+ "memoizerific": "^1.11.3",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "stable": "^0.1.8",
+ "store2": "^2.12.0",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/client-logger": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.2.9.tgz",
+ "integrity": "sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2",
+ "global": "^4.4.0"
+ }
+ },
+ "@storybook/components": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.2.9.tgz",
+ "integrity": "sha512-hnV1MI2aB2g1sJ7NJphpxi7TwrMZQ/tpCJeHnkjmzyC6ez1MXqcBXGrEEdSXzRfAxjQTOEpu6H1mnns0xMP0Ag==",
+ "dev": true,
+ "requires": {
+ "@popperjs/core": "^2.6.0",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/csf": "0.0.1",
+ "@storybook/theming": "6.2.9",
+ "@types/color-convert": "^2.0.0",
+ "@types/overlayscrollbars": "^1.12.0",
+ "@types/react-syntax-highlighter": "11.0.5",
+ "color-convert": "^2.0.1",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
+ "markdown-to-jsx": "^7.1.0",
+ "memoizerific": "^1.11.3",
+ "overlayscrollbars": "^1.13.1",
+ "polished": "^4.0.5",
+ "prop-types": "^15.7.2",
+ "react-colorful": "^5.0.1",
+ "react-popper-tooltip": "^3.1.1",
+ "react-syntax-highlighter": "^13.5.3",
+ "react-textarea-autosize": "^8.3.0",
+ "regenerator-runtime": "^0.13.7",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/core": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.2.9.tgz",
+ "integrity": "sha512-pzbyjWvj0t8m0kR2pC9GQne4sZn7Y/zfcbm6/31CL+yhzOQjfJEj3n4ZFUlxikXqQJPg1aWfypfyaeaLL0QyuA==",
+ "dev": true,
+ "requires": {
+ "@storybook/core-client": "6.2.9",
+ "@storybook/core-server": "6.2.9"
+ }
+ },
+ "@storybook/core-client": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.2.9.tgz",
+ "integrity": "sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA==",
+ "dev": true,
+ "requires": {
+ "@storybook/addons": "6.2.9",
+ "@storybook/channel-postmessage": "6.2.9",
+ "@storybook/client-api": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/csf": "0.0.1",
+ "@storybook/ui": "6.2.9",
+ "ansi-to-html": "^0.6.11",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
+ "qs": "^6.10.0",
+ "regenerator-runtime": "^0.13.7",
+ "ts-dedent": "^2.0.0",
+ "unfetch": "^4.2.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "@storybook/core-common": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.2.9.tgz",
+ "integrity": "sha512-ve0Qb4EMit8jGibfZBprmaU2i4LtpB4vSMIzD9nB1YeBmw2cGhHubtmayZ0TwcV3fPQhtYH9wwRWuWyzzHyQyw==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/plugin-proposal-decorators": "^7.12.12",
+ "@babel/plugin-proposal-export-default-from": "^7.12.1",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+ "@babel/plugin-proposal-object-rest-spread": "^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-arrow-functions": "^7.12.1",
+ "@babel/plugin-transform-block-scoping": "^7.12.12",
+ "@babel/plugin-transform-classes": "^7.12.1",
+ "@babel/plugin-transform-destructuring": "^7.12.1",
+ "@babel/plugin-transform-for-of": "^7.12.1",
+ "@babel/plugin-transform-parameters": "^7.12.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+ "@babel/plugin-transform-spread": "^7.12.1",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-react": "^7.12.10",
+ "@babel/preset-typescript": "^7.12.7",
+ "@babel/register": "^7.12.1",
+ "@storybook/node-logger": "6.2.9",
+ "@storybook/semver": "^7.3.2",
+ "@types/glob-base": "^0.3.0",
+ "@types/micromatch": "^4.0.1",
+ "@types/node": "^14.0.10",
+ "@types/pretty-hrtime": "^1.0.0",
+ "babel-loader": "^8.2.2",
+ "babel-plugin-macros": "^3.0.1",
+ "babel-plugin-polyfill-corejs3": "^0.1.0",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
+ "express": "^4.17.1",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fork-ts-checker-webpack-plugin": "^6.0.4",
+ "glob": "^7.1.6",
+ "glob-base": "^0.3.0",
+ "interpret": "^2.2.0",
+ "json5": "^2.1.3",
+ "lazy-universal-dotenv": "^3.0.1",
+ "micromatch": "^4.0.2",
+ "pkg-dir": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "resolve-from": "^5.0.0",
+ "ts-dedent": "^2.0.0",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4"
+ },
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
+ "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/traverse": "^7.13.0",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
+ }
+ },
+ "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"
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
+ "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.1.5",
+ "core-js-compat": "^3.8.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.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
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "@storybook/core-events": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.2.9.tgz",
+ "integrity": "sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ==",
+ "dev": true,
+ "requires": {
+ "core-js": "^3.8.2"
+ }
+ },
+ "@storybook/core-server": {
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.2.9.tgz",
+ "integrity": "sha512-DzihO73pj1Ro0Y4tq9hjw2mLMUYeSRPrx7CndCOBxcTHCKQ8Kd7Dee3wJ49t5/19V7TW1+4lYR59GAy73FeOAQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-transform-template-literals": "^7.12.1",
+ "@babel/preset-react": "^7.12.10",
+ "@storybook/addons": "6.2.9",
+ "@storybook/builder-webpack4": "6.2.9",
+ "@storybook/core-client": "6.2.9",
+ "@storybook/core-common": "6.2.9",
+ "@storybook/node-logger": "6.2.9",
+ "@storybook/semver": "^7.3.2",
+ "@storybook/theming": "6.2.9",
+ "@storybook/ui": "6.2.9",
+ "@types/node": "^14.0.10",
+ "@types/node-fetch": "^2.5.7",
+ "@types/pretty-hrtime": "^1.0.0",
+ "@types/webpack": "^4.41.26",
+ "airbnb-js-shims": "^2.2.1",
+ "babel-loader": "^8.2.2",
+ "better-opn": "^2.1.1",
+ "boxen": "^4.2.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "chalk": "^4.1.0",
+ "cli-table3": "0.6.0",
+ "commander": "^6.2.1",
+ "core-js": "^3.8.2",
+ "cpy": "^8.1.1",
+ "css-loader": "^3.6.0",
+ "detect-port": "^1.3.0",
+ "dotenv-webpack": "^1.8.0",
+ "express": "^4.17.1",
+ "file-loader": "^6.2.0",
+ "file-system-cache": "^1.0.5",
+ "find-up": "^5.0.0",
+ "fs-extra": "^9.0.1",
+ "global": "^4.4.0",
+ "html-webpack-plugin": "^4.0.0",
+ "ip": "^1.1.5",
+ "node-fetch": "^2.6.1",
+ "pnp-webpack-plugin": "1.6.4",
+ "pretty-hrtime": "^1.0.3",
+ "prompts": "^2.4.0",
+ "read-pkg-up": "^7.0.1",
+ "regenerator-runtime": "^0.13.7",
+ "resolve-from": "^5.0.0",
+ "serve-favicon": "^2.5.0",
+ "style-loader": "^1.3.0",
+ "telejson": "^5.1.0",
+ "terser-webpack-plugin": "^3.1.0",
+ "ts-dedent": "^2.0.0",
+ "url-loader": "^4.1.1",
+ "util-deprecate": "^1.0.2",
+ "webpack": "4",
+ "webpack-dev-middleware": "^3.7.3",
+ "webpack-virtual-modules": "^0.2.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.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true
+ },
+ "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
+ },
+ "html-webpack-plugin": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz",
+ "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==",
+ "dev": true,
+ "requires": {
+ "@types/html-minifier-terser": "^5.0.0",
+ "@types/tapable": "^1.0.5",
+ "@types/webpack": "^4.41.8",
+ "html-minifier-terser": "^5.0.1",
+ "loader-utils": "^1.2.3",
+ "lodash": "^4.17.20",
+ "pretty-error": "^2.1.1",
+ "tapable": "^1.1.3",
+ "util.promisify": "1.0.0"
+ }
},
"style-loader": {
"version": "1.3.0",
@@ -37613,27 +35040,10 @@
"dev": true,
"requires": {
"has-flag": "^4.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==",
- "dev": true
- }
}
}
}
},
- "@storybook/core-events": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.1.21.tgz",
- "integrity": "sha512-KWqnh1C7M1pT//WfQb3AD60yTR8jL48AfaeLGto2gO9VK7VVgj/EGsrXZP/GTL90ygyExbbBI5gkr7EBTu/HYw==",
- "dev": true,
- "requires": {
- "core-js": "^3.0.1"
- }
- },
"@storybook/csf": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz",
@@ -37644,14 +35054,14 @@
}
},
"@storybook/node-logger": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.1.21.tgz",
- "integrity": "sha512-wQZZw4n1PG3kGOsczWCBC6+8RagYkrGYDqsVOpUcs5shGbPg5beCXDuzP4nxz2IlsoP9ZtTSaX741H791OIOjA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.2.9.tgz",
+ "integrity": "sha512-ryRBChWZf1A5hOVONErJZosS25IdMweoMVFAUAcj91iC0ynoSA6YL2jmoE71jQchxEXEgkDeRkX9lR/GlqFGZQ==",
"dev": true,
"requires": {
"@types/npmlog": "^4.1.2",
- "chalk": "^4.0.0",
- "core-js": "^3.0.1",
+ "chalk": "^4.1.0",
+ "core-js": "^3.8.2",
"npmlog": "^4.1.2",
"pretty-hrtime": "^1.0.3"
},
@@ -37666,30 +35076,15 @@
}
},
"chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"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"
- }
- },
- "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==",
- "dev": true
- },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -37708,46 +35103,52 @@
}
},
"@storybook/react": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.1.21.tgz",
- "integrity": "sha512-j3gq/ssWxRCCH5iCHbP3ihXSGS7lVWh1HpmBmGbbhHGHgdmSPsRjwDXiQGE81EmE7bzbC8NECBhU3zHJ6h1TvA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.2.9.tgz",
+ "integrity": "sha512-glvw+o/Vek2oapYIXCYDK6gm3cuSnx0XdOpiJVcXk3KLb8JfLbdzGYYp6dcWUbyOBqGcGFRpXIgMmkcwgn+fvQ==",
"dev": true,
"requires": {
"@babel/preset-flow": "^7.12.1",
- "@babel/preset-react": "^7.12.1",
- "@pmmmwh/react-refresh-webpack-plugin": "^0.4.2",
- "@storybook/addons": "6.1.21",
- "@storybook/core": "6.1.21",
- "@storybook/node-logger": "6.1.21",
+ "@babel/preset-react": "^7.12.10",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
+ "@storybook/addons": "6.2.9",
+ "@storybook/core": "6.2.9",
+ "@storybook/core-common": "6.2.9",
+ "@storybook/node-logger": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@types/webpack-env": "^1.15.3",
+ "@types/webpack-env": "^1.16.0",
"babel-plugin-add-react-displayname": "^0.0.5",
"babel-plugin-named-asset-import": "^0.3.1",
"babel-plugin-react-docgen": "^4.2.1",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
+ "core-js": "^3.8.2",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"prop-types": "^15.7.2",
"react-dev-utils": "^11.0.3",
"react-docgen-typescript-plugin": "^0.6.2",
"react-refresh": "^0.8.3",
+ "read-pkg-up": "^7.0.1",
"regenerator-runtime": "^0.13.7",
"ts-dedent": "^2.0.0",
- "webpack": "^4.44.2"
+ "webpack": "4"
}
},
"@storybook/router": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.1.21.tgz",
- "integrity": "sha512-m75WvUhoCBWDVekICAdbkidji/w5hCjHo+M8L13UghpwXWEnyr4/QqvkOb/PcSC8aZzxeMqSCpRQ1o6LWULneg==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.2.9.tgz",
+ "integrity": "sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg==",
"dev": true,
"requires": {
- "@reach/router": "^1.3.3",
+ "@reach/router": "^1.3.4",
+ "@storybook/client-logger": "6.2.9",
"@types/reach__router": "^1.3.7",
- "core-js": "^3.0.1",
- "global": "^4.3.2",
+ "core-js": "^3.8.2",
+ "fast-deep-equal": "^3.1.3",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"memoizerific": "^1.11.3",
- "qs": "^6.6.0"
+ "qs": "^6.10.0",
+ "ts-dedent": "^2.0.0"
}
},
"@storybook/semver": {
@@ -37758,64 +35159,105 @@
"requires": {
"core-js": "^3.6.5",
"find-up": "^4.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.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==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ }
}
},
"@storybook/theming": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.1.21.tgz",
- "integrity": "sha512-yq7+/mpdljRdSRJYw/In/9tnDGXIUDe//mhyMftFfrB2mq6zi1yAZpowCerWhiDE2ipGkrfzIYx/Sn7bcaXgqg==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.2.9.tgz",
+ "integrity": "sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA==",
"dev": true,
"requires": {
"@emotion/core": "^10.1.1",
"@emotion/is-prop-valid": "^0.8.6",
- "@emotion/styled": "^10.0.23",
- "@storybook/client-logger": "6.1.21",
- "core-js": "^3.0.1",
+ "@emotion/styled": "^10.0.27",
+ "@storybook/client-logger": "6.2.9",
+ "core-js": "^3.8.2",
"deep-object-diff": "^1.1.0",
- "emotion-theming": "^10.0.19",
- "global": "^4.3.2",
+ "emotion-theming": "^10.0.27",
+ "global": "^4.4.0",
"memoizerific": "^1.11.3",
- "polished": "^3.4.4",
+ "polished": "^4.0.5",
"resolve-from": "^5.0.0",
"ts-dedent": "^2.0.0"
}
},
"@storybook/ui": {
- "version": "6.1.21",
- "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.1.21.tgz",
- "integrity": "sha512-2nRb5egnSBKbosuR7g5PsuM4XnRLXZUf7TBjwT6eRlomnE2wrWM5DtTLpFeUpDob0SI5hPlOV1xCpPz3XmeyyA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.2.9.tgz",
+ "integrity": "sha512-jq2xmw3reIqik/6ibUSbNKGR+Xvr9wkAEwexiOl+5WQ5BeYJpw4dmDmsFQf+SQuWaSEUUPolbzkakRQM778Kdg==",
"dev": true,
"requires": {
"@emotion/core": "^10.1.1",
- "@storybook/addons": "6.1.21",
- "@storybook/api": "6.1.21",
- "@storybook/channels": "6.1.21",
- "@storybook/client-logger": "6.1.21",
- "@storybook/components": "6.1.21",
- "@storybook/core-events": "6.1.21",
- "@storybook/router": "6.1.21",
+ "@storybook/addons": "6.2.9",
+ "@storybook/api": "6.2.9",
+ "@storybook/channels": "6.2.9",
+ "@storybook/client-logger": "6.2.9",
+ "@storybook/components": "6.2.9",
+ "@storybook/core-events": "6.2.9",
+ "@storybook/router": "6.2.9",
"@storybook/semver": "^7.3.2",
- "@storybook/theming": "6.1.21",
- "@types/markdown-to-jsx": "^6.11.0",
- "copy-to-clipboard": "^3.0.8",
- "core-js": "^3.0.1",
- "core-js-pure": "^3.0.1",
- "downshift": "^6.0.6",
- "emotion-theming": "^10.0.19",
+ "@storybook/theming": "6.2.9",
+ "@types/markdown-to-jsx": "^6.11.3",
+ "copy-to-clipboard": "^3.3.1",
+ "core-js": "^3.8.2",
+ "core-js-pure": "^3.8.2",
+ "downshift": "^6.0.15",
+ "emotion-theming": "^10.0.27",
"fuse.js": "^3.6.1",
- "global": "^4.3.2",
- "lodash": "^4.17.15",
+ "global": "^4.4.0",
+ "lodash": "^4.17.20",
"markdown-to-jsx": "^6.11.4",
"memoizerific": "^1.11.3",
- "polished": "^3.4.4",
- "qs": "^6.6.0",
- "react-draggable": "^4.0.3",
- "react-helmet-async": "^1.0.2",
- "react-hotkeys": "2.0.0",
- "react-sizeme": "^2.6.7",
+ "polished": "^4.0.5",
+ "qs": "^6.10.0",
+ "react-draggable": "^4.4.3",
+ "react-helmet-async": "^1.0.7",
+ "react-sizeme": "^3.0.1",
"regenerator-runtime": "^0.13.7",
"resolve-from": "^5.0.0",
- "store2": "^2.7.1"
+ "store2": "^2.12.0"
+ },
+ "dependencies": {
+ "markdown-to-jsx": {
+ "version": "6.11.4",
+ "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz",
+ "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==",
+ "dev": true,
+ "requires": {
+ "prop-types": "^15.6.2",
+ "unquote": "^1.1.0"
+ }
+ }
}
},
"@svgr/babel-plugin-add-jsx-attribute": {
@@ -37893,15 +35335,6 @@
"cosmiconfig": "^5.2.1"
},
"dependencies": {
- "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"
- }
- },
"cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -37974,15 +35407,6 @@
"svgo": "^1.2.2"
},
"dependencies": {
- "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"
- }
- },
"cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -38092,6 +35516,21 @@
"integrity": "sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw==",
"dev": true
},
+ "@types/color-convert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz",
+ "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "*"
+ }
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
"@types/component-emitter": {
"version": "1.2.10",
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
@@ -38201,27 +35640,33 @@
}
},
"@types/minimatch": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
- "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==",
"dev": true
},
"@types/node": {
- "version": "14.14.35",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz",
- "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==",
+ "version": "14.14.43",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.43.tgz",
+ "integrity": "sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ==",
"dev": true
},
"@types/node-fetch": {
- "version": "2.5.8",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz",
- "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==",
+ "version": "2.5.10",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz",
+ "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==",
"dev": true,
"requires": {
"@types/node": "*",
"form-data": "^3.0.0"
}
},
+ "@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==",
+ "dev": true
+ },
"@types/npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz",
@@ -38240,6 +35685,12 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
+ "@types/pretty-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz",
+ "integrity": "sha512-xl+5r2rcrxdLViAYkkiLMYsoUs3qEyrAnHFyEzYysgRxdVp3WbhysxIvJIxZp9FvZ2CYezh0TaHZorivH+voOQ==",
+ "dev": true
+ },
"@types/prop-types": {
"version": "15.7.3",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
@@ -38268,9 +35719,9 @@
}
},
"@types/react": {
- "version": "17.0.3",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz",
- "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==",
+ "version": "17.0.4",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.4.tgz",
+ "integrity": "sha512-onz2BqScSFMoTRdJUZUDD/7xrusM8hBA2Fktk2qgaTYPCgPvWnDEgkrOs8hhPUf2jfcIXkJ5yK6VfYormJS3Jw==",
"dev": true,
"requires": {
"@types/prop-types": "*",
@@ -38279,36 +35730,17 @@
},
"dependencies": {
"csstype": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
- "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==",
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
+ "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==",
"dev": true
}
}
},
- "@types/react-color": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.4.tgz",
- "integrity": "sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw==",
- "dev": true,
- "requires": {
- "@types/react": "*",
- "@types/reactcss": "*"
- }
- },
"@types/react-syntax-highlighter": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz",
- "integrity": "sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg==",
- "dev": true,
- "requires": {
- "@types/react": "*"
- }
- },
- "@types/reactcss": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.3.tgz",
- "integrity": "sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz",
+ "integrity": "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==",
"dev": true,
"requires": {
"@types/react": "*"
@@ -38333,9 +35765,9 @@
"dev": true
},
"@types/tapable": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz",
- "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz",
+ "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==",
"dev": true
},
"@types/uglify-js": {
@@ -38362,14 +35794,14 @@
"dev": true
},
"@types/webpack": {
- "version": "4.41.26",
- "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
- "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==",
+ "version": "4.41.27",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.27.tgz",
+ "integrity": "sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA==",
"dev": true,
"requires": {
"@types/anymatch": "*",
"@types/node": "*",
- "@types/tapable": "*",
+ "@types/tapable": "^1",
"@types/uglify-js": "*",
"@types/webpack-sources": "*",
"source-map": "^0.6.0"
@@ -38415,6 +35847,18 @@
"integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
"dev": true
},
+ "@typescript-eslint/eslint-plugin": {
+ "version": "2.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
+ "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/experimental-utils": "2.34.0",
+ "functional-red-black-tree": "^1.0.1",
+ "regexpp": "^3.0.0",
+ "tsutils": "^3.17.1"
+ }
+ },
"@typescript-eslint/experimental-utils": {
"version": "2.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz",
@@ -38425,18 +35869,18 @@
"@typescript-eslint/typescript-estree": "2.34.0",
"eslint-scope": "^5.0.0",
"eslint-utils": "^2.0.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- }
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "2.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz",
+ "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==",
+ "dev": true,
+ "requires": {
+ "@types/eslint-visitor-keys": "^1.0.0",
+ "@typescript-eslint/experimental-utils": "2.34.0",
+ "@typescript-eslint/typescript-estree": "2.34.0",
+ "eslint-visitor-keys": "^1.1.0"
}
},
"@typescript-eslint/typescript-estree": {
@@ -38684,10 +36128,9 @@
}
},
"acorn": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
- "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
- "dev": true
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
},
"acorn-globals": {
"version": "4.3.4",
@@ -38708,23 +36151,10 @@
}
},
"acorn-jsx": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
- "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
- "dev": true,
- "peer": true,
- "requires": {
- "acorn": "^3.0.4"
- },
- "dependencies": {
- "acorn": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
- "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
- "dev": true,
- "peer": true
- }
- }
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
+ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
+ "dev": true
},
"acorn-node": {
"version": "1.8.2",
@@ -38736,11 +36166,6 @@
"xtend": "^4.0.2"
},
"dependencies": {
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
- },
"acorn-walk": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
@@ -38827,41 +36252,28 @@
}
},
"ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
- "peer": true,
"requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
+ "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
- },
- "dependencies": {
- "fast-deep-equal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
- "dev": true,
- "peer": true
- }
+ "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,
- "requires": {}
+ "dev": true
},
"ajv-keywords": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
- "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
- "dev": true,
- "peer": true,
- "requires": {}
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true
},
"alphanum-sort": {
"version": "1.0.2",
@@ -39065,18 +36477,18 @@
}
},
"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==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
"requires": {
- "type-fest": "^0.11.0"
+ "type-fest": "^0.21.3"
},
"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==",
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true
}
}
@@ -39189,6 +36601,21 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
+ },
+ "dependencies": {
+ "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="
+ }
}
},
"ansi-to-html": {
@@ -39272,12 +36699,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -39330,6 +36751,32 @@
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.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==",
+ "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"
+ }
+ }
}
},
"argparse": {
@@ -39555,9 +37002,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
}
}
@@ -39575,9 +37022,9 @@
"dev": true
},
"async": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
+ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
"dev": true
},
"async-each": {
@@ -39633,13 +37080,30 @@
"caniuse-lite": "^1.0.30000792",
"electron-to-chromium": "^1.3.30"
}
+ },
+ "postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
}
}
},
"aws-sdk": {
- "version": "2.870.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.870.0.tgz",
- "integrity": "sha512-pbNO+RuEx45aaEZind0Tl9NADxncLJf0mRAwof0szyYMB+FZm165yz7FCxFLumU4R9qw8vOG5YFACBaNoQkJdg==",
+ "version": "2.899.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.899.0.tgz",
+ "integrity": "sha512-k8jSANDQGvTyyj1f/7Hj4SWaV61/gjj/BopRmavAr6n1ayjXtUeVrV8G29+ABD3V82pHXDqLq47bqNmZ9m86xQ==",
"dev": true,
"requires": {
"buffer": "4.9.2",
@@ -39666,9 +37130,9 @@
"dev": true
},
"axe-core": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz",
- "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz",
+ "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==",
"dev": true
},
"axobject-query": {
@@ -39688,12 +37152,6 @@
"js-tokens": "^3.0.2"
},
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
@@ -39719,15 +37177,6 @@
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -39736,74 +37185,6 @@
}
}
},
- "babel-core": {
- "version": "6.26.3",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
- "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-code-frame": "^6.26.0",
- "babel-generator": "^6.26.0",
- "babel-helpers": "^6.24.1",
- "babel-messages": "^6.23.0",
- "babel-register": "^6.26.0",
- "babel-runtime": "^6.26.0",
- "babel-template": "^6.26.0",
- "babel-traverse": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "convert-source-map": "^1.5.1",
- "debug": "^2.6.9",
- "json5": "^0.5.1",
- "lodash": "^4.17.4",
- "minimatch": "^3.0.4",
- "path-is-absolute": "^1.0.1",
- "private": "^0.1.8",
- "slash": "^1.0.0",
- "source-map": "^0.5.7"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "peer": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true,
- "peer": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true,
- "peer": true
- },
- "slash": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
- "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
- "dev": true,
- "peer": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "peer": true
- }
- }
- },
"babel-eslint": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
@@ -39827,92 +37208,6 @@
"babylon": "^6.18.0"
}
},
- "babel-generator": {
- "version": "6.26.1",
- "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
- "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-messages": "^6.23.0",
- "babel-runtime": "^6.26.0",
- "babel-types": "^6.26.0",
- "detect-indent": "^4.0.0",
- "jsesc": "^1.3.0",
- "lodash": "^4.17.4",
- "source-map": "^0.5.7",
- "trim-right": "^1.0.1"
- },
- "dependencies": {
- "jsesc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
- "dev": true,
- "peer": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "peer": true
- }
- }
- },
- "babel-helper-evaluate-path": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz",
- "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==",
- "dev": true
- },
- "babel-helper-flip-expressions": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz",
- "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=",
- "dev": true
- },
- "babel-helper-is-nodes-equiv": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz",
- "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=",
- "dev": true
- },
- "babel-helper-is-void-0": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz",
- "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=",
- "dev": true
- },
- "babel-helper-mark-eval-scopes": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz",
- "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=",
- "dev": true
- },
- "babel-helper-remove-or-void": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz",
- "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=",
- "dev": true
- },
- "babel-helper-to-multiple-sequence-expressions": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz",
- "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==",
- "dev": true
- },
- "babel-helpers": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
- "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-runtime": "^6.22.0",
- "babel-template": "^6.24.1"
- }
- },
"babel-jest": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz",
@@ -39951,6 +37246,25 @@
"pkg-dir": "^4.1.0"
}
},
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
"make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -39959,19 +37273,27 @@
"requires": {
"semver": "^6.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==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.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==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
}
}
},
- "babel-messages": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
- "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-runtime": "^6.22.0"
- }
- },
"babel-plugin-add-react-displayname": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz",
@@ -40005,6 +37327,30 @@
"source-map": "^0.5.7"
},
"dependencies": {
+ "babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ },
+ "cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -40052,6 +37398,12 @@
"requires": {
"p-limit": "^2.0.0"
}
+ },
+ "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
}
}
},
@@ -40065,159 +37417,50 @@
}
},
"babel-plugin-macros": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
- "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.0.1.tgz",
+ "integrity": "sha512-CKt4+Oy9k2wiN+hT1uZzOw7d8zb1anbQpf7KLwaaXRCi/4pzKdFKHf7v5mvoPmjkmxshh7eKZQuRop06r5WP4w==",
"dev": true,
"requires": {
- "@babel/runtime": "^7.7.2",
- "cosmiconfig": "^6.0.0",
- "resolve": "^1.12.0"
- }
- },
- "babel-plugin-minify-builtins": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz",
- "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==",
- "dev": true
- },
- "babel-plugin-minify-constant-folding": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz",
- "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==",
- "dev": true,
- "requires": {
- "babel-helper-evaluate-path": "^0.5.0"
- }
- },
- "babel-plugin-minify-dead-code-elimination": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz",
- "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==",
- "dev": true,
- "requires": {
- "babel-helper-evaluate-path": "^0.5.0",
- "babel-helper-mark-eval-scopes": "^0.4.3",
- "babel-helper-remove-or-void": "^0.4.3",
- "lodash": "^4.17.11"
- }
- },
- "babel-plugin-minify-flip-comparisons": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz",
- "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=",
- "dev": true,
- "requires": {
- "babel-helper-is-void-0": "^0.4.3"
- }
- },
- "babel-plugin-minify-guarded-expressions": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz",
- "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==",
- "dev": true,
- "requires": {
- "babel-helper-evaluate-path": "^0.5.0",
- "babel-helper-flip-expressions": "^0.4.3"
- }
- },
- "babel-plugin-minify-infinity": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz",
- "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=",
- "dev": true
- },
- "babel-plugin-minify-mangle-names": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz",
- "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==",
- "dev": true,
- "requires": {
- "babel-helper-mark-eval-scopes": "^0.4.3"
- }
- },
- "babel-plugin-minify-numeric-literals": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz",
- "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=",
- "dev": true
- },
- "babel-plugin-minify-replace": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz",
- "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==",
- "dev": true
- },
- "babel-plugin-minify-simplify": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz",
- "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==",
- "dev": true,
- "requires": {
- "babel-helper-evaluate-path": "^0.5.0",
- "babel-helper-flip-expressions": "^0.4.3",
- "babel-helper-is-nodes-equiv": "^0.0.1",
- "babel-helper-to-multiple-sequence-expressions": "^0.5.0"
- }
- },
- "babel-plugin-minify-type-constructors": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz",
- "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=",
- "dev": true,
- "requires": {
- "babel-helper-is-void-0": "^0.4.3"
- }
- },
- "babel-plugin-module-resolver": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz",
- "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==",
- "dev": true,
- "peer": true,
- "requires": {
- "find-babel-config": "^1.1.0",
- "glob": "^7.1.2",
- "pkg-up": "^2.0.0",
- "reselect": "^3.0.1",
- "resolve": "^1.4.0"
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
}
},
"babel-plugin-named-asset-import": {
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz",
"integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"babel-plugin-polyfill-corejs2": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz",
- "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz",
+ "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.13.0",
- "@babel/helper-define-polyfill-provider": "^0.1.5",
+ "@babel/compat-data": "^7.13.11",
+ "@babel/helper-define-polyfill-provider": "^0.2.0",
"semver": "^6.1.1"
}
},
"babel-plugin-polyfill-corejs3": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
- "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz",
+ "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==",
"dev": true,
"requires": {
- "@babel/helper-define-polyfill-provider": "^0.1.5",
- "core-js-compat": "^3.8.1"
+ "@babel/helper-define-polyfill-provider": "^0.2.0",
+ "core-js-compat": "^3.9.1"
}
},
"babel-plugin-polyfill-regenerator": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz",
- "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz",
+ "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==",
"dev": true,
"requires": {
- "@babel/helper-define-polyfill-provider": "^0.1.5"
+ "@babel/helper-define-polyfill-provider": "^0.2.0"
}
},
"babel-plugin-react-docgen": {
@@ -40254,30 +37497,6 @@
"integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
"dev": true
},
- "babel-plugin-transform-inline-consecutive-adds": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz",
- "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=",
- "dev": true
- },
- "babel-plugin-transform-member-expression-literals": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz",
- "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=",
- "dev": true
- },
- "babel-plugin-transform-merge-sibling-variables": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz",
- "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=",
- "dev": true
- },
- "babel-plugin-transform-minify-booleans": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz",
- "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=",
- "dev": true
- },
"babel-plugin-transform-object-rest-spread": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
@@ -40288,60 +37507,12 @@
"babel-runtime": "^6.26.0"
}
},
- "babel-plugin-transform-property-literals": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz",
- "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
"babel-plugin-transform-react-remove-prop-types": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
"integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==",
"dev": true
},
- "babel-plugin-transform-regexp-constructors": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz",
- "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=",
- "dev": true
- },
- "babel-plugin-transform-remove-console": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz",
- "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=",
- "dev": true
- },
- "babel-plugin-transform-remove-debugger": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz",
- "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=",
- "dev": true
- },
- "babel-plugin-transform-remove-undefined": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz",
- "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==",
- "dev": true,
- "requires": {
- "babel-helper-evaluate-path": "^0.5.0"
- }
- },
- "babel-plugin-transform-simplify-comparison-operators": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz",
- "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=",
- "dev": true
- },
- "babel-plugin-transform-undefined-to-void": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz",
- "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=",
- "dev": true
- },
"babel-preset-jest": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz",
@@ -40352,37 +37523,6 @@
"babel-plugin-jest-hoist": "^24.9.0"
}
},
- "babel-preset-minify": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz",
- "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==",
- "dev": true,
- "requires": {
- "babel-plugin-minify-builtins": "^0.5.0",
- "babel-plugin-minify-constant-folding": "^0.5.0",
- "babel-plugin-minify-dead-code-elimination": "^0.5.1",
- "babel-plugin-minify-flip-comparisons": "^0.4.3",
- "babel-plugin-minify-guarded-expressions": "^0.4.4",
- "babel-plugin-minify-infinity": "^0.4.3",
- "babel-plugin-minify-mangle-names": "^0.5.0",
- "babel-plugin-minify-numeric-literals": "^0.4.3",
- "babel-plugin-minify-replace": "^0.5.0",
- "babel-plugin-minify-simplify": "^0.5.1",
- "babel-plugin-minify-type-constructors": "^0.4.3",
- "babel-plugin-transform-inline-consecutive-adds": "^0.4.3",
- "babel-plugin-transform-member-expression-literals": "^6.9.4",
- "babel-plugin-transform-merge-sibling-variables": "^6.9.4",
- "babel-plugin-transform-minify-booleans": "^6.9.4",
- "babel-plugin-transform-property-literals": "^6.9.4",
- "babel-plugin-transform-regexp-constructors": "^0.4.3",
- "babel-plugin-transform-remove-console": "^6.9.4",
- "babel-plugin-transform-remove-debugger": "^6.9.4",
- "babel-plugin-transform-remove-undefined": "^0.5.0",
- "babel-plugin-transform-simplify-comparison-operators": "^6.9.4",
- "babel-plugin-transform-undefined-to-void": "^6.9.4",
- "lodash": "^4.17.11"
- }
- },
"babel-preset-react-app": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz",
@@ -40601,6 +37741,30 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ },
+ "cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/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"
+ }
+ },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -40615,48 +37779,6 @@
}
}
},
- "babel-register": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
- "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-core": "^6.26.0",
- "babel-runtime": "^6.26.0",
- "core-js": "^2.5.0",
- "home-or-tmp": "^2.0.0",
- "lodash": "^4.17.4",
- "mkdirp": "^0.5.1",
- "source-map-support": "^0.4.15"
- },
- "dependencies": {
- "core-js": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
- "dev": true,
- "peer": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "peer": true
- },
- "source-map-support": {
- "version": "0.4.18",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
- "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
- "dev": true,
- "peer": true,
- "requires": {
- "source-map": "^0.5.6"
- }
- }
- }
- },
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
@@ -40678,86 +37800,6 @@
}
}
},
- "babel-template": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
- "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-runtime": "^6.26.0",
- "babel-traverse": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "lodash": "^4.17.4"
- }
- },
- "babel-traverse": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
- "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-code-frame": "^6.26.0",
- "babel-messages": "^6.23.0",
- "babel-runtime": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "debug": "^2.6.8",
- "globals": "^9.18.0",
- "invariant": "^2.2.2",
- "lodash": "^4.17.4"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "peer": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "globals": {
- "version": "9.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
- "dev": true,
- "peer": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true,
- "peer": true
- }
- }
- },
- "babel-types": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
- "dev": true,
- "peer": true,
- "requires": {
- "babel-runtime": "^6.26.0",
- "esutils": "^2.0.2",
- "lodash": "^4.17.4",
- "to-fast-properties": "^1.0.3"
- },
- "dependencies": {
- "to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
- "dev": true,
- "peer": true
- }
- }
- },
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
@@ -40770,9 +37812,9 @@
"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
},
"balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"base": {
"version": "0.11.2",
@@ -40887,6 +37929,21 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
+ },
+ "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
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
}
}
},
@@ -41006,21 +38063,6 @@
"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"
- }
- },
- "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==",
- "dev": true
- },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -41076,6 +38118,28 @@
"through2": "^2.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",
@@ -41196,6 +38260,15 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
}
}
},
@@ -41209,15 +38282,15 @@
}
},
"browserslist": {
- "version": "4.16.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
- "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
+ "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.30001181",
- "colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.649",
+ "caniuse-lite": "^1.0.30001219",
+ "colorette": "^1.2.2",
+ "electron-to-chromium": "^1.3.723",
"escalade": "^3.1.1",
- "node-releases": "^1.1.70"
+ "node-releases": "^1.1.71"
}
},
"bser": {
@@ -41365,22 +38438,12 @@
}
},
"caller-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
- "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
"dev": true,
- "peer": true,
"requires": {
- "callsites": "^0.2.0"
- },
- "dependencies": {
- "callsites": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
- "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
- "dev": true,
- "peer": true
- }
+ "caller-callsite": "^2.0.0"
}
},
"callsites": {
@@ -41423,9 +38486,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001204",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz",
- "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ=="
+ "version": "1.0.30001221",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001221.tgz",
+ "integrity": "sha512-b9TOZfND3uGSLjMOrLh8XxSQ41x8mX+9MLJYDM4AAHLfaZHttrLNPrScWjVnBITRZbY5sPpCt7X85n7VSLZ+/g=="
},
"capture-exit": {
"version": "2.0.0",
@@ -41533,9 +38596,9 @@
},
"dependencies": {
"anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
"requires": {
"normalize-path": "^3.0.0",
@@ -41617,13 +38680,10 @@
"dev": true
},
"chrome-trace-event": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
- "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- }
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "dev": true
},
"ci-info": {
"version": "2.0.0",
@@ -41645,15 +38705,7 @@
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
"integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
- "dev": true,
- "requires": {}
- },
- "circular-json": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
- "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
- "dev": true,
- "peer": true
+ "dev": true
},
"class-utils": {
"version": "0.3.6",
@@ -41683,6 +38735,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-data-descriptor": {
@@ -41692,6 +38755,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-descriptor": {
@@ -41703,22 +38777,20 @@
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
}
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
}
}
},
"classnames": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
},
"clean-css": {
"version": "4.2.3",
@@ -41825,23 +38897,14 @@
}
},
"clone-deep": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz",
- "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
"requires": {
- "for-own": "^1.0.0",
"is-plain-object": "^2.0.4",
- "kind-of": "^5.0.0",
- "shallow-clone": "^1.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
}
},
"clsx": {
@@ -41873,9 +38936,9 @@
"dev": true
},
"codemirror": {
- "version": "5.60.0",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.60.0.tgz",
- "integrity": "sha512-AEL7LhFOlxPlCL8IdTcJDblJm8yrAGib7I+DErJPdZd4l6imx8IMgKK3RblVgBQqz3TZJR4oknQ03bz+uNjBYA=="
+ "version": "5.61.0",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.0.tgz",
+ "integrity": "sha512-D3wYH90tYY1BsKlUe0oNj2JAhQ9TepkD51auk3N7q+4uz7A/cgJ5JsWHreT0PqieW1QhOuqxQ2reCXV1YXzecg=="
},
"collection-visit": {
"version": "1.0.0",
@@ -41894,20 +38957,35 @@
"requires": {
"color-convert": "^1.9.1",
"color-string": "^1.5.4"
+ },
+ "dependencies": {
+ "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-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==",
+ "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.3"
+ "color-name": "~1.1.4"
}
},
"color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"color-string": {
"version": "1.5.5",
@@ -41948,6 +39026,21 @@
"color-convert": "^1.9.1",
"color-string": "^1.5.2"
}
+ },
+ "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==",
+ "dev": true,
+ "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=",
+ "dev": true
}
}
},
@@ -42078,6 +39171,30 @@
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.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"
+ }
+ }
}
},
"confusing-browser-globals": {
@@ -42201,31 +39318,6 @@
"webpack-log": "^2.0.0"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -42240,18 +39332,18 @@
}
},
"core-js": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz",
- "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==",
+ "version": "3.11.2",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.11.2.tgz",
+ "integrity": "sha512-3tfrrO1JpJSYGKnd9LKTBPqgUES/UYiCzMKeqwR1+jF16q4kD1BY2NvqkfuzXwQ6+CIWm55V9cjD7PQd+hijdw==",
"dev": true
},
"core-js-compat": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz",
- "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==",
+ "version": "3.11.2",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.11.2.tgz",
+ "integrity": "sha512-gYhNwu7AJjecNtRrIfyoBabQ3ZG+llfPmg9BifIX8yxIpDyfNLRM73zIjINSm6z3dMdI1nwNC9C7uiy4pIC6cw==",
"dev": true,
"requires": {
- "browserslist": "^4.16.3",
+ "browserslist": "^4.16.6",
"semver": "7.0.0"
},
"dependencies": {
@@ -42264,9 +39356,9 @@
}
},
"core-js-pure": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz",
- "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==",
+ "version": "3.11.2",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.11.2.tgz",
+ "integrity": "sha512-DQxdEKm+zFsnON7ZGOgUAQXBt1UJJ01tOzN/HgQ7cNf0oEHW1tcBLfCQQd1q6otdLu5gAdvKYxKHAoXGwE/kiQ==",
"dev": true
},
"core-util-is": {
@@ -42275,16 +39367,16 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "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.1.0",
+ "import-fresh": "^3.2.1",
"parse-json": "^5.0.0",
"path-type": "^4.0.0",
- "yaml": "^1.7.2"
+ "yaml": "^1.10.0"
}
},
"country-data": {
@@ -42408,12 +39500,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -42508,43 +39594,22 @@
}
},
"cross-fetch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz",
- "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
+ "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
"requires": {
"node-fetch": "2.6.1"
}
},
"cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
- "peer": true,
"requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "dependencies": {
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "peer": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true,
- "peer": true
- }
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
}
},
"crypto-browserify": {
@@ -42602,34 +39667,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.5"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
- }
}
},
"css-color-names": {
@@ -42646,34 +39683,6 @@
"requires": {
"postcss": "^7.0.1",
"timsort": "^0.3.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
- }
}
},
"css-has-pseudo": {
@@ -42692,17 +39701,6 @@
"integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
"dev": true
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -42713,21 +39711,6 @@
"indexes-of": "^1.0.1",
"uniq": "^1.0.1"
}
- },
- "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"
- }
}
}
},
@@ -42752,37 +39735,11 @@
"semver": "^6.3.0"
},
"dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"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
- },
- "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"
- }
}
}
},
@@ -42793,34 +39750,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.5"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
- }
}
},
"css-select": {
@@ -42882,26 +39811,17 @@
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
},
"cssnano": {
- "version": "4.1.10",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
- "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz",
+ "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==",
"dev": true,
"requires": {
"cosmiconfig": "^5.0.0",
- "cssnano-preset-default": "^4.0.7",
+ "cssnano-preset-default": "^4.0.8",
"is-resolvable": "^1.0.0",
"postcss": "^7.0.0"
},
"dependencies": {
- "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"
- }
- },
"cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -42934,44 +39854,18 @@
"json-parse-better-errors": "^1.0.1"
}
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"resolve-from": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
"dev": true
- },
- "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"
- }
}
}
},
"cssnano-preset-default": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
- "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
+ "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
"dev": true,
"requires": {
"css-declaration-sorter": "^4.0.1",
@@ -43002,36 +39896,8 @@
"postcss-ordered-values": "^4.1.2",
"postcss-reduce-initial": "^4.0.3",
"postcss-reduce-transforms": "^4.0.2",
- "postcss-svgo": "^4.0.2",
+ "postcss-svgo": "^4.0.3",
"postcss-unique-selectors": "^4.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
- }
}
},
"cssnano-util-get-arguments": {
@@ -43053,34 +39919,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
- }
}
},
"cssnano-util-same-parent": {
@@ -43099,9 +39937,9 @@
},
"dependencies": {
"css-tree": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz",
- "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
"dev": true,
"requires": {
"mdn-data": "2.0.14",
@@ -43138,9 +39976,9 @@
}
},
"csstype": {
- "version": "2.6.16",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz",
- "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==",
+ "version": "2.6.17",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz",
+ "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==",
"dev": true
},
"currency-symbol-map": {
@@ -43299,9 +40137,9 @@
}
},
"date-fns": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz",
- "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg=="
+ "version": "2.21.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.1.tgz",
+ "integrity": "sha512-m1WR0xGiC6j6jNFAyW4Nvh4WxAi4JF4w9jRJwSI8nBmNcyZXPcP9VUQG+6gHQXAmqaGEKDKhOqAtENDC941UkA=="
},
"date-now": {
"version": "0.1.4",
@@ -43387,6 +40225,12 @@
"integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==",
"dev": true
},
+ "deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "dev": true
+ },
"default-gateway": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
@@ -43532,16 +40376,6 @@
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
"dev": true
},
- "detect-indent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
- "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
- "dev": true,
- "peer": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- },
"detect-newline": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
@@ -43718,18 +40552,19 @@
}
},
"doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
"dev": true,
"requires": {
- "esutils": "^2.0.2"
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
}
},
"dom-align": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz",
- "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA=="
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.1.tgz",
+ "integrity": "sha512-CdTD9EdA5WviP8oO3n+okOm0Xt7dSuWxRTLcJiW0memwUr3Tvz66JDDCh9cb50IZFHXvBmLoyX454uJU/EVg+g=="
},
"dom-converter": {
"version": "0.2.0",
@@ -43741,18 +40576,18 @@
}
},
"dom-helpers": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz",
- "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"requires": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
},
"dependencies": {
"csstype": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
- "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g=="
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
+ "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
}
}
},
@@ -43766,9 +40601,9 @@
},
"dependencies": {
"domelementtype": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
- "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
},
"entities": {
"version": "2.2.0",
@@ -43850,9 +40685,9 @@
}
},
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
}
}
@@ -43905,15 +40740,15 @@
}
},
"downshift": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.1.tgz",
- "integrity": "sha512-ch8Sh/j7gVqQd7Kcv3A5TkGfldmxmlQrRPZJYWEhzh24+h7WA4vXssuhcGNJrD8YPJlZYQGHcaX8BNhS0IcOvg==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.3.tgz",
+ "integrity": "sha512-RA1MuaNcTbt0j+sVLhSs8R2oZbBXYAtdQP/V+uHhT3DoDteZzJPjlC+LQVm9T07Wpvo84QXaZtUCePLDTDwGXg==",
"dev": true,
"requires": {
- "@babel/runtime": "^7.12.5",
+ "@babel/runtime": "^7.13.10",
"compute-scroll-into-view": "^1.0.17",
"prop-types": "^15.7.2",
- "react-is": "^17.0.1"
+ "react-is": "^17.0.2"
}
},
"duplexer": {
@@ -43928,6 +40763,30 @@
"integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
"requires": {
"readable-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"
+ }
+ }
}
},
"duplexify": {
@@ -43940,6 +40799,32 @@
"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==",
+ "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"
+ }
+ }
}
},
"ecc-jsbn": {
@@ -43959,18 +40844,15 @@
"dev": true
},
"ejs": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
- "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
- "dev": true,
- "requires": {
- "jake": "^10.6.1"
- }
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
+ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
+ "dev": true
},
"electron-to-chromium": {
- "version": "1.3.698",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.698.tgz",
- "integrity": "sha512-VEXDzYblnlT+g8Q3gedwzgKOso1evkeJzV8lih7lV8mL8eAnGVnKyC3KsFT6S+R5PQO4ffdr1PI16/ElibY/kQ=="
+ "version": "1.3.726",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.726.tgz",
+ "integrity": "sha512-dw7WmrSu/JwtACiBzth8cuKf62NKL1xVJuNvyOg0jvruN/n4NLtGYoTzciQquCPNaS2eR+BT5GrxHbslfc/w1w=="
},
"element-resize-detector": {
"version": "1.2.2",
@@ -44060,9 +40942,9 @@
}
},
"engine.io-client": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.2.tgz",
- "integrity": "sha512-1mwvwKYMa0AaCy+sPgvJ/SnKyO5MJZ1HEeXfA3Rm/KHkHGiYD5bQVq8QzvIrkI01FuVtOdZC5lWdRw1BGXB2NQ==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.3.tgz",
+ "integrity": "sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg==",
"requires": {
"base64-arraybuffer": "0.1.4",
"component-emitter": "~1.3.0",
@@ -44077,10 +40959,9 @@
},
"dependencies": {
"ws": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
- "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==",
- "requires": {}
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz",
+ "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g=="
}
}
},
@@ -44112,6 +40993,30 @@
"errno": "^0.1.3",
"readable-stream": "^2.0.1"
}
+ },
+ "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"
+ }
}
}
},
@@ -44303,196 +41208,162 @@
}
},
"eslint": {
- "version": "4.19.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
- "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
"dev": true,
- "peer": true,
"requires": {
- "ajv": "^5.3.0",
- "babel-code-frame": "^6.22.0",
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
"chalk": "^2.1.0",
- "concat-stream": "^1.6.0",
- "cross-spawn": "^5.1.0",
- "debug": "^3.1.0",
- "doctrine": "^2.1.0",
- "eslint-scope": "^3.7.1",
- "eslint-visitor-keys": "^1.0.0",
- "espree": "^3.5.4",
- "esquery": "^1.0.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
"esutils": "^2.0.2",
- "file-entry-cache": "^2.0.0",
+ "file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
- "glob": "^7.1.2",
- "globals": "^11.0.1",
- "ignore": "^3.3.3",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^3.0.6",
- "is-resolvable": "^1.0.0",
- "js-yaml": "^3.9.1",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
- "lodash": "^4.17.4",
- "minimatch": "^3.0.2",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "optionator": "^0.8.2",
- "path-is-inside": "^1.0.2",
- "pluralize": "^7.0.0",
+ "optionator": "^0.8.3",
"progress": "^2.0.0",
- "regexpp": "^1.0.1",
- "require-uncached": "^1.0.3",
- "semver": "^5.3.0",
- "strip-ansi": "^4.0.0",
- "strip-json-comments": "~2.0.1",
- "table": "4.0.2",
- "text-table": "~0.2.0"
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
},
"dependencies": {
- "ansi-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==",
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
- "peer": true
- },
- "chardet": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
- "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
- "dev": true,
- "peer": true
- },
- "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=",
- "dev": true,
- "peer": true,
"requires": {
- "restore-cursor": "^2.0.0"
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
- "cli-width": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
- "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
- "peer": true
- },
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "peer": true,
"requires": {
- "ms": "^2.1.1"
+ "esutils": "^2.0.2"
}
},
- "external-editor": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
- "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
"dev": true,
- "peer": true,
"requires": {
- "chardet": "^0.4.0",
- "iconv-lite": "^0.4.17",
- "tmp": "^0.0.33"
+ "eslint-visitor-keys": "^1.1.0"
}
},
- "figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
- "peer": true,
"requires": {
- "escape-string-regexp": "^1.0.5"
+ "is-glob": "^4.0.1"
}
},
- "inquirer": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
- "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
"dev": true,
- "peer": true,
"requires": {
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.0",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^2.0.4",
- "figures": "^2.0.0",
- "lodash": "^4.3.0",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rx-lite": "^4.0.8",
- "rx-lite-aggregates": "^4.0.8",
- "string-width": "^2.1.0",
- "strip-ansi": "^4.0.0",
- "through": "^2.3.6"
+ "type-fest": "^0.8.1"
}
},
- "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,
- "peer": true
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
},
- "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==",
- "dev": true,
- "peer": true
- },
- "mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
- "dev": true,
- "peer": true
- },
- "onetime": {
+ "path-key": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
- "peer": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "shebang-regex": "^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=",
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "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,
- "peer": true,
"requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
+ "ansi-regex": "^4.1.0"
}
},
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "peer": true
+ "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
},
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
- "peer": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "isexe": "^2.0.0"
}
}
}
@@ -44515,6 +41386,15 @@
"eslint-restricted-globals": "^0.1.1"
}
},
+ "eslint-config-react-app": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz",
+ "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==",
+ "dev": true,
+ "requires": {
+ "confusing-browser-globals": "^1.0.9"
+ }
+ },
"eslint-import-resolver-babel-module": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-4.0.0.tgz",
@@ -44552,6 +41432,47 @@
}
}
},
+ "eslint-loader": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz",
+ "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==",
+ "dev": true,
+ "requires": {
+ "fs-extra": "^8.1.0",
+ "loader-fs-cache": "^1.0.2",
+ "loader-utils": "^1.2.3",
+ "object-hash": "^2.0.1",
+ "schema-utils": "^2.6.1"
+ },
+ "dependencies": {
+ "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==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ }
+ }
+ },
"eslint-module-utils": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
@@ -44620,6 +41541,12 @@
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
},
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
"pkg-dir": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
@@ -44631,6 +41558,15 @@
}
}
},
+ "eslint-plugin-flowtype": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz",
+ "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
"eslint-plugin-import": {
"version": "2.22.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz",
@@ -44661,14 +41597,23 @@
"ms": "2.0.0"
}
},
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
}
},
"ms": {
@@ -44676,6 +41621,72 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "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-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
}
}
},
@@ -44699,9 +41710,9 @@
}
},
"eslint-plugin-react": {
- "version": "7.23.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz",
- "integrity": "sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz",
+ "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==",
"dev": true,
"requires": {
"array-includes": "^3.1.3",
@@ -44718,6 +41729,15 @@
"string.prototype.matchall": "^4.0.4"
},
"dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
"resolve": {
"version": "2.0.0-next.3",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
@@ -44734,8 +41754,7 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz",
"integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"eslint-restricted-globals": {
"version": "0.1.1",
@@ -44744,13 +41763,12 @@
"dev": true
},
"eslint-scope": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz",
- "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
- "peer": true,
"requires": {
- "esrecurse": "^4.1.0",
+ "esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
}
},
@@ -44770,14 +41788,14 @@
"dev": true
},
"espree": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
- "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
"dev": true,
- "peer": true,
"requires": {
- "acorn": "^5.5.0",
- "acorn-jsx": "^3.0.0"
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
}
},
"esprima": {
@@ -44900,11 +41918,41 @@
"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=",
+ "dev": true
+ },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
}
}
},
@@ -44958,6 +42006,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-data-descriptor": {
@@ -44967,6 +42026,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-descriptor": {
@@ -44978,16 +42048,14 @@
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
}
},
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -45160,11 +42228,6 @@
"object-keys": "^1.0.6"
},
"dependencies": {
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
- },
"isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
@@ -45296,9 +42359,9 @@
"integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
},
"fecha": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
- "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
+ "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==",
"dev": true
},
"figgy-pudding": {
@@ -45317,14 +42380,12 @@
}
},
"file-entry-cache": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
- "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
"dev": true,
- "peer": true,
"requires": {
- "flat-cache": "^1.2.1",
- "object-assign": "^4.0.1"
+ "flat-cache": "^2.0.1"
}
},
"file-loader": {
@@ -45337,31 +42398,6 @@
"schema-utils": "^3.0.0"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -45427,15 +42463,6 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true
},
- "filelist": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
- "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
- "dev": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
"filesize": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz",
@@ -45486,26 +42513,6 @@
}
}
},
- "find-babel-config": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
- "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
- "dev": true,
- "peer": true,
- "requires": {
- "json5": "^0.5.1",
- "path-exists": "^3.0.0"
- },
- "dependencies": {
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true,
- "peer": true
- }
- }
- },
"find-cache-dir": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
@@ -45545,6 +42552,12 @@
"p-limit": "^2.0.0"
}
},
+ "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
+ },
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -45563,21 +42576,13 @@
"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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"requires": {
- "locate-path": "^5.0.0",
+ "locate-path": "^6.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==",
- "dev": true
- }
}
},
"findup-sync": {
@@ -45621,12 +42626,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -45651,16 +42650,14 @@
}
},
"flat-cache": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
- "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
"dev": true,
- "peer": true,
"requires": {
- "circular-json": "^0.3.1",
- "graceful-fs": "^4.1.2",
- "rimraf": "~2.6.2",
- "write": "^0.2.1"
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
},
"dependencies": {
"rimraf": {
@@ -45668,7 +42665,6 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"dev": true,
- "peer": true,
"requires": {
"glob": "^7.1.3"
}
@@ -45701,6 +42697,32 @@
"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==",
+ "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"
+ }
+ }
}
},
"flux": {
@@ -45719,9 +42741,9 @@
"dev": true
},
"follow-redirects": {
- "version": "1.13.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
- "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==",
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz",
+ "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==",
"dev": true
},
"for-in": {
@@ -45731,9 +42753,9 @@
"dev": true
},
"for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"dev": true,
"requires": {
"for-in": "^1.0.1"
@@ -45751,80 +42773,106 @@
"dev": true
},
"fork-ts-checker-webpack-plugin": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
- "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+ "version": "6.2.6",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.6.tgz",
+ "integrity": "sha512-f/oF2BFFPKEWQ3wgfq4bWALSDm7+f21shVONplo1xHKs1IdMfdmDa/aREgEurkIyrsyMFed42W7NVp4mh4DXzg==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.5.5",
- "chalk": "^2.4.1",
- "micromatch": "^3.1.10",
+ "@babel/code-frame": "^7.8.3",
+ "@types/json-schema": "^7.0.5",
+ "chalk": "^4.1.0",
+ "chokidar": "^3.4.2",
+ "cosmiconfig": "^6.0.0",
+ "deepmerge": "^4.2.2",
+ "fs-extra": "^9.0.0",
+ "glob": "^7.1.6",
+ "memfs": "^3.1.2",
"minimatch": "^3.0.4",
- "semver": "^5.6.0",
- "tapable": "^1.0.0",
- "worker-rpc": "^0.1.0"
+ "schema-utils": "2.7.0",
+ "semver": "^7.3.2",
+ "tapable": "^1.0.0"
},
"dependencies": {
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "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": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
+ "color-convert": "^2.0.1"
}
},
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "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==",
+ "cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "@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"
}
},
- "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==",
+ "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
},
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
+ "yallist": "^4.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+ "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.4",
+ "ajv": "^6.12.2",
+ "ajv-keywords": "^3.4.1"
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
@@ -45875,6 +42923,32 @@
"requires": {
"inherits": "^2.0.1",
"readable-stream": "^2.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==",
+ "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"
+ }
+ }
}
},
"fs-extra": {
@@ -45898,6 +42972,12 @@
"minipass": "^3.0.0"
}
},
+ "fs-monkey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
+ "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
+ "dev": true
+ },
"fs-readdir-recursive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
@@ -45979,12 +43059,6 @@
"wide-align": "^1.1.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -46004,15 +43078,6 @@
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
}
}
},
@@ -46183,11 +43248,14 @@
"which": "^1.3.1"
},
"dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
}
}
},
@@ -46292,32 +43360,12 @@
"requires": {
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
- },
- "dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- }
}
},
"harmony-reflect": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz",
- "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
+ "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==",
"dev": true
},
"has": {
@@ -46451,6 +43499,15 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
}
}
},
@@ -46496,9 +43553,9 @@
"dev": true
},
"highlight.js": {
- "version": "10.7.1",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.1.tgz",
- "integrity": "sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA=="
+ "version": "10.7.2",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz",
+ "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg=="
},
"history": {
"version": "4.10.1",
@@ -46539,17 +43596,6 @@
}
}
},
- "home-or-tmp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
- "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
- "dev": true,
- "peer": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.1"
- }
- },
"homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -46566,9 +43612,9 @@
"dev": true
},
"hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+ "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
},
"hpack.js": {
@@ -46581,6 +43627,32 @@
"obuf": "^1.0.0",
"readable-stream": "^2.0.1",
"wbuf": "^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==",
+ "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"
+ }
+ }
}
},
"hsl-regex": {
@@ -46595,12 +43667,6 @@
"integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
"dev": true
},
- "html-comment-regex": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
- "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
- "dev": true
- },
"html-encoding-sniffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
@@ -46681,9 +43747,9 @@
}
},
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
}
}
@@ -46756,27 +43822,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
}
}
},
@@ -46865,12 +43910,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -46927,34 +43966,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.14"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
- }
}
},
"identity-obj-proxy": {
@@ -47077,6 +44088,12 @@
"p-limit": "^2.0.0"
}
},
+ "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
+ },
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -47103,7 +44120,8 @@
"indexes-of": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+ "dev": true
},
"infer-owner": {
"version": "1.0.4",
@@ -47174,30 +44192,15 @@
}
},
"chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"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"
- }
- },
- "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==",
- "dev": true
- },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -47290,14 +44293,6 @@
"dev": true,
"requires": {
"kind-of": "^6.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
}
},
"is-alphabetical": {
@@ -47390,9 +44385,9 @@
}
},
"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==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz",
+ "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==",
"requires": {
"has": "^1.0.3"
}
@@ -47404,14 +44399,6 @@
"dev": true,
"requires": {
"kind-of": "^6.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
}
},
"is-date-object": {
@@ -47434,14 +44421,6 @@
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
}
},
"is-directory": {
@@ -47451,9 +44430,9 @@
"dev": true
},
"is-docker": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
- "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true
},
"is-extendable": {
@@ -47468,13 +44447,6 @@
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
- "is-finite": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
- "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
- "dev": true,
- "peer": true
- },
"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",
@@ -47527,6 +44499,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-number-object": {
@@ -47625,15 +44608,6 @@
"integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
"dev": true
},
- "is-svg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
- "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
- "dev": true,
- "requires": {
- "html-comment-regex": "^1.1.0"
- }
- },
"is-symbol": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
@@ -47776,18 +44750,6 @@
"iterate-iterator": "^1.0.1"
}
},
- "jake": {
- "version": "10.8.2",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
- "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
- "dev": true,
- "requires": {
- "async": "0.9.x",
- "chalk": "^2.4.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- }
- },
"jest": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz",
@@ -47881,6 +44843,12 @@
"p-limit": "^2.0.0"
}
},
+ "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
+ },
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -47996,12 +44964,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -48234,12 +45196,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -48354,12 +45310,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -48396,8 +45346,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
"integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"jest-regex-util": {
"version": "24.9.0",
@@ -48538,6 +45487,12 @@
"p-limit": "^2.0.0"
}
},
+ "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
+ },
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -48820,6 +45775,12 @@
"xml-name-validator": "^3.0.0"
},
"dependencies": {
+ "acorn": {
+ "version": "5.7.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+ "dev": true
+ },
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
@@ -48847,18 +45808,6 @@
"minimatch": "~3.0.2",
"shelljs": "0.3.x",
"strip-json-comments": "1.0.x"
- },
- "dependencies": {
- "shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
- "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E="
- },
- "strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E="
- }
}
},
"json-parse-better-errors": {
@@ -48880,11 +45829,10 @@
"dev": true
},
"json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true,
- "peer": true
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"json-stable-stringify": {
"version": "1.0.1",
@@ -48984,13 +45932,10 @@
"dev": true
},
"kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
},
"klaw": {
"version": "1.3.1",
@@ -49007,6 +45952,12 @@
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true
},
+ "klona": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz",
+ "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==",
+ "dev": true
+ },
"koalas": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz",
@@ -49219,12 +46170,12 @@
}
},
"locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"requires": {
- "p-locate": "^4.1.0"
+ "p-locate": "^5.0.0"
}
},
"lodash": {
@@ -49462,19 +46413,9 @@
}
},
"markdown-to-jsx": {
- "version": "6.11.4",
- "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz",
- "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==",
- "dev": true,
- "requires": {
- "prop-types": "^15.6.2",
- "unquote": "^1.1.0"
- }
- },
- "material-colors": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
- "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.2.tgz",
+ "integrity": "sha512-O8DMCl32V34RrD+ZHxcAPc2+kYytuDIoQYjY36RVdsLK7uHjgNVvFec4yv0X6LgB4YEZgSvK5QtFi5YVqEpoMA==",
"dev": true
},
"math-expression-evaluator": {
@@ -49511,6 +46452,15 @@
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"dev": true
},
+ "memfs": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.2.tgz",
+ "integrity": "sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==",
+ "dev": true,
+ "requires": {
+ "fs-monkey": "1.0.3"
+ }
+ },
"memoizerific": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz",
@@ -49528,6 +46478,32 @@
"requires": {
"errno": "^0.1.3",
"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==",
+ "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"
+ }
+ }
}
},
"merge-deep": {
@@ -49554,13 +46530,13 @@
"shallow-clone": "^0.1.2"
}
},
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "for-in": "^1.0.1"
+ "is-buffer": "^1.1.5"
}
},
"lazy-cache": {
@@ -49646,13 +46622,13 @@
"dev": true
},
"micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
"dev": true,
"requires": {
"braces": "^3.0.1",
- "picomatch": "^2.0.5"
+ "picomatch": "^2.2.3"
},
"dependencies": {
"braces": {
@@ -49715,18 +46691,18 @@
"dev": true
},
"mime-db": {
- "version": "1.46.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
- "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
+ "version": "1.47.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
+ "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==",
"dev": true
},
"mime-types": {
- "version": "2.1.29",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
- "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
+ "version": "2.1.30",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz",
+ "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==",
"dev": true,
"requires": {
- "mime-db": "1.46.0"
+ "mime-db": "1.47.0"
}
},
"mimic-fn": {
@@ -49762,31 +46738,6 @@
"webpack-sources": "^1.1.0"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -49843,14 +46794,6 @@
"through2": "^3.0.1",
"xml": "^1.0.0",
"xml2js": "^0.4.15"
- },
- "dependencies": {
- "async": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
- "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
- "dev": true
- }
}
},
"minipass": {
@@ -49933,6 +46876,30 @@
"through2": "^2.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==",
+ "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"
+ }
+ },
"through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -49994,15 +46961,14 @@
}
},
"mobx": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.1.8.tgz",
- "integrity": "sha512-U4yCvUeh6yKXRwFxm2lyJjXPVekOEar/R8ZKWAXem/3fthJqYflViawfjDAUh7lZEvbKqljC3NT/pSaUKpE+gg=="
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.0.tgz",
+ "integrity": "sha512-Aa1+VXsg4WxqJMTQfWoYuJi5UD10VZhiobSmcs5kcmI3BIT0aVtn7DysvCeDADCzl7dnbX+0BTHUj/v7gLlZpQ=="
},
"mobx-react-lite": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz",
- "integrity": "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==",
- "requires": {}
+ "integrity": "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g=="
},
"moment": {
"version": "2.29.1",
@@ -50121,12 +47087,6 @@
"requires": {
"is-plain-object": "^2.0.4"
}
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
}
}
},
@@ -50266,6 +47226,49 @@
"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"
+ }
+ }
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ }
+ }
+ },
"url": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
@@ -50316,6 +47319,15 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
}
}
},
@@ -50365,18 +47377,6 @@
"prepend-http": "^1.0.0",
"query-string": "^4.1.0",
"sort-keys": "^1.0.0"
- },
- "dependencies": {
- "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"
- }
- }
}
},
"normalize.css": {
@@ -50391,6 +47391,14 @@
"dev": true,
"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=",
+ "dev": true
+ }
}
},
"npmlog": {
@@ -50498,6 +47506,15 @@
"dev": true
}
}
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
}
}
},
@@ -50507,9 +47524,9 @@
"integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ=="
},
"object-inspect": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
- "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==",
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz",
+ "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==",
"dev": true
},
"object-is": {
@@ -50740,13 +47757,6 @@
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true,
- "peer": true
- },
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -50827,12 +47837,23 @@
}
},
"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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"requires": {
- "p-limit": "^2.2.0"
+ "p-limit": "^3.0.2"
+ },
+ "dependencies": {
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ }
}
},
"p-map": {
@@ -50889,6 +47910,32 @@
"cyclist": "^1.0.1",
"inherits": "^2.0.3",
"readable-stream": "^2.1.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==",
+ "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"
+ }
+ }
}
},
"param-case": {
@@ -51006,9 +48053,9 @@
}
},
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
}
}
@@ -51032,9 +48079,9 @@
"dev": true
},
"path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
},
"path-is-absolute": {
@@ -51049,9 +48096,9 @@
"dev": true
},
"path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
"path-parse": {
@@ -51072,9 +48119,9 @@
"dev": true
},
"pbkdf2": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
- "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
+ "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",
@@ -51090,9 +48137,9 @@
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
+ "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
"dev": true
},
"pify": {
@@ -51126,12 +48173,12 @@
}
},
"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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
"dev": true,
"requires": {
- "find-up": "^4.0.0"
+ "find-up": "^5.0.0"
}
},
"pkg-up": {
@@ -51185,16 +48232,15 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
}
}
},
- "pluralize": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
- "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
- "dev": true,
- "peer": true
- },
"pn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
@@ -51217,12 +48263,12 @@
"dev": true
},
"polished": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/polished/-/polished-3.7.1.tgz",
- "integrity": "sha512-/QgHrNGYwIA4mwxJ/7FSvalUJsm7KNfnXiScVSEG2Xa5qxDeBn4nmdjN2pW00mkM2Tts64ktc47U8F7Ed1BRAA==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.2.tgz",
+ "integrity": "sha512-jq4t3PJUpVRcveC53nnbEX35VyQI05x3tniwp26WFdm1dwaNUBHAi5awa/roBlwQxx1uRhwNSYeAi/aMbfiJCQ==",
"dev": true,
"requires": {
- "@babel/runtime": "^7.12.5"
+ "@babel/runtime": "^7.13.17"
}
},
"popper.js": {
@@ -51268,19 +48314,27 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "7.0.35",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
+ "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
"requires": {
- "chalk": "^2.4.1",
+ "chalk": "^2.4.2",
"source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "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=="
+ },
+ "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"
+ }
}
}
},
@@ -51292,34 +48346,6 @@
"requires": {
"postcss": "^7.0.2",
"postcss-selector-parser": "^6.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-browser-comments": {
@@ -51329,34 +48355,6 @@
"dev": true,
"requires": {
"postcss": "^7"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-calc": {
@@ -51370,37 +48368,11 @@
"postcss-value-parser": "^4.0.2"
},
"dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"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
- },
- "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"
- }
}
}
},
@@ -51412,34 +48384,6 @@
"requires": {
"postcss": "^7.0.2",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-color-gray": {
@@ -51451,34 +48395,6 @@
"@csstools/convert-colors": "^1.4.0",
"postcss": "^7.0.5",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-color-hex-alpha": {
@@ -51489,34 +48405,6 @@
"requires": {
"postcss": "^7.0.14",
"postcss-values-parser": "^2.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-color-mod-function": {
@@ -51528,34 +48416,6 @@
"@csstools/convert-colors": "^1.4.0",
"postcss": "^7.0.2",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-color-rebeccapurple": {
@@ -51566,34 +48426,6 @@
"requires": {
"postcss": "^7.0.2",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-colormin": {
@@ -51607,34 +48439,6 @@
"has": "^1.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-convert-values": {
@@ -51645,34 +48449,6 @@
"requires": {
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-custom-media": {
@@ -51682,34 +48458,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.14"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-custom-properties": {
@@ -51720,34 +48468,6 @@
"requires": {
"postcss": "^7.0.17",
"postcss-values-parser": "^2.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-custom-selectors": {
@@ -51766,17 +48486,6 @@
"integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
"dev": true
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -51787,21 +48496,6 @@
"indexes-of": "^1.0.1",
"uniq": "^1.0.1"
}
- },
- "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"
- }
}
}
},
@@ -51821,17 +48515,6 @@
"integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
"dev": true
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -51842,21 +48525,6 @@
"indexes-of": "^1.0.1",
"uniq": "^1.0.1"
}
- },
- "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"
- }
}
}
},
@@ -51867,34 +48535,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-discard-duplicates": {
@@ -51904,34 +48544,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-discard-empty": {
@@ -51941,34 +48553,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-discard-overridden": {
@@ -51978,34 +48562,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-double-position-gradients": {
@@ -52016,34 +48572,6 @@
"requires": {
"postcss": "^7.0.5",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-env-function": {
@@ -52054,34 +48582,6 @@
"requires": {
"postcss": "^7.0.2",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-flexbugs-fixes": {
@@ -52091,34 +48591,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.26"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-focus-visible": {
@@ -52128,34 +48600,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-focus-within": {
@@ -52165,34 +48609,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-font-variant": {
@@ -52202,34 +48618,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-functions": {
@@ -52241,6 +48629,23 @@
"object-assign": "^4.1.1",
"postcss": "^6.0.9",
"postcss-value-parser": "^3.3.0"
+ },
+ "dependencies": {
+ "postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "requires": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
}
},
"postcss-gap-properties": {
@@ -52250,34 +48655,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-image-set-function": {
@@ -52288,34 +48665,6 @@
"requires": {
"postcss": "^7.0.2",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-import": {
@@ -52328,72 +48677,15 @@
"postcss-value-parser": "^3.2.3",
"read-cache": "^1.0.0",
"resolve": "^1.1.7"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-initial": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz",
- "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz",
+ "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==",
"dev": true,
"requires": {
- "lodash.template": "^4.5.0",
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-inline-svg": {
@@ -52433,6 +48725,17 @@
"readable-stream": "^3.1.1"
}
},
+ "postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ }
+ },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -52443,6 +48746,27 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
+ },
+ "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
+ },
+ "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
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
}
}
},
@@ -52453,31 +48777,6 @@
"requires": {
"camelcase-css": "^2.0.1",
"postcss": "^7.0.18"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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": "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"
- }
- }
}
},
"postcss-lab-function": {
@@ -52489,34 +48788,6 @@
"@csstools/convert-colors": "^1.4.0",
"postcss": "^7.0.2",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-load-config": {
@@ -52529,15 +48800,6 @@
"import-cwd": "^2.0.0"
},
"dependencies": {
- "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"
- }
- },
"cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -52590,42 +48852,6 @@
"schema-utils": "^1.0.0"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -52636,21 +48862,6 @@
"ajv-errors": "^1.0.0",
"ajv-keywords": "^3.1.0"
}
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
}
}
},
@@ -52661,34 +48872,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-media-minmax": {
@@ -52698,34 +48881,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-merge-longhand": {
@@ -52738,34 +48893,6 @@
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0",
"stylehacks": "^4.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-merge-rules": {
@@ -52782,17 +48909,6 @@
"vendors": "^1.0.0"
},
"dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-selector-parser": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
@@ -52803,21 +48919,6 @@
"indexes-of": "^1.0.1",
"uniq": "^1.0.1"
}
- },
- "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"
- }
}
}
},
@@ -52829,34 +48930,6 @@
"requires": {
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-minify-gradients": {
@@ -52869,34 +48942,6 @@
"is-color-stop": "^1.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-minify-params": {
@@ -52911,34 +48956,6 @@
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0",
"uniqs": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-minify-selectors": {
@@ -52953,17 +48970,6 @@
"postcss-selector-parser": "^3.0.0"
},
"dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-selector-parser": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
@@ -52974,21 +48980,6 @@
"indexes-of": "^1.0.1",
"uniq": "^1.0.1"
}
- },
- "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"
- }
}
}
},
@@ -53085,12 +49076,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -53121,17 +49106,6 @@
"pify": "^3.0.0"
}
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-simple-vars": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz",
@@ -53146,21 +49120,6 @@
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
"dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
}
}
},
@@ -53171,34 +49130,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.5"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
}
},
"postcss-modules-local-by-default": {
@@ -53213,37 +49144,11 @@
"postcss-value-parser": "^4.1.0"
},
"dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"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
- },
- "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"
- }
}
}
},
@@ -53255,34 +49160,6 @@
"requires": {
"postcss": "^7.0.6",
"postcss-selector-parser": "^6.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
}
},
"postcss-modules-values": {
@@ -53293,34 +49170,6 @@
"requires": {
"icss-utils": "^4.0.0",
"postcss": "^7.0.6"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-nested": {
@@ -53330,31 +49179,6 @@
"requires": {
"postcss": "^7.0.32",
"postcss-selector-parser": "^6.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "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": "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"
- }
- }
}
},
"postcss-nesting": {
@@ -53364,6 +49188,25 @@
"dev": true,
"requires": {
"postcss": "^6.0.11"
+ },
+ "dependencies": {
+ "postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
}
},
"postcss-normalize": {
@@ -53377,34 +49220,6 @@
"postcss": "^7.0.17",
"postcss-browser-comments": "^3.0.0",
"sanitize.css": "^10.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-charset": {
@@ -53414,34 +49229,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-display-values": {
@@ -53453,34 +49240,6 @@
"cssnano-util-get-match": "^4.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-positions": {
@@ -53493,34 +49252,6 @@
"has": "^1.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-repeat-style": {
@@ -53533,34 +49264,6 @@
"cssnano-util-get-match": "^4.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-string": {
@@ -53572,34 +49275,6 @@
"has": "^1.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-timing-functions": {
@@ -53611,34 +49286,6 @@
"cssnano-util-get-match": "^4.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-unicode": {
@@ -53650,34 +49297,6 @@
"browserslist": "^4.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-normalize-url": {
@@ -53697,32 +49316,6 @@
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
"integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
"dev": true
- },
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
}
}
},
@@ -53734,34 +49327,6 @@
"requires": {
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-ordered-values": {
@@ -53773,34 +49338,6 @@
"cssnano-util-get-arguments": "^4.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-overflow-shorthand": {
@@ -53810,34 +49347,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-page-break": {
@@ -53847,34 +49356,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-place": {
@@ -53885,34 +49366,6 @@
"requires": {
"postcss": "^7.0.2",
"postcss-values-parser": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-preset-env": {
@@ -53975,17 +49428,6 @@
"postcss-value-parser": "^4.1.0"
}
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-nesting": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
@@ -54000,21 +49442,6 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
"dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
}
}
},
@@ -54034,17 +49461,6 @@
"integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
"dev": true
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-selector-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
@@ -54055,21 +49471,6 @@
"indexes-of": "^1.0.1",
"uniq": "^1.0.1"
}
- },
- "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"
- }
}
}
},
@@ -54083,34 +49484,6 @@
"caniuse-api": "^3.0.0",
"has": "^1.0.0",
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-reduce-transforms": {
@@ -54123,34 +49496,6 @@
"has": "^1.0.0",
"postcss": "^7.0.0",
"postcss-value-parser": "^3.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-replace-overflow-wrap": {
@@ -54160,34 +49505,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-safe-parser": {
@@ -54197,34 +49514,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-selector-matches": {
@@ -54235,34 +49524,6 @@
"requires": {
"balanced-match": "^1.0.0",
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-selector-not": {
@@ -54273,44 +49534,14 @@
"requires": {
"balanced-match": "^1.0.0",
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-selector-parser": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
- "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz",
+ "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==",
"requires": {
"cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1",
"util-deprecate": "^1.0.2"
}
},
@@ -54321,29 +49552,17 @@
"dev": true,
"requires": {
"postcss": "^6.0.9"
- }
- },
- "postcss-svgo": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
- "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
- "dev": true,
- "requires": {
- "is-svg": "^3.0.0",
- "postcss": "^7.0.0",
- "postcss-value-parser": "^3.0.0",
- "svgo": "^1.0.0"
},
"dependencies": {
"postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
+ "chalk": "^2.4.1",
"source-map": "^0.6.1",
- "supports-color": "^6.1.0"
+ "supports-color": "^5.4.0"
}
},
"source-map": {
@@ -54351,18 +49570,20 @@
"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-svgo": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
+ "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.0.0"
+ }
+ },
"postcss-unique-selectors": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
@@ -54372,34 +49593,6 @@
"alphanum-sort": "^1.0.0",
"postcss": "^7.0.0",
"uniqs": "^2.0.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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-value-parser": {
@@ -54479,13 +49672,6 @@
"clipboard": "^2.0.0"
}
},
- "private": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
- "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
- "dev": true,
- "peer": true
- },
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -54620,17 +49806,6 @@
"toggle-array": "^1.0.1"
},
"dependencies": {
- "clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- }
- },
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -54646,21 +49821,6 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-6.0.0.tgz",
"integrity": "sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==",
"dev": true
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- }
}
}
},
@@ -54689,6 +49849,18 @@
"prompt-choices": "^4.0.5"
},
"dependencies": {
+ "clone-deep": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz",
+ "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==",
+ "dev": true,
+ "requires": {
+ "for-own": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^5.0.0",
+ "shallow-clone": "^1.0.0"
+ }
+ },
"debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
@@ -54698,18 +49870,38 @@
"ms": "^2.1.1"
}
},
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
"dev": true
+ },
+ "shallow-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
+ "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.1",
+ "kind-of": "^5.0.0",
+ "mixin-object": "^2.0.1"
+ }
}
}
},
"prompts": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz",
- "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz",
+ "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==",
"dev": true,
"requires": {
"kleur": "^3.0.3",
@@ -54758,13 +49950,6 @@
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
},
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true,
- "peer": true
- },
"psl": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -54893,6 +50078,16 @@
"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",
@@ -54927,6 +50122,28 @@
"through2": "^2.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",
@@ -55010,31 +50227,6 @@
"schema-utils": "^3.0.0"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -55194,37 +50386,25 @@
}
},
"react-circular-progressbar": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.3.tgz",
- "integrity": "sha512-YKN+xAShXA3gYihevbQZbavfiJxo83Dt1cUxqg/cltj4VVsRQpDr7Fg1mvjDG3x1KHGtd9NmYKvJ2mMrPwbKyw==",
- "requires": {}
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.0.4.tgz",
+ "integrity": "sha512-OfX0ThSxRYEVGaQSt0DlXfyl5w4DbXHsXetyeivmoQrh9xA9bzVPHNf8aAhOIiwiaxX2WYWpLDB3gcpsDJ9oww=="
},
"react-codemirror2": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/react-codemirror2/-/react-codemirror2-5.1.0.tgz",
- "integrity": "sha512-Cksbgbviuf2mJfMyrKmcu7ycK6zX/ukuQO8dvRZdFWqATf5joalhjFc6etnBdGCcPA2LbhIwz+OPnQxLN/j1Fw==",
- "requires": {}
+ "integrity": "sha512-Cksbgbviuf2mJfMyrKmcu7ycK6zX/ukuQO8dvRZdFWqATf5joalhjFc6etnBdGCcPA2LbhIwz+OPnQxLN/j1Fw=="
},
- "react-color": {
- "version": "2.19.3",
- "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz",
- "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==",
- "dev": true,
- "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-colorful": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.1.4.tgz",
+ "integrity": "sha512-WOEpRNz8Oo2SEU4eYQ279jEKFSjpFPa9Vi2U/K0DGwP9wOQ8wYkJcNSd5Qbv1L8OFvyKDCbWekjftXaU5mbmtg==",
+ "dev": true
},
"react-confirm": {
"version": "0.1.23",
"resolved": "https://registry.npmjs.org/react-confirm/-/react-confirm-0.1.23.tgz",
- "integrity": "sha512-G853O0XapIQXF0bx2iFWBLgGIzCu2ZjGJWJp0IFMNoim89yh/cz6i/xcSM/N8zKLWIvrVAWm/Zn/w3d5E7uv3g==",
- "requires": {}
+ "integrity": "sha512-G853O0XapIQXF0bx2iFWBLgGIzCu2ZjGJWJp0IFMNoim89yh/cz6i/xcSM/N8zKLWIvrVAWm/Zn/w3d5E7uv3g=="
},
"react-datepicker": {
"version": "2.16.0",
@@ -55323,15 +50503,14 @@
"node-releases": "^1.1.61"
}
},
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
"dev": true,
"requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
}
},
"dir-glob": {
@@ -55349,6 +50528,41 @@
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true
},
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "fork-ts-checker-webpack-plugin": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+ "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "chalk": "^2.4.1",
+ "micromatch": "^3.1.10",
+ "minimatch": "^3.0.4",
+ "semver": "^5.6.0",
+ "tapable": "^1.0.0",
+ "worker-rpc": "^0.1.0"
+ }
+ },
"globby": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz",
@@ -55369,6 +50583,15 @@
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
"dev": true
},
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -55381,30 +50604,44 @@
}
},
"locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^4.1.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
}
},
"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==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "^2.2.0"
}
},
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
"pkg-up": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
@@ -55422,22 +50659,48 @@
"requires": {
"locate-path": "^3.0.0"
}
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-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"
+ }
+ },
+ "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
}
}
},
- "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==",
+ "prompts": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz",
+ "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
"dev": true,
"requires": {
- "shebang-regex": "^3.0.0"
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
}
},
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
"slash": {
@@ -55454,15 +50717,6 @@
"requires": {
"ansi-regex": "^5.0.0"
}
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
}
}
},
@@ -55528,11 +50782,10 @@
}
},
"react-docgen-typescript": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.21.0.tgz",
- "integrity": "sha512-E4y/OcXwHukgiVafCGlxwoNHr4BDmM70Ww7oimL/QkMo5dmGALhceewe/xmVjdMxxI7E5syOGOc9/tbHL742rg==",
- "dev": true,
- "requires": {}
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.22.0.tgz",
+ "integrity": "sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg==",
+ "dev": true
},
"react-docgen-typescript-plugin": {
"version": "0.6.3",
@@ -55548,9 +50801,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"dev": true
}
}
@@ -55618,15 +50871,6 @@
"highlight.js": "^10.5.0"
}
},
- "react-hotkeys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/react-hotkeys/-/react-hotkeys-2.0.0.tgz",
- "integrity": "sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q==",
- "dev": true,
- "requires": {
- "prop-types": "^15.6.1"
- }
- },
"react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -55670,8 +50914,7 @@
"react-lazyload": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/react-lazyload/-/react-lazyload-3.2.0.tgz",
- "integrity": "sha512-zJlrG8QyVZz4+xkYZH5v1w3YaP5wEFaYSUWC4CT9UXfK75IfRAIEdnyIUF+dXr3kX2MOtL1lUaZmaQZqrETwgw==",
- "requires": {}
+ "integrity": "sha512-zJlrG8QyVZz4+xkYZH5v1w3YaP5wEFaYSUWC4CT9UXfK75IfRAIEdnyIUF+dXr3kX2MOtL1lUaZmaQZqrETwgw=="
},
"react-lifecycles-compat": {
"version": "3.0.4",
@@ -55681,8 +50924,7 @@
"react-onclickoutside": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz",
- "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==",
- "requires": {}
+ "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ=="
},
"react-popper": {
"version": "1.3.11",
@@ -55710,9 +50952,9 @@
},
"dependencies": {
"react-popper": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz",
- "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==",
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz",
+ "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==",
"dev": true,
"requires": {
"react-fast-compare": "^3.0.1",
@@ -55914,30 +51156,6 @@
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
"dev": true
},
- "@typescript-eslint/eslint-plugin": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
- "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==",
- "dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "2.34.0",
- "functional-red-black-tree": "^1.0.1",
- "regexpp": "^3.0.0",
- "tsutils": "^3.17.1"
- }
- },
- "@typescript-eslint/parser": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz",
- "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==",
- "dev": true,
- "requires": {
- "@types/eslint-visitor-keys": "^1.0.0",
- "@typescript-eslint/experimental-utils": "2.34.0",
- "@typescript-eslint/typescript-estree": "2.34.0",
- "eslint-visitor-keys": "^1.1.0"
- }
- },
"@webassemblyjs/ast": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
@@ -56115,37 +51333,11 @@
}
},
"acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
"dev": true
},
- "acorn-jsx": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
- "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
"aria-query": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
@@ -56211,17 +51403,6 @@
"rimraf": "^2.7.1",
"ssri": "^7.0.0",
"unique-filename": "^1.1.1"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
}
},
"case-sensitive-paths-webpack-plugin": {
@@ -56257,6 +51438,15 @@
"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"
+ }
}
}
},
@@ -56267,24 +51457,14 @@
"dev": true
},
"cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
+ "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
"dev": true,
"requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
}
},
"css-loader": {
@@ -56351,99 +51531,6 @@
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true
},
- "eslint": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
- "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "ajv": "^6.10.0",
- "chalk": "^2.1.0",
- "cross-spawn": "^6.0.5",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "eslint-scope": "^5.0.0",
- "eslint-utils": "^1.4.3",
- "eslint-visitor-keys": "^1.1.0",
- "espree": "^6.1.2",
- "esquery": "^1.0.1",
- "esutils": "^2.0.2",
- "file-entry-cache": "^5.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.0.0",
- "globals": "^12.1.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "inquirer": "^7.0.0",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.3.0",
- "lodash": "^4.17.14",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "optionator": "^0.8.3",
- "progress": "^2.0.0",
- "regexpp": "^2.0.1",
- "semver": "^6.1.2",
- "strip-ansi": "^5.2.0",
- "strip-json-comments": "^3.0.1",
- "table": "^5.2.3",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "regexpp": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
- "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
- "dev": true
- }
- }
- },
- "eslint-config-react-app": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz",
- "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==",
- "dev": true,
- "requires": {
- "confusing-browser-globals": "^1.0.9"
- }
- },
- "eslint-loader": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz",
- "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==",
- "dev": true,
- "requires": {
- "fs-extra": "^8.1.0",
- "loader-fs-cache": "^1.0.2",
- "loader-utils": "^1.2.3",
- "object-hash": "^2.0.1",
- "schema-utils": "^2.6.1"
- }
- },
- "eslint-plugin-flowtype": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz",
- "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.15"
- }
- },
"eslint-plugin-import": {
"version": "2.20.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz",
@@ -56473,16 +51560,6 @@
"ms": "2.0.0"
}
},
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
- }
- },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -56528,6 +51605,15 @@
"xregexp": "^4.3.0"
},
"dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
"resolve": {
"version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@@ -56541,35 +51627,15 @@
}
},
"eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
"dev": true,
"requires": {
- "esrecurse": "^4.3.0",
+ "esrecurse": "^4.1.0",
"estraverse": "^4.1.1"
}
},
- "eslint-utils": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
- "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "espree": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
- "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
- "dev": true,
- "requires": {
- "acorn": "^7.1.1",
- "acorn-jsx": "^5.2.0",
- "eslint-visitor-keys": "^1.1.0"
- }
- },
"extend-shallow": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
@@ -56592,38 +51658,6 @@
"is-glob": "^4.0.0",
"merge2": "^1.2.3",
"micromatch": "^3.1.10"
- },
- "dependencies": {
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- }
- }
- },
- "file-entry-cache": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
- "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
- "dev": true,
- "requires": {
- "flat-cache": "^2.0.1"
}
},
"file-loader": {
@@ -56642,15 +51676,14 @@
"integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==",
"dev": true
},
- "flat-cache": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
- "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"requires": {
- "flatted": "^2.0.0",
- "rimraf": "2.6.3",
- "write": "1.0.3"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
}
},
"fork-ts-checker-webpack-plugin": {
@@ -56695,24 +51728,6 @@
"dev": true,
"optional": true
},
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globals": {
- "version": "12.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
- "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
- "dev": true,
- "requires": {
- "type-fest": "^0.8.1"
- }
- },
"globby": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
@@ -56728,12 +51743,6 @@
"slash": "^1.0.0"
},
"dependencies": {
- "ignore": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
- "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
- "dev": true
- },
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@@ -56742,6 +51751,12 @@
}
}
},
+ "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
+ },
"html-webpack-plugin": {
"version": "4.0.0-beta.11",
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz",
@@ -56756,12 +51771,6 @@
"util.promisify": "1.0.0"
}
},
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
"immer": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz",
@@ -56787,6 +51796,17 @@
"string-width": "^4.1.0",
"strip-ansi": "^5.1.0",
"through": "^2.3.6"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
}
},
"is-absolute-url": {
@@ -56824,31 +51844,8 @@
"requires": {
"merge-stream": "^2.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==",
- "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"
- }
- }
}
},
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@@ -56868,20 +51865,13 @@
"object.assign": "^4.1.0"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^4.1.0"
}
},
"make-dir": {
@@ -56946,14 +51936,20 @@
}
},
"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==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "^2.2.0"
}
},
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
"path-type": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
@@ -56977,6 +51973,15 @@
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
+ "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==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
"pkg-up": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
@@ -56994,24 +51999,30 @@
"requires": {
"locate-path": "^3.0.0"
}
- }
- }
- },
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "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==",
+ },
+ "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"
+ }
+ },
+ "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
}
}
@@ -57075,17 +52086,6 @@
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
- "cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
"json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
@@ -57106,21 +52106,6 @@
"json5": "^1.0.1"
}
},
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -57129,23 +52114,91 @@
"requires": {
"ansi-regex": "^5.0.0"
}
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
}
}
},
- "regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
- "dev": true
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ },
+ "dependencies": {
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "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
+ }
+ }
},
"resolve": {
"version": "1.15.0",
@@ -57156,38 +52209,12 @@
"path-parse": "^1.0.6"
}
},
- "rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
"dev": true
},
- "slice-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
- "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- }
- },
"sockjs": {
"version": "0.3.20",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
@@ -57251,53 +52278,13 @@
"minipass": "^3.1.1"
}
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "strip-json-comments": {
- "version": "3.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": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "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": "^3.0.0"
- }
- },
- "table": {
- "version": "5.4.6",
- "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
- "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
- "dev": true,
- "requires": {
- "ajv": "^6.10.2",
- "lodash": "^4.17.14",
- "slice-ansi": "^2.1.0",
- "string-width": "^3.0.0"
- },
- "dependencies": {
- "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"
- }
- }
+ "has-flag": "^4.0.0"
}
},
"terser-webpack-plugin": {
@@ -57406,12 +52393,6 @@
"webpack-sources": "^1.4.1"
},
"dependencies": {
- "acorn": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "dev": true
- },
"cacache": {
"version": "12.0.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
@@ -57435,16 +52416,6 @@
"y18n": "^4.0.0"
}
},
- "eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -57463,9 +52434,9 @@
"dev": true
},
"ssri": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
"dev": true,
"requires": {
"figgy-pudding": "^3.5.1"
@@ -57531,12 +52502,6 @@
"yargs": "^13.3.2"
},
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
"chokidar": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
@@ -57568,26 +52533,11 @@
"nan": "^2.12.1"
}
},
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
},
"schema-utils": {
"version": "1.0.0",
@@ -57600,13 +52550,13 @@
"ajv-keywords": "^3.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=",
+ "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": {
- "ansi-regex": "^2.0.0"
+ "has-flag": "^3.0.0"
}
}
}
@@ -57641,18 +52591,18 @@
"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"
+ }
}
}
},
- "write": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
- "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
- "dev": true,
- "requires": {
- "mkdirp": "^0.5.1"
- }
- },
"ws": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
@@ -57689,6 +52639,31 @@
"locate-path": "^3.0.0"
}
},
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-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"
+ }
+ },
+ "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
+ },
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -57699,6 +52674,15 @@
"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"
+ }
}
}
},
@@ -57715,15 +52699,15 @@
}
},
"react-sizeme": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.12.tgz",
- "integrity": "sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-3.0.1.tgz",
+ "integrity": "sha512-9Hf1NLgSbny1bha77l9HwvwwxQUJxFUqi44Ih+y3evA+PezBpGdCGlnvye6avss2cIgs9PgdYgMnfuzJWn/RUw==",
"dev": true,
"requires": {
- "element-resize-detector": "^1.2.1",
+ "element-resize-detector": "^1.2.2",
"invariant": "^2.2.4",
"shallowequal": "^1.1.0",
- "throttle-debounce": "^2.1.0"
+ "throttle-debounce": "^3.0.1"
}
},
"react-smooth": {
@@ -57816,15 +52800,6 @@
"react-lifecycles-compat": "^3.0.4"
}
},
- "reactcss": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
- "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
- "dev": true,
- "requires": {
- "lodash": "^4.0.1"
- }
- },
"read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -57843,100 +52818,82 @@
}
},
"read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
"dev": true,
"requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
},
"dependencies": {
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "requires": {
- "pify": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "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==",
"dev": true
}
}
},
"read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "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==",
"dev": true,
"requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
},
"dependencies": {
"find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"requires": {
- "locate-path": "^2.0.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
}
},
"locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
+ "p-locate": "^4.1.0"
}
},
"p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
- "p-limit": "^1.1.0"
+ "p-limit": "^2.2.0"
}
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
}
}
},
"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==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
"core-util-is": "~1.0.0",
- "inherits": "~2.0.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"
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ }
}
},
"readdirp": {
@@ -57979,12 +52936,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -58005,6 +52956,30 @@
"snapdragon": "^0.8.1",
"to-regex": "^3.0.2"
}
+ },
+ "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"
+ }
}
}
},
@@ -58020,6 +52995,12 @@
"string-width": "^2.0.0"
},
"dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -58050,6 +53031,15 @@
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
}
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
}
}
},
@@ -58113,22 +53103,13 @@
}
},
"recharts-scale": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.4.tgz",
- "integrity": "sha512-e7MCnuD1+gtY9N7TYxzB+QXvi4s30kvNqVbI1p5m4rf47GusEQaEHxi8zvlZkdOOZ90UhpGHcnkYlyYkUJ2JoQ==",
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz",
+ "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==",
"requires": {
"decimal.js-light": "^2.4.1"
}
},
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "requires": {
- "resolve": "^1.1.6"
- }
- },
"recursive-readdir": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
@@ -58164,19 +53145,17 @@
}
},
"redux": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz",
- "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz",
+ "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==",
"requires": {
- "loose-envify": "^1.4.0",
- "symbol-observable": "^1.2.0"
+ "@babel/runtime": "^7.9.2"
}
},
"redux-immutable": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz",
- "integrity": "sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM=",
- "requires": {}
+ "integrity": "sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM="
},
"redux-thunk": {
"version": "2.3.0",
@@ -58270,11 +53249,10 @@
}
},
"regexpp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz",
- "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==",
- "dev": true,
- "peer": true
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true
},
"regexpu-core": {
"version": "4.7.1",
@@ -58338,12 +53316,6 @@
"strip-ansi": "^3.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=",
- "dev": true
- },
"css-select": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
@@ -58397,21 +53369,27 @@
"util-deprecate": "^1.0.1"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "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
+ },
+ "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==",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "safe-buffer": "~5.2.0"
}
}
}
},
"repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "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==",
"dev": true
},
"repeat-string": {
@@ -58420,16 +53398,6 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "peer": true,
- "requires": {
- "is-finite": "^1.0.0"
- }
- },
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@@ -58509,39 +53477,12 @@
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
- "require-uncached": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
- "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
- "dev": true,
- "peer": true,
- "requires": {
- "caller-path": "^0.1.0",
- "resolve-from": "^1.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
- "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
- "dev": true,
- "peer": true
- }
- }
- },
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"dev": true
},
- "reselect": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz",
- "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=",
- "dev": true,
- "peer": true
- },
"resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
@@ -58606,6 +53547,15 @@
"is-windows": "^1.0.1",
"which": "^1.2.14"
}
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
}
}
},
@@ -58816,27 +53766,10 @@
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
"integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
},
- "rx-lite": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
- "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
- "dev": true,
- "peer": true
- },
- "rx-lite-aggregates": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
- "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
- "dev": true,
- "peer": true,
- "requires": {
- "rx-lite": "*"
- }
- },
"rxjs": {
- "version": "6.6.6",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz",
- "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==",
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
@@ -58908,12 +53841,6 @@
"is-plain-object": "^2.0.4"
}
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -58954,34 +53881,6 @@
"neo-async": "^2.6.1",
"schema-utils": "^2.6.1",
"semver": "^6.3.0"
- },
- "dependencies": {
- "clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- }
- }
}
},
"sax": {
@@ -59017,33 +53916,6 @@
"@types/json-schema": "^7.0.5",
"ajv": "^6.12.4",
"ajv-keywords": "^3.5.2"
- },
- "dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- }
}
},
"select": {
@@ -59293,22 +54165,12 @@
}
},
"shallow-clone": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
- "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
"requires": {
- "is-extendable": "^0.1.1",
- "kind-of": "^5.0.0",
- "mixin-object": "^2.0.1"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
+ "kind-of": "^6.0.2"
}
},
"shallow-copy": {
@@ -59344,18 +54206,18 @@
}
},
"shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
- "shebang-regex": "^1.0.0"
+ "shebang-regex": "^3.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=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
"shell-quote": {
@@ -59365,23 +54227,9 @@
"dev": true
},
"shelljs": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
- "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "dependencies": {
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- }
- }
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
+ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E="
},
"shellwords": {
"version": "0.1.1",
@@ -59434,12 +54282,13 @@
"dev": true
},
"slice-ansi": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
- "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
"dev": true,
- "peer": true,
"requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
"is-fullwidth-code-point": "^2.0.0"
},
"dependencies": {
@@ -59447,8 +54296,7 @@
"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,
- "peer": true
+ "dev": true
}
}
},
@@ -59493,6 +54341,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-data-descriptor": {
@@ -59502,6 +54361,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-descriptor": {
@@ -59513,16 +54383,14 @@
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
}
},
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -59555,6 +54423,17 @@
"dev": true,
"requires": {
"kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"socket.io-client": {
@@ -59601,9 +54480,9 @@
}
},
"sockjs-client": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz",
- "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz",
+ "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==",
"dev": true,
"requires": {
"debug": "^3.2.6",
@@ -59611,7 +54490,7 @@
"faye-websocket": "^0.11.3",
"inherits": "^2.0.4",
"json3": "^3.3.3",
- "url-parse": "^1.4.7"
+ "url-parse": "^1.5.1"
},
"dependencies": {
"debug": {
@@ -59757,6 +54636,21 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
+ },
+ "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
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
}
}
},
@@ -59814,9 +54708,9 @@
}
},
"ssri": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
"dev": true,
"requires": {
"figgy-pudding": "^3.5.1"
@@ -59835,9 +54729,9 @@
"dev": true
},
"stack-utils": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz",
- "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
+ "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
"dev": true,
"requires": {
"escape-string-regexp": "^2.0.0"
@@ -59891,6 +54785,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-data-descriptor": {
@@ -59900,6 +54805,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"is-descriptor": {
@@ -59911,15 +54827,13 @@
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
}
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
}
}
},
@@ -59966,12 +54880,34 @@
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz",
"integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw=="
},
+ "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"
+ }
+ },
"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
},
+ "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",
@@ -60009,6 +54945,32 @@
"requires": {
"inherits": "~2.0.1",
"readable-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==",
+ "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-each": {
@@ -60032,6 +54994,32 @@
"readable-stream": "^2.3.6",
"to-arraybuffer": "^1.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==",
+ "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-shift": {
@@ -60047,12 +55035,9 @@
"dev": true
},
"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"
- }
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
},
"string-length": {
"version": "2.0.0",
@@ -60062,6 +55047,23 @@
"requires": {
"astral-regex": "^1.0.0",
"strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
}
},
"string-width": {
@@ -60167,18 +55169,18 @@
}
},
"strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
}
}
@@ -60221,11 +55223,9 @@
}
},
"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=",
- "dev": true,
- "peer": true
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
+ "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E="
},
"style-loader": {
"version": "0.23.1",
@@ -60237,31 +55237,6 @@
"schema-utils": "^1.0.0"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -60286,17 +55261,6 @@
"postcss-selector-parser": "^3.0.0"
},
"dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
"postcss-selector-parser": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
@@ -60307,21 +55271,6 @@
"indexes-of": "^1.0.1",
"uniq": "^1.0.1"
}
- },
- "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"
- }
}
}
},
@@ -60338,34 +55287,6 @@
"dev": true,
"requires": {
"postcss": "^7.0.2"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "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"
- }
- }
}
},
"supports-color": {
@@ -60468,36 +55389,47 @@
"integrity": "sha512-KHDsGQ4UcP+wSMaqH7wjH4DHxeHKRlmEO5jlSVCS+0x9xA4ZhdKYg/ameGF7RXaFDUcsti6Zj5s5W1Z4/YsbHA=="
},
"table": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
- "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
"dev": true,
- "peer": true,
"requires": {
- "ajv": "^5.2.3",
- "ajv-keywords": "^2.1.0",
- "chalk": "^2.1.0",
- "lodash": "^4.17.4",
- "slice-ansi": "1.0.0",
- "string-width": "^2.1.1"
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
},
"dependencies": {
+ "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,
- "peer": true
+ "dev": true
},
"string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "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,
- "peer": true,
"requires": {
+ "emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.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"
}
}
}
@@ -60554,27 +55486,14 @@
}
},
"chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "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"
- }
- },
- "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=="
- },
"fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
@@ -60585,6 +55504,11 @@
"universalify": "^0.1.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=="
+ },
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@@ -60593,67 +55517,6 @@
"graceful-fs": "^4.1.6"
}
},
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "dependencies": {
- "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"
- }
- }
- }
- },
- "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="
- },
- "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"
- }
- }
- }
- },
"postcss-value-parser": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
@@ -60675,24 +55538,12 @@
}
}
},
- "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"
- },
- "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=="
- }
}
},
"universalify": {
@@ -60743,18 +55594,18 @@
}
},
"telejson": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.0.tgz",
- "integrity": "sha512-Yy0N2OV0mosmr1SCZEm3Ezhu/oi5Dbao5RqauZu4+VI5I/XtVBHXajRk0txuqbFYtKdzzWGDZFGSif9ovVLjEA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.1.tgz",
+ "integrity": "sha512-aU7x+nwodmODJPXhU9sC/REOcX/dx1tNbyeOFV1PCTh6e9Mj+bnyfQ7sr13zfJYya9BtpGwnUNn9Fd76Ybj2eg==",
"dev": true,
"requires": {
"@types/is-function": "^1.0.0",
"global": "^4.4.0",
"is-function": "^1.0.2",
- "is-regex": "^1.1.1",
+ "is-regex": "^1.1.2",
"is-symbol": "^1.0.3",
"isobject": "^4.0.0",
- "lodash": "^4.17.20",
+ "lodash": "^4.17.21",
"memoizerific": "^1.11.3"
},
"dependencies": {
@@ -60884,6 +55735,16 @@
"pkg-dir": "^4.1.0"
}
},
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -60901,6 +55762,15 @@
"supports-color": "^7.0.0"
}
},
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -60934,6 +55804,26 @@
"yocto-queue": "^0.1.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==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ },
+ "dependencies": {
+ "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-map": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
@@ -60943,6 +55833,15 @@
"aggregate-error": "^3.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==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -61046,6 +55945,12 @@
"json-parse-better-errors": "^1.0.1"
}
},
+ "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-type": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
@@ -61097,9 +56002,9 @@
"dev": true
},
"throttle-debounce": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
- "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
+ "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
"dev": true
},
"through": {
@@ -61116,6 +56021,34 @@
"requires": {
"inherits": "^2.0.4",
"readable-stream": "2 || 3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "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
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
+ }
}
},
"thunky": {
@@ -61162,12 +56095,6 @@
"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.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz",
- "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==",
- "dev": true
- },
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -61202,6 +56129,17 @@
"dev": true,
"requires": {
"kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
"to-regex": {
@@ -61315,13 +56253,6 @@
"punycode": "^2.1.0"
}
},
- "trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true,
- "peer": true
- },
"triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
@@ -61335,9 +56266,9 @@
"dev": true
},
"ts-dedent": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.0.tgz",
- "integrity": "sha512-HbmrG+lCgk5W8LQTALxBxQRBDeAhQKRzdqVhHLUkVd5nYT+b6zDzbRMjiA8wqrWDa33X09WdnW4zEsdwQArTaw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.1.tgz",
+ "integrity": "sha512-riHuwnzAUCfdIeTBNUq7+Yj+ANnrMXo/7+Z74dIdudS7ys2k8aSGMzpJRMFDF7CLwUTbtvi1ZZff/Wl+XxmqIA==",
"dev": true
},
"ts-essentials": {
@@ -61448,17 +56379,10 @@
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
- "typescript": {
- "version": "3.9.9",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
- "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==",
- "dev": true,
- "peer": true
- },
"ua-parser-js": {
- "version": "0.7.25",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.25.tgz",
- "integrity": "sha512-8NFExdfI24Ny8R3Vc6+uUytP/I7dpqk3JERlvxPWlrtx5YboqCgxAXYKPAifbPLV2zKbgmmPL53ufW7mUC/VOQ=="
+ "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=="
},
"uglify-js": {
"version": "3.4.10",
@@ -61485,21 +56409,21 @@
}
},
"unbox-primitive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz",
- "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
- "has-bigints": "^1.0.0",
- "has-symbols": "^1.0.0",
- "which-boxed-primitive": "^1.0.1"
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
}
},
"underscore": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz",
- "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
+ "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
"dev": true
},
"unfetch": {
@@ -61565,7 +56489,8 @@
"uniq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
},
"uniqs": {
"version": "2.0.0",
@@ -61705,31 +56630,6 @@
"schema-utils": "^3.0.0"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -61781,8 +56681,7 @@
"use-isomorphic-layout-effect": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz",
- "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==",
- "requires": {}
+ "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ=="
},
"use-latest": {
"version": "1.2.0",
@@ -62048,25 +56947,6 @@
"integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
"dev": true
},
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -62112,18 +56992,6 @@
"integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
"dev": true
},
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -62202,12 +57070,6 @@
"ws": "^6.0.0"
},
"dependencies": {
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true
- },
"acorn-walk": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
@@ -62220,12 +57082,6 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "ejs": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
- "dev": true
- },
"filesize": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
@@ -62332,12 +57188,39 @@
"p-limit": "^2.0.0"
}
},
+ "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-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -62367,6 +57250,15 @@
"has-flag": "^3.0.0"
}
},
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
"wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
@@ -62470,31 +57362,6 @@
"yargs": "^13.3.2"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-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,
- "requires": {}
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
"chokidar": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
@@ -62526,12 +57393,6 @@
"wrap-ansi": "^5.1.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -62581,12 +57442,6 @@
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -62606,6 +57461,12 @@
"p-limit": "^2.0.0"
}
},
+ "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
+ },
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
@@ -62634,12 +57495,6 @@
"strip-ansi": "^5.1.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -62651,15 +57506,6 @@
}
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -62690,12 +57536,6 @@
"strip-ansi": "^5.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -62750,8 +57590,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz",
"integrity": "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==",
- "dev": true,
- "requires": {}
+ "dev": true
},
"webpack-hot-middleware": {
"version": "2.25.0",
@@ -62763,23 +57602,6 @@
"html-entities": "^1.2.0",
"querystring": "^0.2.0",
"strip-ansi": "^3.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=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
}
},
"webpack-log": {
@@ -62928,9 +57750,9 @@
}
},
"which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
@@ -62964,6 +57786,12 @@
"string-width": "^1.0.2 || 2"
},
"dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
"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",
@@ -62979,6 +57807,15 @@
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
}
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
}
}
},
@@ -63018,12 +57855,6 @@
"winston-transport": "^4.4.0"
},
"dependencies": {
- "async": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
- "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
- "dev": true
- },
"is-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
@@ -63040,6 +57871,21 @@
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
+ },
+ "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
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
}
}
},
@@ -63051,6 +57897,32 @@
"requires": {
"readable-stream": "^2.3.7",
"triple-beam": "^1.2.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==",
+ "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"
+ }
+ }
}
},
"word-wrap": {
@@ -63300,21 +58172,6 @@
"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==",
- "dev": true,
- "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==",
- "dev": true
- },
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -63332,11 +58189,10 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"write": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
- "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
"dev": true,
- "peer": true,
"requires": {
"mkdirp": "^0.5.1"
}
@@ -63415,9 +58271,9 @@
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"yallist": {
@@ -63448,9 +58304,9 @@
},
"dependencies": {
"y18n": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
- "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
}
}
diff --git a/frontend/scripts/upload-minio.js b/frontend/scripts/upload-minio.js
index 3e59d9c4e..f0415390f 100644
--- a/frontend/scripts/upload-minio.js
+++ b/frontend/scripts/upload-minio.js
@@ -1,14 +1,15 @@
const Minio = require('minio')
const { collectFilenames } = require('./fs');
+require('dotenv').config()
const PUBLIC_DIR = 'public';
var minioClient = new Minio.Client({
- endPoint: window.ENV.MINIO_ENDPOINT,
- port: window.ENV.MINIO_PORT,
- useSSL: window.ENV.MINIO_USE_SSL, //?
- accessKey: window.ENV.MINIO_ACCESS_KEY,
- secretKey: window.ENV.MINIO_SECRET_KEY,
+ endPoint: process.env.MINIO_ENDPOINT,
+ port: process.env.MINIO_PORT,
+ useSSL: process.env.MINIO_USE_SSL,
+ accessKey: process.env.MINIO_ACCESS_KEY,
+ secretKey: process.env.MINIO_SECRET_KEY,
});
collectFilenames(PUBLIC_DIR, n => !n.includes('.DS_Store')).forEach(name => {
From 932bcb920df58f305322d2535ecc4de945388ef7 Mon Sep 17 00:00:00 2001
From: Shekar Siri
Date: Tue, 4 May 2021 20:05:28 +0530
Subject: [PATCH 02/10] copy button
---
.../Client/ProfileSettings/OptOut.js | 2 +-
.../Client/ProfileSettings/ProfileSettings.js | 14 +-
.../IdentifyUsersTab/IdentifyUsersTab.js | 14 +-
.../OnboardingTabs/InstallDocs/InstallDocs.js | 3 +-
.../Onboarding/components/SideMenu.js | 7 +-
.../InstallDocs/InstallDocs.js | 2 +-
.../components/ui/CopyButton/CopyButton.js | 25 +
.../app/components/ui/CopyButton/index.js | 1 +
.../ui/HighlightCode/HighlightCode.js | 18 +
.../ui/HighlightCode/highlightCode.css | 29 +
.../app/components/ui/HighlightCode/index.js | 1 +
frontend/app/components/ui/index.js | 2 +
frontend/env.js | 2 +-
frontend/logfile | 3819 -----------------
14 files changed, 87 insertions(+), 3852 deletions(-)
create mode 100644 frontend/app/components/ui/CopyButton/CopyButton.js
create mode 100644 frontend/app/components/ui/CopyButton/index.js
create mode 100644 frontend/app/components/ui/HighlightCode/HighlightCode.js
create mode 100644 frontend/app/components/ui/HighlightCode/highlightCode.css
create mode 100644 frontend/app/components/ui/HighlightCode/index.js
delete mode 100644 frontend/logfile
diff --git a/frontend/app/components/Client/ProfileSettings/OptOut.js b/frontend/app/components/Client/ProfileSettings/OptOut.js
index 88180e5c3..dea675a60 100644
--- a/frontend/app/components/Client/ProfileSettings/OptOut.js
+++ b/frontend/app/components/Client/ProfileSettings/OptOut.js
@@ -17,7 +17,7 @@ function OptOut(props) {
checked={ optOut }
onClick={ onChange }
className="mr-8"
- label="Enable/Disable"
+ label="Anonymize"
/>
)
diff --git a/frontend/app/components/Client/ProfileSettings/ProfileSettings.js b/frontend/app/components/Client/ProfileSettings/ProfileSettings.js
index 5298914bd..ac04d53fe 100644
--- a/frontend/app/components/Client/ProfileSettings/ProfileSettings.js
+++ b/frontend/app/components/Client/ProfileSettings/ProfileSettings.js
@@ -31,16 +31,6 @@ export default class ProfileSettings extends React.PureComponent {
-
-
-
{ 'Opt out' }
- {/*
{ 'Your API key gives you access to an extra set of services.' }
*/}
-
-
-
-
-
-
{ 'Organization API Key' }
@@ -53,8 +43,8 @@ export default class ProfileSettings extends React.PureComponent {
-
{ 'Opt Out' }
- {/*
{ 'Your API key gives you access to an extra set of services.' }
*/}
+
{ 'Data Collection' }
+
{ 'Enables you to control how OpenReplay captures data on your organization’s usage to improve our product.' }
diff --git a/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js b/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js
index 2e6fd2ad6..bee33974b 100644
--- a/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js
+++ b/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js
@@ -1,8 +1,7 @@
import React from 'react'
import CircleNumber from '../CircleNumber'
import MetadataList from '../MetadataList/MetadataList'
-import Snippet from '../Snippet/Snippet'
-import Highlight from 'react-highlight'
+import { HighlightCode } from 'UI'
export default function IdentifyUsersTab() {
return (
@@ -17,10 +16,7 @@ export default function IdentifyUsersTab() {
Call userID to identify your users when recording a session. The identity of the user can be changed, but OpenReplay will only keep the last communicated user ID.
-
- {`tracker.userID('john@doe.com');`}
-
- {/*
*/}
+
@@ -37,19 +33,15 @@ export default function IdentifyUsersTab() {
-
Inject metadata when recording sessions
Use the metadata method in your code to inject custom user data in the form of a key/value pair (string).
-
- {`tracker.metadata('plan', 'premium');`}
-
+
- {/* */}
diff --git a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js
index 2d6230c0a..09e5fd4c9 100644
--- a/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js
+++ b/frontend/app/components/Onboarding/components/OnboardingTabs/InstallDocs/InstallDocs.js
@@ -2,10 +2,9 @@ import React, { useState } from 'react'
import { connect } from 'react-redux'
import stl from './installDocs.css'
import cn from 'classnames'
-import CopyButton from '../CopyButton'
import Highlight from 'react-highlight'
import CircleNumber from '../../CircleNumber'
-import { Slider } from 'UI'
+import { Slider, CopyButton } from 'UI'
const installationCommand = 'npm i @openreplay/tracker --save'
const usageCode = `import Tracker from '@openreplay/tracker';
diff --git a/frontend/app/components/Onboarding/components/SideMenu.js b/frontend/app/components/Onboarding/components/SideMenu.js
index e828fd856..ab49d97f3 100644
--- a/frontend/app/components/Onboarding/components/SideMenu.js
+++ b/frontend/app/components/Onboarding/components/SideMenu.js
@@ -24,21 +24,18 @@ export default function SideMenu() {
window.open('https://docs.openreplay.com/api', '_blank')}
+ onClick={() => window.open('https://docs.openreplay.com', '_blank')}
/>
window.open('https://github.com/openreplay/openreplay/issues/new', '_blank')}
+ onClick={() => window.open('https://github.com/openreplay/openreplay/issues', '_blank')}
/>
$crisp.push(['do', 'chat:open']) }
diff --git a/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js b/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js
index 6e1bb78f3..cfedaed07 100644
--- a/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js
+++ b/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js
@@ -2,7 +2,7 @@ import React from 'react'
import { Controlled as CodeMirror } from 'react-codemirror2'
import stl from './installDocs.css'
import cn from 'classnames'
-import CopyButton from '../CopyButton';
+import { CopyButton } from 'UI';
const installationCommand = 'npm i @openreplay/tracker --save'
const usageCode = `import Tracker from '@openreplay/tracker';
diff --git a/frontend/app/components/ui/CopyButton/CopyButton.js b/frontend/app/components/ui/CopyButton/CopyButton.js
new file mode 100644
index 000000000..d080b1a02
--- /dev/null
+++ b/frontend/app/components/ui/CopyButton/CopyButton.js
@@ -0,0 +1,25 @@
+import React from 'react'
+import { useState } from 'react';
+import copy from 'copy-to-clipboard';
+
+function CopyButton({ content, className }) {
+ const [copied, setCopied] = useState(false)
+
+ const copyHandler = () => {
+ setCopied(true);
+ copy(content);
+ setTimeout(() => {
+ setCopied(false);
+ }, 1000);
+ };
+ return (
+
+ { copied ? 'copied' : 'copy' }
+
+ )
+}
+
+export default CopyButton
diff --git a/frontend/app/components/ui/CopyButton/index.js b/frontend/app/components/ui/CopyButton/index.js
new file mode 100644
index 000000000..a230b4ecc
--- /dev/null
+++ b/frontend/app/components/ui/CopyButton/index.js
@@ -0,0 +1 @@
+export { default } from './CopyButton'
\ No newline at end of file
diff --git a/frontend/app/components/ui/HighlightCode/HighlightCode.js b/frontend/app/components/ui/HighlightCode/HighlightCode.js
new file mode 100644
index 000000000..d9f837b88
--- /dev/null
+++ b/frontend/app/components/ui/HighlightCode/HighlightCode.js
@@ -0,0 +1,18 @@
+import React from 'react'
+import Highlight from 'react-highlight'
+import stl from './highlightCode.css'
+import cn from 'classnames'
+import { CopyButton } from 'UI'
+
+function HighlightCode({ className = 'js', text = ''}) {
+ return (
+
+
+
+ {text}
+
+
+ )
+}
+
+export default HighlightCode
diff --git a/frontend/app/components/ui/HighlightCode/highlightCode.css b/frontend/app/components/ui/HighlightCode/highlightCode.css
new file mode 100644
index 000000000..448b08f72
--- /dev/null
+++ b/frontend/app/components/ui/HighlightCode/highlightCode.css
@@ -0,0 +1,29 @@
+@import 'zindex.css';
+
+.snippetWrapper {
+ position: relative;
+ & .codeCopy {
+ position: absolute;
+ right: 0px;
+ top: -3px;
+ z-index: $codeSnippet;
+ padding: 5px 10px;
+ color: $teal;
+ text-transform: uppercase;
+ cursor: pointer;
+ border-radius: 3px;
+ transition: all 0.4s;
+ user-select: none;
+
+ &:hover {
+ background-color: $gray-light;
+ transition: all 0.2s;
+ }
+ }
+ & .snippet {
+ overflow: hidden;
+ line-height: 20px;
+ border-radius: 5px;
+ user-select: none;
+ }
+}
\ No newline at end of file
diff --git a/frontend/app/components/ui/HighlightCode/index.js b/frontend/app/components/ui/HighlightCode/index.js
new file mode 100644
index 000000000..7f7481148
--- /dev/null
+++ b/frontend/app/components/ui/HighlightCode/index.js
@@ -0,0 +1 @@
+export { default } from './HighlightCode'
\ No newline at end of file
diff --git a/frontend/app/components/ui/index.js b/frontend/app/components/ui/index.js
index c64e5082d..fe9609f16 100644
--- a/frontend/app/components/ui/index.js
+++ b/frontend/app/components/ui/index.js
@@ -50,5 +50,7 @@ export { default as TextLink } from './TextLink';
export { default as Information } from './Information';
export { default as QuestionMarkHint } from './QuestionMarkHint';
export { default as TimelinePointer } from './TimelinePointer';
+export { default as CopyButton } from './CopyButton';
+export { default as HighlightCode } from './HighlightCode';
export { Input, Modal, Form, Message, Card } from 'semantic-ui-react';
diff --git a/frontend/env.js b/frontend/env.js
index 0bdc0ab4a..4c5902987 100644
--- a/frontend/env.js
+++ b/frontend/env.js
@@ -8,7 +8,7 @@ const oss = {
CAPTCHA_ENABLED: process.env.CAPTCHA_ENABLED,
CAPTCHA_SITE_KEY: process.env.CAPTCHA_SITE_KEY,
ORIGIN: () => 'window.location.origin',
- API_EDP: 'https://staging-parrot.asayer.io',
+ API_EDP: () => 'window.location.origin + "/api"',
ASSETS_HOST: () => 'window.location.origin + "/assets"',
VERSION: '1.0.1',
SOURCEMAP: true,
diff --git a/frontend/logfile b/frontend/logfile
deleted file mode 100644
index 3851af727..000000000
--- a/frontend/logfile
+++ /dev/null
@@ -1,3819 +0,0 @@
-2021-01-23 12:42:45.336 IST [37761] LOG: starting PostgreSQL 13.1 on x86_64-apple-darwin20.1.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.27), 64-bit
-2021-01-23 12:42:45.337 IST [37761] LOG: listening on IPv4 address "127.0.0.1", port 5432
-2021-01-23 12:42:45.337 IST [37761] LOG: listening on IPv6 address "::1", port 5432
-2021-01-23 12:42:45.338 IST [37761] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
-2021-01-23 12:42:45.352 IST [37762] LOG: database system was interrupted; last known up at 2021-01-21 08:13:03 IST
-2021-01-23 12:42:45.507 IST [37762] LOG: database system was not properly shut down; automatic recovery in progress
-2021-01-23 12:42:45.513 IST [37762] LOG: redo starts at 0/3316BC8
-2021-01-23 12:42:45.513 IST [37762] LOG: invalid record length at 0/3316CB0: wanted 24, got 0
-2021-01-23 12:42:45.513 IST [37762] LOG: redo done at 0/3316C78
-2021-01-23 12:42:45.522 IST [37761] LOG: database system is ready to accept connections
-2021-01-23 14:38:53.706 IST [40210] ERROR: bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000003" requires 1
-2021-01-23 14:38:53.706 IST [40210] STATEMENT: select * from "tenants" where "code" = $1 limit 1
-2021-01-23 14:39:00.422 IST [40215] ERROR: bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000003" requires 1
-2021-01-23 14:39:00.422 IST [40215] STATEMENT: select * from "tenants" where "code" = $1 limit 1
-2021-01-23 16:08:04.745 IST [45258] ERROR: relation "sections" does not exist at character 15
-2021-01-23 16:08:04.745 IST [45258] STATEMENT: select * from "sections" where "id" = $1 limit 1
-2021-01-23 16:08:09.391 IST [45262] ERROR: relation "sections" does not exist at character 15
-2021-01-23 16:08:09.391 IST [45262] STATEMENT: select * from "sections" where "id" = $1 limit 1
-2021-01-23 16:09:22.542 IST [45295] ERROR: relation "sections" does not exist at character 15
-2021-01-23 16:09:22.542 IST [45295] STATEMENT: select * from "sections" where "id" = $1 limit 1
-2021-01-24 01:17:39.683 IST [50859] FATAL: role "postgres" does not exist
-2021-01-24 01:36:57.415 IST [67292] ERROR: missing FROM-clause entry for table "sections" at character 31
-2021-01-24 01:36:57.415 IST [67292] STATEMENT: select * from "classes" where "sections"."class_id" = "classes"."id" and "academic_year_id" = $1 limit 1
-2021-01-24 01:41:44.028 IST [56873] ERROR: column "academic_year_id" does not exist at character 451
-2021-01-24 01:41:44.028 IST [56873] STATEMENT: select * from "users" where (name ILIKE '%af%' or exists (select * from "students" where "users"."id" = "students"."user_id" and "aadhar_number"::text LIKE $1) or exists (select * from "students" where "users"."id" = "students"."user_id" and "admission_number"::text LIKE $2) and exists (select * from "students" where "users"."id" = "students"."user_id" and exists (select * from "enrolments" where "students"."user_id" = "enrolments"."user_id" and "academic_year_id" = $3))) and "users"."deleted_at" is null limit 5
-2021-01-24 01:43:44.869 IST [66608] ERROR: missing FROM-clause entry for table "student" at character 281
-2021-01-24 01:43:44.869 IST [66608] STATEMENT: select * from "users" where (name ILIKE '%af%' or exists (select * from "students" where "users"."id" = "students"."user_id" and "aadhar_number"::text LIKE $1) or exists (select * from "students" where "users"."id" = "students"."user_id" and "admission_number"::text LIKE $2) and "student"."enrolment" = (select * where "has" = $3)) and "users"."deleted_at" is null limit 5
-2021-01-24 14:36:15.553 IST [61561] ERROR: update or delete on table "payments" violates foreign key constraint "late_fees_payment_id_foreign" on table "late_fees"
-2021-01-24 14:36:15.553 IST [61561] DETAIL: Key (id)=(14) is still referenced from table "late_fees".
-2021-01-24 14:36:15.553 IST [61561] STATEMENT: DELETE FROM "tnt_cf809103-d949-4562-896e-bcef7c73e8d7"."payments" WHERE "id" = '14' OR "id" = '15' OR "id" = '16' OR "id" = '17' OR "id" = '18' OR "id" = '19' OR "id" = '20' OR "id" = '21' OR "id" = '22' OR "id" = '23' OR "id" = '24' OR "id" = '25' OR "id" = '26' OR "id" = '27' OR "id" = '28' OR "id" = '29' OR "id" = '30' OR "id" = '31' OR "id" = '32' OR "id" = '33' OR "id" = '34';
-2021-01-24 14:52:27.013 IST [54028] ERROR: relation "tnt_c05488f1-1124-4d7f-81ef-3c7e9fb5b6d2.academic_years" does not exist at character 13
-2021-01-24 14:52:27.013 IST [54028] STATEMENT: INSERT INTO "tnt_c05488f1-1124-4d7f-81ef-3c7e9fb5b6d2".academic_years (id, title, start_at, end_at, is_active, created_at, updated_at) VALUES ( $1, $2, $3, $4, $5, $6, $7)
-2021-01-24 16:13:57.532 IST [79798] ERROR: column "academic_year_ids" does not exist at character 712
-2021-01-24 16:13:57.532 IST [79798] HINT: Perhaps you meant to reference the column "classes.academic_year_id".
-2021-01-24 16:13:57.532 IST [79798] STATEMENT: select * from "enrolments" where exists (select * from "users" where "enrolments"."user_id" = "users"."id" and "name"::text LIKE $1 and "users"."deleted_at" is null) or exists (select * from "users" where "enrolments"."user_id" = "users"."id" and "aadhar_number"::text LIKE $2 and "users"."deleted_at" is null) or exists (select * from "users" where "enrolments"."user_id" = "users"."id" and exists (select * from "students" where "users"."id" = "students"."user_id" and "admission_number"::text LIKE $3) and "users"."deleted_at" is null) and exists (select * from "sections" where "enrolments"."section_id" = "sections"."id" and exists (select * from "classes" where "sections"."class_id" = "classes"."id" and "academic_year_ids" = $4)) limit 5
-2021-01-24 16:16:00.358 IST [61561] ERROR: syntax error at or near "%" at character 716
-2021-01-24 16:16:00.358 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- select
- *
- from
- "enrolments"
- where
- exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and "name" :: text LIKE % maya %
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and "aadhar_number" :: text LIKE % maya %
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and exists (
- select
- *
- from
- "students"
- where
- "users"."id" = "students"."user_id"
- and "admission_number" :: text LIKE % maya %
- )
- and "users"."deleted_at" is null
- )
- and exists (
- select
- *
- from
- "sections"
- where
- "enrolments"."section_id" = "sections"."id"
- and exists (
- select
- *
- from
- "classes"
- where
- "sections"."class_id" = "classes"."id"
- and "academic_year_id" = 21
- )
- )
- limit
- 5
- )
-2021-01-24 16:16:34.283 IST [61561] ERROR: syntax error at or near ")" at character 1647
-2021-01-24 16:16:34.283 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- select
- *
- from
- "enrolments"
- where
- exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and "name" :: text LIKE '%maya%'
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and "aadhar_number" :: text LIKE '%maya%'
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and exists (
- select
- *
- from
- "students"
- where
- "users"."id" = "students"."user_id"
- and "admission_number" :: text LIKE '%maya%'
- )
- and "users"."deleted_at" is null
- )
- and exists (
- select
- *
- from
- "sections"
- where
- "enrolments"."section_id" = "sections"."id"
- and exists (
- select
- *
- from
- "classes"
- where
- "sections"."class_id" = "classes"."id"
- and "academic_year_id" = 21
- )
- )
- limit
- 5
- )
-2021-01-24 16:16:45.440 IST [61561] ERROR: relation "enrolments" does not exist at character 560
-2021-01-24 16:16:45.440 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- select
- *
- from
- "enrolments"
- where
- exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and "name" :: text LIKE '%maya%'
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and "aadhar_number" :: text LIKE '%maya%'
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "users"
- where
- "enrolments"."user_id" = "users"."id"
- and exists (
- select
- *
- from
- "students"
- where
- "users"."id" = "students"."user_id"
- and "admission_number" :: text LIKE '%maya%'
- )
- and "users"."deleted_at" is null
- )
- and exists (
- select
- *
- from
- "sections"
- where
- "enrolments"."section_id" = "sections"."id"
- and exists (
- select
- *
- from
- "classes"
- where
- "sections"."class_id" = "classes"."id"
- and "academic_year_id" = 21
- )
- )
- limit
- 5
-2021-01-24 16:17:32.152 IST [61561] ERROR: relation "students" does not exist at character 1320
-2021-01-24 16:17:32.152 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- select
- *
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- where
- exists (
- select
- *
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- where
- "enrolments"."user_id" = "users"."id"
- and "name" :: text LIKE '%maya%'
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- where
- "enrolments"."user_id" = "users"."id"
- and "aadhar_number" :: text LIKE '%maya%'
- and "users"."deleted_at" is null
- )
- or exists (
- select
- *
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- where
- "enrolments"."user_id" = "users"."id"
- and exists (
- select
- *
- from
- "students"
- where
- "users"."id" = "students"."user_id"
- and "admission_number" :: text LIKE '%maya%'
- )
- and "users"."deleted_at" is null
- )
- and exists (
- select
- *
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- where
- "enrolments"."section_id" = "sections"."id"
- and exists (
- select
- *
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- where
- "sections"."class_id" = "classes"."id"
- and "academic_year_id" = 21
- )
- )
- limit
- 5
-2021-01-24 16:21:47.191 IST [61561] ERROR: table name "s" specified more than once
-2021-01-24 16:21:47.191 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
-
- select
- *
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students s on s.user_id = u.id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
- and u.name like '%maya%'
- or s.admission_number like '%maya%'
- or u.aadhar_number like '%maya%'
-2021-01-24 17:11:18.471 IST [41136] ERROR: missing FROM-clause entry for table "section_id, enrolments" at character 8
-2021-01-24 17:11:18.471 IST [41136] STATEMENT: select "enrolments"."section_id, enrolments"."id" from "enrolments" inner join "users" on "users"."id" = "enrolments"."user_id" inner join "students" on "students"."user_id" = "users"."id" inner join "sections" on "sections"."id" = "enrolments"."section_id" inner join "classes" on "classes"."id" = "sections"."class_id" where "classes"."academic_year_id" = $1 and "users"."name"::text LIKE $2 or "users"."aadhar_number"::text LIKE $3 or "students"."admission_number"::text LIKE $4 limit 5
-2021-01-24 17:32:01.504 IST [53198] ERROR: column students.admission does not exist at character 166
-2021-01-24 17:32:01.504 IST [53198] STATEMENT: select "enrolments"."id", "enrolments"."section_id", "users"."name", "sections"."name" as "section_name", "classes"."name" as "class_name", "users"."aadhar_number", "students"."admission" from "enrolments" inner join "users" on "users"."id" = "enrolments"."user_id" inner join "students" on "students"."user_id" = "users"."id" inner join "sections" on "sections"."id" = "enrolments"."section_id" inner join "classes" on "classes"."id" = "sections"."class_id" where "classes"."academic_year_id" = $1 and "users"."name"::text LIKE $2 or "users"."aadhar_number"::text LIKE $3 or "students"."admission_number"::text LIKE $4 limit 5
-2021-01-24 17:42:19.170 IST [15965] ERROR: invalid input syntax for type bigint: "undefined"
-2021-01-24 17:42:19.170 IST [15965] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1
-2021-01-24 17:42:19.170 IST [15967] ERROR: invalid input syntax for type bigint: "undefined"
-2021-01-24 17:42:19.170 IST [15967] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1
-2021-01-24 17:42:33.397 IST [34326] ERROR: invalid input syntax for type bigint: "undefined"
-2021-01-24 17:42:33.397 IST [34326] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1
-2021-01-24 17:42:33.397 IST [34328] ERROR: invalid input syntax for type bigint: "undefined"
-2021-01-24 17:42:33.397 IST [34328] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1
-2021-01-24 17:42:49.746 IST [55543] ERROR: invalid input syntax for type bigint: "undefined"
-2021-01-24 17:42:49.746 IST [55543] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1
-2021-01-24 17:42:49.746 IST [55544] ERROR: invalid input syntax for type bigint: "undefined"
-2021-01-24 17:42:49.746 IST [55544] STATEMENT: select * from "enrolments" where "enrolments"."id" = $1 limit 1
-2021-01-24 18:05:18.709 IST [36131] ERROR: column sections.standard_id does not exist at character 87
-2021-01-24 18:05:18.709 IST [36131] STATEMENT: select count(*) as aggregate from "sections" inner join "classes" on "classes"."id" = "sections"."standard_id" where "classes"."academic_year_id" = $1
-2021-01-24 18:06:14.567 IST [276] ERROR: column sections.standard_id does not exist at character 87
-2021-01-24 18:06:14.567 IST [276] STATEMENT: select count(*) as aggregate from "sections" inner join "classes" on "classes"."id" = "sections"."standard_id" where "classes"."class_id" = $1
-2021-01-24 19:17:35.056 IST [61561] ERROR: syntax error at or near ""tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"" at character 10
-2021-01-24 19:17:35.056 IST [61561] STATEMENT: select * "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where c.academic_year_id = 21
-2021-01-24 19:18:40.073 IST [61561] ERROR: syntax error at or near "select" at character 3383
-2021-01-24 19:18:40.073 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
- select amount_paid (
- select
- sum(amount_paid)
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
- )
-2021-01-24 19:18:47.493 IST [61561] ERROR: syntax error at or near "select" at character 3383
-2021-01-24 19:18:47.493 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
- select amount_paid (
- select
- sum(amount_paid) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
- )
-2021-01-24 19:18:57.121 IST [61561] ERROR: syntax error at or near "select" at character 3383
-2021-01-24 19:18:57.121 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
- select amount_paid (
- select
- sum(amount_paid) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
- ) t
-2021-01-24 19:19:01.024 IST [61561] ERROR: syntax error at or near "select" at character 3385
-2021-01-24 19:19:01.024 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
- select t.amount_paid (
- select
- sum(amount_paid) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
- ) t
-2021-01-24 19:19:33.948 IST [61561] ERROR: syntax error at or near "(" at character 3371
-2021-01-24 19:19:33.948 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
- select * (
- select
- sum(amount_paid) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
- ) t
-2021-01-24 19:19:44.475 IST [61561] ERROR: column "amount_paid" does not exist at character 3376
-2021-01-24 19:19:44.475 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
-
- select
- sum(amount_paid) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
-
-2021-01-24 19:19:49.689 IST [61561] ERROR: column p.amount_paid does not exist at character 3376
-2021-01-24 19:19:49.689 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
-
- select
- sum(p.amount_paid) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
-
-2021-01-24 19:19:55.495 IST [61561] ERROR: column p.amount does not exist at character 3376
-2021-01-24 19:19:55.495 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
-
- select
- sum(p.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- where
- c.academic_year_id = 21
-
-2021-01-24 19:20:43.122 IST [61561] ERROR: column p.amount does not exist at character 3376
-2021-01-24 19:20:43.122 IST [61561] HINT: Perhaps you meant to reference the column "pi.amount".
-2021-01-24 19:20:43.122 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
-
- select
- sum(p.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- c.academic_year_id = 21
-
-2021-01-24 19:21:15.388 IST [61561] ERROR: syntax error at or near "(" at character 3372
-2021-01-24 19:21:15.388 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
-
- select * (
- select
- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- c.academic_year_id = 21
- ) t
-
-2021-01-24 19:21:16.736 IST [61561] ERROR: syntax error at or near "(" at character 3372
-2021-01-24 19:21:16.736 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- OTHER
- -------------------------------------------
-
- select * (
- select
- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- c.academic_year_id = 21
- ) t
-
-2021-01-24 19:26:28.793 IST [61561] ERROR: date/time field value out of range: "24-01-2021" at character 3877
-2021-01-24 19:26:28.793 IST [61561] HINT: Perhaps you need a different "datestyle" setting.
-2021-01-24 19:26:28.793 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- c.created_at BETWEEN '01-06-2020' and '24-01-2021'
- and c.academic_year_id = 21;
-2021-01-24 19:31:46.134 IST [61561] ERROR: column fa.section_id does not exist at character 4320
-2021-01-24 19:31:46.134 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
-
- SELECT
- *
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id
- AND fa.feeable_type = 'section'
- WHERE fa.academic_year_id = 21
- group by fa.section_id
-2021-01-24 19:31:57.880 IST [61561] ERROR: column "fa.id" must appear in the GROUP BY clause or be used in an aggregate function at character 4092
-2021-01-24 19:31:57.880 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
-
- SELECT
- *
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id
- AND fa.feeable_type = 'section'
- WHERE fa.academic_year_id = 21
- group by s.id
-2021-01-24 19:32:08.697 IST [61561] ERROR: missing FROM-clause entry for table "sa" at character 4096
-2021-01-24 19:32:08.697 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
-
- SELECT
- *,
- sa.id as section_id
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id
- AND fa.feeable_type = 'section'
- WHERE fa.academic_year_id = 21
- group by s.id
-2021-01-24 19:32:26.762 IST [61561] ERROR: column "fa.id" must appear in the GROUP BY clause or be used in an aggregate function at character 4092
-2021-01-24 19:32:26.762 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
-
- SELECT
- *,
- s.id as section_id
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id
- AND fa.feeable_type = 'section'
- WHERE fa.academic_year_id = 21
- group by s.id
-2021-01-24 19:33:03.940 IST [61561] ERROR: syntax error at or near "FROM" at character 4114
-2021-01-24 19:33:03.940 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
-
- SELECT
- s.id as section_id,
-
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id
- AND fa.feeable_type = 'section'
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = s.id
- WHERE fa.academic_year_id = 21
- group by s.id
-2021-01-24 19:33:32.053 IST [61561] ERROR: column "fa.amount" must appear in the GROUP BY clause or be used in an aggregate function at character 4114
-2021-01-24 19:33:32.053 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- SELECT
- s.id as section_id,
- fa.amount
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s ON s.id = fa.feeable_id
- AND fa.feeable_type = 'section'
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = s.id
- WHERE
- fa.academic_year_id = 21
- group by
- s.id
-2021-01-24 19:34:54.376 IST [61561] ERROR: missing FROM-clause entry for table "s" at character 4092
-2021-01-24 19:34:54.376 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- SELECT
- s.id as section_id,
- sum(fa.amount),
- count(e.id) as enrolments
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
-
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = fa.feeable_id
- WHERE
- fa.academic_year_id = 21
- group by
- s.id
-2021-01-24 19:34:58.732 IST [61561] ERROR: missing FROM-clause entry for table "s" at character 4370
-2021-01-24 19:34:58.732 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- -- select
- -- sum(pi.amount) as amount_paid
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- -- where
- -- p.created_at BETWEEN '2019-06-01'
- -- and '2021-01-24'
- -- and c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- SELECT
- -- s.id as section_id,
- sum(fa.amount),
- count(e.id) as enrolments
- FROM
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".fee_assignments fa
-
- JOIN "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.section_id = fa.feeable_id
- WHERE
- fa.academic_year_id = 21
- group by
- s.id
-2021-01-24 19:48:33.759 IST [61561] ERROR: column "e.section_id" must appear in the GROUP BY clause or be used in an aggregate function at character 3402
-2021-01-24 19:48:33.759 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.*,
- e.section_id,
- c.id as class_id,
- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id;
-2021-01-24 19:48:59.558 IST [61561] ERROR: column "c.id" must appear in the GROUP BY clause or be used in an aggregate function at character 3420
-2021-01-24 19:48:59.558 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.*,
- -- e.section_id,
- c.id as class_id,
- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id;
-2021-01-24 19:49:05.206 IST [61561] ERROR: syntax error at or near "from" at character 3499
-2021-01-24 19:49:05.206 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.*,
- -- e.section_id,
- -- c.id as class_id,
- -- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id;
-2021-01-24 19:49:54.422 IST [61561] ERROR: column "pi.amount" must appear in the GROUP BY clause or be used in an aggregate function at character 3439
-2021-01-24 19:49:54.422 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.*
- -- , sum(pi.amount) as paid_amount
- , pi.amount
- -- e.section_id,
- -- c.id as class_id,
- -- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id;
-2021-01-24 19:50:10.578 IST [61561] ERROR: syntax error at or near "e" at character 3435
-2021-01-24 19:50:10.578 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.*
- , sum(pi.amount) as paid_amount
- e.section_id,
- -- c.id as class_id,
- -- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id;
-2021-01-24 19:50:16.778 IST [61561] ERROR: syntax error at or near "e" at character 3435
-2021-01-24 19:50:16.778 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.*
- , sum(pi.amount) as paid_amount
- e.section_id,
- -- c.id as class_id,
- -- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id, e.section_id;
-2021-01-24 19:51:33.455 IST [61561] ERROR: syntax error at or near "," at character 3433
-2021-01-24 19:51:33.455 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.id
- , s.class_id
- , e.section_id,
- , p.enrolment_id
- , sum(pi.amount) as paid_amount
-
- -- c.id as class_id,
- -- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id, s.class_id, e.section_id, p.enrolment_id;
-2021-01-24 19:52:33.123 IST [61561] ERROR: column "c.academic_year_id" must appear in the GROUP BY clause or be used in an aggregate function at character 3486
-2021-01-24 19:52:33.123 IST [61561] STATEMENT: -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payment_items pi
- -- left join "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".payments p on p.id = pi.payment_id
- -- where p.enrolment_id = 1
- -- select * from "tnt_fadab5cd-0384-403b-a152-1e7592084ab4".users where "name" LIKE '%afi%'
- -- DROP schema "tnt_788478b3-dcc8-4b5f-b4ee-d51c861333ff" CASCADE;
- -- select * from "tnt_cf809103-d949-4562-896e-bcef7c73e8d7".users where phone = '9705664434'
- -- select * from "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments where user_id = 1340
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."enrolments"
- -- where
- -- exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "name" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and "aadhar_number" :: text LIKE '%maya%'
- -- and "users"."deleted_at" is null
- -- )
- -- or exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."users"
- -- where
- -- "enrolments"."user_id" = "users"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."students"
- -- where
- -- "users"."id" = "students"."user_id"
- -- and "admission_number" :: text LIKE '%maya%'
- -- )
- -- and "users"."deleted_at" is null
- -- )
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."sections"
- -- where
- -- "enrolments"."section_id" = "sections"."id"
- -- and exists (
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."classes"
- -- where
- -- "sections"."class_id" = "classes"."id"
- -- and "academic_year_id" = 21
- -- )
- -- )
- -- limit
- -- 5
- -------------------------------------------
- -- AUTO COMPLETE
- -------------------------------------------
- -- select
- -- u.id, s."name" as section_name, u."name" as name, c."name" as class_name, u.aadhar_number, st.admission_number, s.id as section_id, c.id as class_id
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".users u on u.id = e.user_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".students st on st.user_id = u.id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21
- -- and u.name like '%maya%'
- -- or st.admission_number like '%maya%'
- -- or u.aadhar_number like '%maya%'
- -------------------------------------------
- -- SECTIONS
- -------------------------------------------
- -- select
- -- *
- -- from
- -- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s
- -- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- -- where
- -- c.academic_year_id = 21;
- -------------------------------------------
- -- AMOUNT PAID BY Academic Year ID
- -------------------------------------------
- select
- p.id
- , s.class_id
- , e.section_id
- , p.enrolment_id
- , sum(pi.amount) as paid_amount
- , c.academic_year_id
- -- c.id as class_id,
- -- c.academic_year_id
- -- sum(pi.amount) as amount_paid
- from
- "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payments p
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".enrolments e on e.id = p.enrolment_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".sections s on s.id = e.section_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".classes c on c.id = s.class_id
- join "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1".payment_items pi on pi.payment_id = p.id
- where
- p.created_at BETWEEN '2019-06-01'
- and '2021-01-24'
- and p.status = 'paid'
- and s.id in (4)
- and c.academic_year_id = 21
- group by p.id, s.class_id, e.section_id, p.enrolment_id;
-2021-01-24 19:56:39.082 IST [61561] ERROR: relation "payments" does not exist at character 225
-2021-01-24 19:56:39.082 IST [61561] STATEMENT: select
- p.id as payment_id,
- p.type,
- p.mode,
- p.status,
- p.dd_cheque_number,
- s.class_id,
- e.section_id,
- p.enrolment_id,
- sum(pi.amount) as paid_amount,
- c.academic_year_id,
- p.created_at,
- p.updated_at
- from
- payments p
- join enrolments e on e.id = p.enrolment_id
- join sections s on s.id = e.section_id
- join classes c on c.id = s.class_id
- join payment_items pi on pi.payment_id = p.id
- group by
- p.id,
- s.class_id,
- e.section_id,
- p.enrolment_id,
- c.academic_year_id;
-2021-01-24 19:57:21.731 IST [61561] ERROR: relation "payments" does not exist at character 244
-2021-01-24 19:57:21.731 IST [61561] STATEMENT: CREATE VIEW payments_view AS
- SELECT
- p.id AS payment_id,
- p.type,
- p.mode,
- p.status,
- p.dd_cheque_number,
- s.class_id,
- e.section_id,
- p.enrolment_id,
- sum(
- pi.amount) AS paid_amount,
- c.academic_year_id,
- p.created_at,
- p.updated_at
- FROM
- payments p
- JOIN enrolments e ON e.id = p.enrolment_id
- JOIN sections s ON s.id = e.section_id
- JOIN classes c ON c.id = s.class_id
- JOIN payment_items pi ON pi.payment_id = p.id
- GROUP BY
- p.id,
- s.class_id,
- e.section_id,
- p.enrolment_id,
- c.academic_year_id;
-2021-01-24 19:57:48.605 IST [61561] ERROR: invalid input syntax for type oid: "" at character 1397
-2021-01-24 19:57:48.605 IST [61561] STATEMENT: SELECT c.conname AS constraint_name,(SELECT STRING_AGG(QUOTE_IDENT(a.attname),','ORDER BY t.seq)FROM(SELECT ROW_NUMBER()OVER(ROWS UNBOUNDED PRECEDING)AS seq,attnum FROM UNNEST(c.conkey)AS t(attnum))AS t INNER JOIN pg_attribute AS a ON a.attrelid=c.conrelid AND a.attnum=t.attnum)AS child_column,tt.schema as parent_schema,tt.name AS parent_name,(SELECT STRING_AGG(QUOTE_IDENT(a.attname),','ORDER BY t.seq)FROM(SELECT ROW_NUMBER()OVER(ROWS UNBOUNDED PRECEDING)AS seq,attnum FROM UNNEST(c.confkey)AS t(attnum))AS t INNER JOIN pg_attribute AS a ON a.attrelid=c.confrelid AND a.attnum=t.attnum)AS parent_column,CASE confupdtype WHEN'r'THEN'restrict'WHEN'c'THEN'cascade'WHEN'n'THEN'set null'WHEN'd'THEN'set default'WHEN'a'THEN'no action'ELSE NULL END AS on_update,CASE confdeltype WHEN'r'THEN'restrict'WHEN'c'THEN'cascade'WHEN'n'THEN'set null'WHEN'd'THEN'set default'WHEN'a'THEN'no action'ELSE NULL END AS on_delete FROM pg_catalog.pg_constraint AS c INNER JOIN(SELECT pg_class.oid,QUOTE_IDENT(pg_namespace.nspname)as schema,QUOTE_IDENT(pg_class.relname)AS name FROM pg_class INNER JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid)AS tf ON tf.oid=c.conrelid INNER JOIN(SELECT pg_class.oid,QUOTE_IDENT(pg_namespace.nspname)as schema,QUOTE_IDENT(pg_class.relname)AS name FROM pg_class INNER JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid)AS tt ON tt.oid=c.confrelid WHERE tf.oid='' AND c.contype='f';
-2021-01-24 19:58:16.168 IST [61561] ERROR: relation "payments" does not exist at character 286
-2021-01-24 19:58:16.168 IST [61561] STATEMENT: CREATE VIEW "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."payments_view" AS SELECT
- p.id AS payment_id,
- p.type,
- p.mode,
- p.status,
- p.dd_cheque_number,
- s.class_id,
- e.section_id,
- p.enrolment_id,
- sum(pi.amount) AS paid_amount,
- c.academic_year_id,
- p.created_at,
- p.updated_at
- FROM
- payments p
- JOIN enrolments e ON e.id = p.enrolment_id
- JOIN sections s ON s.id = e.section_id
- JOIN classes c ON c.id = s.class_id
- JOIN payment_items pi ON pi.payment_id = p.id
- GROUP BY
- p.id,
- s.class_id,
- e.section_id,
- p.enrolment_id,
- c.academic_year_id;
-2021-01-25 00:02:22.238 IST [61561] ERROR: duplicate key value violates unique constraint "terms_pkey"
-2021-01-25 00:02:22.238 IST [61561] DETAIL: Key (id)=(4) already exists.
-2021-01-25 00:02:22.238 IST [61561] STATEMENT: UPDATE "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."terms" SET "id" = '4' WHERE "id" = '11';
-2021-01-25 00:02:51.913 IST [61561] ERROR: duplicate key value violates unique constraint "terms_pkey"
-2021-01-25 00:02:51.913 IST [61561] DETAIL: Key (id)=(2) already exists.
-2021-01-25 00:02:51.913 IST [61561] STATEMENT: UPDATE "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."terms" SET "id" = '2' WHERE "id" = '9';
-2021-01-25 00:11:59.847 IST [61561] ERROR: null value in column "amount" of relation "fee_assignments" violates not-null constraint
-2021-01-25 00:11:59.847 IST [61561] DETAIL: Failing row contains (1, null, null, null, null, null, null, null, null, null, null, null).
-2021-01-25 00:11:59.847 IST [61561] STATEMENT: INSERT INTO "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."fee_assignments" VALUES (DEFAULT);
-2021-01-25 00:12:14.126 IST [61561] ERROR: insert or update on table "fee_assignments" violates foreign key constraint "fee_assignments_fee_type_id_foreign"
-2021-01-25 00:12:14.126 IST [61561] DETAIL: Key (fee_type_id)=(89) is not present in table "fee_types".
-2021-01-25 00:12:14.126 IST [61561] STATEMENT: INSERT INTO "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."fee_assignments" ("id", "amount", "amount_new_admission", "fee_type_id", "academic_year_id", "term_id", "feeable_type", "feeable_id", "created_at") VALUES ('8253', '2340', '0', '89', '56', '5', 'section', '50', '2020-06-23 16:02:59.271264');
-2021-01-25 00:14:27.104 IST [61561] ERROR: insert or update on table "fee_assignments" violates foreign key constraint "fee_assignments_term_id_foreign"
-2021-01-25 00:14:27.104 IST [61561] DETAIL: Key (term_id)=(5) is not present in table "terms".
-2021-01-25 00:14:27.104 IST [61561] STATEMENT: INSERT INTO "tnt_67201e5a-f3b8-48fb-ae8a-f8484ceed5a1"."fee_assignments" ("id", "amount", "amount_new_admission", "fee_type_id", "academic_year_id", "term_id", "feeable_type", "feeable_id", "created_at") VALUES ('8253', '2340', '0', '89', '56', '5', 'section', '50', '2020-06-23 16:02:59.271264');
-2021-04-13 13:56:20.424 IST [39875] LOG: starting PostgreSQL 13.2 on x86_64-apple-darwin20.3.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit
-2021-04-13 13:56:20.428 IST [39875] LOG: listening on IPv6 address "::1", port 5432
-2021-04-13 13:56:20.428 IST [39875] LOG: listening on IPv4 address "127.0.0.1", port 5432
-2021-04-13 13:56:20.434 IST [39875] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
-2021-04-13 13:56:20.447 IST [39876] LOG: database system was interrupted; last known up at 2021-04-07 21:56:31 IST
-2021-04-13 13:56:20.630 IST [39876] LOG: database system was not properly shut down; automatic recovery in progress
-2021-04-13 13:56:20.634 IST [39876] LOG: redo starts at 0/4A1B5D0
-2021-04-13 13:56:20.634 IST [39876] LOG: invalid record length at 0/4A1B6B8: wanted 24, got 0
-2021-04-13 13:56:20.634 IST [39876] LOG: redo done at 0/4A1B680
-2021-04-13 13:56:20.645 IST [39875] LOG: database system is ready to accept connections
-2021-04-13 13:57:38.422 IST [39997] ERROR: new row for relation "users" violates check constraint "users_blood_group_check"
-2021-04-13 13:57:38.422 IST [39997] DETAIL: Failing row contains (13, Demo Teacher, 1711, null, null, $2y$10$MVlQIOJyYK2gLtDbVP9LNe//4MqnCFwvpNzXvn0c9irwH5ic6gYEK, 1234567890, 123412341239, 1986-10-10, male, null, null, A+, null, t, null, 2021-04-13 08:27:38, 2021-04-13 08:27:38, null).
-2021-04-13 13:57:38.422 IST [39997] STATEMENT: insert into "users" ("username", "name", "phone", "gender", "dob", "blood_group", "aadhar_number", "password", "updated_at", "created_at") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id"
From 859b0b2b614031bc80686fb9d75d13b2552b06bb Mon Sep 17 00:00:00 2001
From: Mehdi Osman
Date: Tue, 4 May 2021 20:05:26 +0200
Subject: [PATCH 03/10] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c655f9b7a..6beb2c0a9 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
Session replay for developers
-The most advanced open-source session replay to build better web apps.
+The most advanced open-source session replay to build delightful web apps.
From 9b5d1418a83177bb66ca221896aa21b23c0c02b7 Mon Sep 17 00:00:00 2001
From: Shekar Siri
Date: Wed, 5 May 2021 17:16:02 +0530
Subject: [PATCH 04/10] sign up check for tenants
---
frontend/app/Router.js | 12 ++++++---
frontend/app/components/Header/Header.js | 2 +-
.../Signup/SignupForm/SignupForm.js | 27 +++++--------------
frontend/app/duck/user.js | 1 +
4 files changed, 16 insertions(+), 26 deletions(-)
diff --git a/frontend/app/Router.js b/frontend/app/Router.js
index 3bdfc3c8f..4885aa27f 100644
--- a/frontend/app/Router.js
+++ b/frontend/app/Router.js
@@ -22,6 +22,7 @@ import FunnelIssueDetails from 'Components/Funnels/FunnelIssueDetails';
import APIClient from './api_client';
import * as routes from './routes';
import Signup from './components/Signup/Signup';
+import { fetchTenants } from 'Duck/user';
const BugFinder = withSiteIdUpdater(BugFinderPure);
const Dashboard = withSiteIdUpdater(DashboardPure);
@@ -54,20 +55,22 @@ const ONBOARDING_PATH = routes.onboarding();
const jwt = state.get('jwt');
const changePassword = state.getIn([ 'user', 'account', 'changePassword' ]);
const userInfoLoading = state.getIn([ 'user', 'fetchUserInfoRequest', 'loading' ]);
+ const fetchingTenants = state.get('user', 'fetchTenantsRequest', 'loading');
return {
jwt,
siteId,
changePassword,
sites: state.getIn([ 'user', 'client', 'sites' ]),
isLoggedIn: jwt !== null && !changePassword,
- loading: siteId === null || userInfoLoading,
+ loading: siteId === null || userInfoLoading || fetchingTenants,
email: state.getIn([ 'user', 'account', 'email' ]),
account: state.getIn([ 'user', 'account' ]),
organisation: state.getIn([ 'user', 'client', 'name' ]),
tenantId: state.getIn([ 'user', 'client', 'tenantId' ]),
+ tenants: state.getIn(['user', 'tenants']),
};
}, {
- fetchUserInfo,
+ fetchUserInfo, fetchTenants
})
class Router extends React.Component {
constructor(props) {
@@ -76,6 +79,7 @@ class Router extends React.Component {
Promise.all([props.fetchUserInfo()])
.then(() => this.onLoginLogout());
}
+ props.fetchTenants();
}
componentDidUpdate(prevProps) {
@@ -89,7 +93,7 @@ class Router extends React.Component {
}
render() {
- const { isLoggedIn, jwt, siteId, sites, loading, changePassword, location } = this.props;
+ const { isLoggedIn, jwt, siteId, sites, loading, changePassword, location, tenants } = this.props;
const siteIdList = sites.map(({ id }) => id).toJS();
const hideHeader = location.pathname && location.pathname.includes('/session/');
@@ -138,7 +142,7 @@ class Router extends React.Component {
-
+ { tenants.length === 0 && }
;
}
diff --git a/frontend/app/components/Header/Header.js b/frontend/app/components/Header/Header.js
index 6e7a6601f..fc3fb870a 100644
--- a/frontend/app/components/Header/Header.js
+++ b/frontend/app/components/Header/Header.js
@@ -99,7 +99,7 @@ const Header = (props) => {
to={ withSiteId(DASHBOARD_PATH, siteId) }
className={ styles.nav }
activeClassName={ styles.active }
- >
+ >
{ 'Metrics' }
diff --git a/frontend/app/components/Signup/SignupForm/SignupForm.js b/frontend/app/components/Signup/SignupForm/SignupForm.js
index b49750016..2bfd480bc 100644
--- a/frontend/app/components/Signup/SignupForm/SignupForm.js
+++ b/frontend/app/components/Signup/SignupForm/SignupForm.js
@@ -1,13 +1,11 @@
-import React, { useState } from 'react'
-import { Icon, Loader, Button, Link, Dropdown, CircularLoader } from 'UI'
-import { forgotPassword, login } from 'App/routes'
+import React from 'react'
+import { Icon, Button, Link, Dropdown, CircularLoader } from 'UI'
+import { login } from 'App/routes'
import ReCAPTCHA from 'react-google-recaptcha'
import stl from './signup.css'
-import cn from 'classnames'
-import { signup, fetchTenants } from 'Duck/user';
+import { signup } from 'Duck/user';
import { connect } from 'react-redux'
-const FORGOT_PASSWORD = forgotPassword()
const LOGIN_ROUTE = login()
const recaptchaRef = React.createRef()
@@ -17,7 +15,7 @@ const recaptchaRef = React.createRef()
errors: state.getIn([ 'user', 'signupRequest', 'errors' ]),
loading: state.getIn([ 'user', 'signupRequest', 'loading' ]),
}),
- { signup, fetchTenants },
+ { signup },
)
export default class SignupForm extends React.Component {
@@ -30,10 +28,6 @@ export default class SignupForm extends React.Component {
organizationName: '',
};
- componentDidMount() {
- this.props.fetchTenants();
- }
-
handleSubmit = (token) => {
const { tenantId, fullname, password, email, projectName, organizationName, auth } = this.state;
this.props.signup({ tenantId, fullname, password, email, projectName, organizationName, auth, 'g-recaptcha-response': token })
@@ -165,17 +159,8 @@ export default class SignupForm extends React.Component {
'Signup'
}
-
- {/*
- {'Back to Login'}
-
*/}
)
}
-}
-
-// export default connect(state => ({
-// errors: state.getIn([ 'user', 'signupRequest', 'errors' ]),
-// loading: state.getIn([ 'user', 'signupRequest', 'loading' ]),
-// }), { signup })(SignupForm)
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/frontend/app/duck/user.js b/frontend/app/duck/user.js
index 83430e72d..3dad02a10 100644
--- a/frontend/app/duck/user.js
+++ b/frontend/app/duck/user.js
@@ -91,6 +91,7 @@ export default withRequestState({
putClientRequest: PUT_CLIENT,
updateAccountRequest: UPDATE_ACCOUNT,
updateAppearance: UPDATE_APPEARANCE,
+ fetchTenantsRequest: FETCH_TENANTS,
}, reducer);
export const login = params => dispatch => dispatch({
From 282cb4642c8beea2c141c9e1c14194d50653495a Mon Sep 17 00:00:00 2001
From: KRAIEM Taha Yassine
Date: Wed, 5 May 2021 19:47:36 +0200
Subject: [PATCH 05/10] API
---
.gitignore | 1 +
api/.chalice/config.json | 72 +
api/.gitignore | 176 ++
api/Dockerfile | 16 +
api/app.py | 96 +
api/build.sh | 31 +
api/chalicelib/__init__.py | 0
api/chalicelib/_overrides.py | 104 +
api/chalicelib/blueprints/__init__.py | 0
api/chalicelib/blueprints/bp_authorizers.py | 37 +
api/chalicelib/blueprints/bp_core.py | 879 +++++++
api/chalicelib/blueprints/bp_core_crons.py | 18 +
api/chalicelib/blueprints/bp_core_dynamic.py | 385 +++
.../blueprints/bp_core_dynamic_crons.py | 13 +
api/chalicelib/blueprints/subs/__init__.py | 0
.../blueprints/subs/bp_dashboard.py | 605 +++++
api/chalicelib/core/__init__.py | 0
api/chalicelib/core/alerts.py | 168 ++
api/chalicelib/core/announcements.py | 42 +
api/chalicelib/core/authorizers.py | 61 +
api/chalicelib/core/boarding.py | 116 +
api/chalicelib/core/collaboration_slack.py | 126 +
api/chalicelib/core/dashboard.py | 2034 ++++++++++++++++
api/chalicelib/core/errors.py | 777 ++++++
api/chalicelib/core/errors_favorite_viewed.py | 91 +
api/chalicelib/core/events.py | 422 ++++
api/chalicelib/core/events_ios.py | 69 +
api/chalicelib/core/funnels.py | 269 +++
api/chalicelib/core/integration_base.py | 53 +
api/chalicelib/core/integration_base_issue.py | 41 +
api/chalicelib/core/integration_github.py | 78 +
.../core/integration_github_issue.py | 100 +
api/chalicelib/core/integration_jira_cloud.py | 101 +
.../core/integration_jira_cloud_issue.py | 56 +
api/chalicelib/core/integrations_manager.py | 42 +
api/chalicelib/core/issues.py | 72 +
api/chalicelib/core/log_tool_bugsnag.py | 73 +
api/chalicelib/core/log_tool_cloudwatch.py | 119 +
api/chalicelib/core/log_tool_datadog.py | 43 +
api/chalicelib/core/log_tool_elasticsearch.py | 94 +
api/chalicelib/core/log_tool_newrelic.py | 50 +
api/chalicelib/core/log_tool_rollbar.py | 38 +
api/chalicelib/core/log_tool_sentry.py | 65 +
api/chalicelib/core/log_tool_stackdriver.py | 42 +
api/chalicelib/core/log_tool_sumologic.py | 53 +
api/chalicelib/core/log_tools.py | 118 +
api/chalicelib/core/metadata.py | 262 ++
api/chalicelib/core/notifications.py | 80 +
api/chalicelib/core/projects.py | 229 ++
api/chalicelib/core/reset_password.py | 66 +
api/chalicelib/core/resources.py | 22 +
api/chalicelib/core/sessions.py | 620 +++++
api/chalicelib/core/sessions_assignments.py | 158 ++
.../core/sessions_favorite_viewed.py | 89 +
api/chalicelib/core/sessions_metas.py | 226 ++
api/chalicelib/core/sessions_mobs.py | 25 +
api/chalicelib/core/significance.py | 627 +++++
api/chalicelib/core/signup.py | 171 ++
api/chalicelib/core/slack.py | 32 +
api/chalicelib/core/socket_ios.py | 22 +
api/chalicelib/core/sourcemaps.py | 157 ++
api/chalicelib/core/sourcemaps_parser.py | 22 +
api/chalicelib/core/telemetry.py | 43 +
api/chalicelib/core/tenants.py | 83 +
api/chalicelib/core/users.py | 463 ++++
api/chalicelib/core/webhook.py | 178 ++
api/chalicelib/core/weekly_report.py | 233 ++
api/chalicelib/utils/TimeUTC.py | 115 +
api/chalicelib/utils/__init__.py | 0
api/chalicelib/utils/args_transformer.py | 10 +
api/chalicelib/utils/captcha.py | 24 +
api/chalicelib/utils/dev.py | 28 +
api/chalicelib/utils/email_handler.py | 90 +
api/chalicelib/utils/email_helper.py | 119 +
.../utils/event_filter_definition.py | 15 +
api/chalicelib/utils/github_client_v3.py | 133 +
api/chalicelib/utils/helper.py | 380 +++
.../utils/html/Project-Weekly-Report.html | 170 ++
.../utils/html/alert_notification.html | 60 +
api/chalicelib/utils/html/assignment.html | 556 +++++
api/chalicelib/utils/html/img/asayer-logo.png | Bin 0 -> 2633 bytes
api/chalicelib/utils/html/img/header.png | Bin 0 -> 507040 bytes
.../utils/html/img/icn-facebook.png | Bin 0 -> 1965 bytes
.../utils/html/img/icn-linkedin.png | Bin 0 -> 2183 bytes
api/chalicelib/utils/html/img/icn-medium.png | Bin 0 -> 3178 bytes
api/chalicelib/utils/html/img/icn-twitter.png | Bin 0 -> 2953 bytes
.../html/img/illustrations/img-no-signal.png | Bin 0 -> 9333 bytes
.../html/img/illustrations/img-welcome.png | Bin 0 -> 10610 bytes
api/chalicelib/utils/html/img/laptop.png | Bin 0 -> 338778 bytes
.../utils/html/img/weekly/arrow-decrease.png | Bin 0 -> 1292 bytes
.../utils/html/img/weekly/arrow-increase.png | Bin 0 -> 1032 bytes
.../utils/html/img/weekly/asayer-logo.png | Bin 0 -> 17190 bytes
api/chalicelib/utils/html/invitation.html | 595 +++++
api/chalicelib/utils/html/reset_password.html | 545 +++++
api/chalicelib/utils/jira_client.py | 327 +++
api/chalicelib/utils/metrics_helper.py | 5 +
api/chalicelib/utils/pg_client.py | 53 +
api/chalicelib/utils/s3.py | 57 +
api/chalicelib/utils/smtp.py | 39 +
api/chalicelib/utils/strings.py | 45 +
api/requirements.txt | 14 +
api/sourcemaps_reader/.gitignore | 11 +
api/sourcemaps_reader/README.md | 15 +
api/sourcemaps_reader/package-lock.json | 109 +
api/sourcemaps_reader/package.json | 16 +
ee/api/.chalice/config.json | 77 +
ee/api/.gitignore | 177 ++
ee/api/app.py | 110 +
ee/api/chalicelib/__init__.py | 0
ee/api/chalicelib/_overrides.py | 104 +
ee/api/chalicelib/blueprints/__init__.py | 0
.../chalicelib/blueprints/bp_authorizers.py | 38 +
ee/api/chalicelib/blueprints/bp_core.py | 879 +++++++
ee/api/chalicelib/blueprints/bp_core_crons.py | 18 +
.../chalicelib/blueprints/bp_core_dynamic.py | 391 +++
.../blueprints/bp_core_dynamic_crons.py | 13 +
ee/api/chalicelib/blueprints/bp_ee.py | 6 +
ee/api/chalicelib/blueprints/bp_ee_crons.py | 6 +
ee/api/chalicelib/blueprints/subs/__init__.py | 0
.../blueprints/subs/bp_dashboard.py | 606 +++++
ee/api/chalicelib/core/__init__.py | 0
ee/api/chalicelib/core/alerts.py | 168 ++
ee/api/chalicelib/core/announcements.py | 42 +
ee/api/chalicelib/core/authorizers.py | 61 +
ee/api/chalicelib/core/collaboration_slack.py | 126 +
.../chalicelib/core/errors_favorite_viewed.py | 91 +
ee/api/chalicelib/core/events.py | 422 ++++
ee/api/chalicelib/core/events_ios.py | 69 +
ee/api/chalicelib/core/funnels.py | 275 +++
ee/api/chalicelib/core/integration_base.py | 53 +
.../chalicelib/core/integration_base_issue.py | 41 +
ee/api/chalicelib/core/integration_github.py | 78 +
.../core/integration_github_issue.py | 100 +
.../chalicelib/core/integration_jira_cloud.py | 101 +
.../core/integration_jira_cloud_issue.py | 56 +
.../chalicelib/core/integrations_manager.py | 42 +
ee/api/chalicelib/core/issues.py | 72 +
ee/api/chalicelib/core/log_tool_bugsnag.py | 73 +
ee/api/chalicelib/core/log_tool_cloudwatch.py | 119 +
ee/api/chalicelib/core/log_tool_datadog.py | 43 +
.../chalicelib/core/log_tool_elasticsearch.py | 94 +
ee/api/chalicelib/core/log_tool_newrelic.py | 50 +
ee/api/chalicelib/core/log_tool_rollbar.py | 38 +
ee/api/chalicelib/core/log_tool_sentry.py | 65 +
.../chalicelib/core/log_tool_stackdriver.py | 42 +
ee/api/chalicelib/core/log_tool_sumologic.py | 53 +
ee/api/chalicelib/core/log_tools.py | 120 +
ee/api/chalicelib/core/metadata.py | 262 ++
ee/api/chalicelib/core/reset_password.py | 66 +
ee/api/chalicelib/core/sessions.py | 617 +++++
.../chalicelib/core/sessions_assignments.py | 158 ++
.../core/sessions_favorite_viewed.py | 89 +
ee/api/chalicelib/core/sessions_metas.py | 226 ++
ee/api/chalicelib/core/sessions_mobs.py | 26 +
ee/api/chalicelib/core/significance.py | 627 +++++
ee/api/chalicelib/core/slack.py | 32 +
ee/api/chalicelib/core/socket_ios.py | 22 +
ee/api/chalicelib/core/sourcemaps.py | 156 ++
ee/api/chalicelib/core/sourcemaps_parser.py | 22 +
ee/api/chalicelib/core/telemetry.py | 43 +
ee/api/chalicelib/core/weekly_report.py | 233 ++
ee/api/chalicelib/ee/__init__.py | 0
ee/api/chalicelib/ee/boarding.py | 121 +
ee/api/chalicelib/ee/dashboard.py | 2139 +++++++++++++++++
ee/api/chalicelib/ee/errors.py | 788 ++++++
ee/api/chalicelib/ee/notifications.py | 86 +
ee/api/chalicelib/ee/projects.py | 169 ++
ee/api/chalicelib/ee/resources.py | 25 +
ee/api/chalicelib/ee/signup.py | 127 +
ee/api/chalicelib/ee/telemetry.py | 54 +
ee/api/chalicelib/ee/tenants.py | 86 +
ee/api/chalicelib/ee/users.py | 473 ++++
ee/api/chalicelib/ee/utils/__init__.py | 0
ee/api/chalicelib/ee/utils/ch_client.py | 29 +
ee/api/chalicelib/ee/webhook.py | 185 ++
ee/api/chalicelib/utils/TimeUTC.py | 115 +
ee/api/chalicelib/utils/__init__.py | 0
ee/api/chalicelib/utils/args_transformer.py | 10 +
ee/api/chalicelib/utils/captcha.py | 24 +
ee/api/chalicelib/utils/dev.py | 28 +
ee/api/chalicelib/utils/email_handler.py | 90 +
ee/api/chalicelib/utils/email_helper.py | 119 +
.../utils/event_filter_definition.py | 15 +
ee/api/chalicelib/utils/github_client_v3.py | 133 +
ee/api/chalicelib/utils/helper.py | 380 +++
.../utils/html/Project-Weekly-Report.html | 170 ++
.../utils/html/alert_notification.html | 60 +
ee/api/chalicelib/utils/html/assignment.html | 556 +++++
.../chalicelib/utils/html/img/asayer-logo.png | Bin 0 -> 2633 bytes
ee/api/chalicelib/utils/html/img/header.png | Bin 0 -> 507040 bytes
.../utils/html/img/icn-facebook.png | Bin 0 -> 1965 bytes
.../utils/html/img/icn-linkedin.png | Bin 0 -> 2183 bytes
.../chalicelib/utils/html/img/icn-medium.png | Bin 0 -> 3178 bytes
.../chalicelib/utils/html/img/icn-twitter.png | Bin 0 -> 2953 bytes
.../html/img/illustrations/img-no-signal.png | Bin 0 -> 9333 bytes
.../html/img/illustrations/img-welcome.png | Bin 0 -> 10610 bytes
ee/api/chalicelib/utils/html/img/laptop.png | Bin 0 -> 338778 bytes
.../utils/html/img/weekly/arrow-decrease.png | Bin 0 -> 1292 bytes
.../utils/html/img/weekly/arrow-increase.png | Bin 0 -> 1032 bytes
.../utils/html/img/weekly/asayer-logo.png | Bin 0 -> 17190 bytes
ee/api/chalicelib/utils/html/invitation.html | 595 +++++
.../chalicelib/utils/html/reset_password.html | 545 +++++
ee/api/chalicelib/utils/jira_client.py | 327 +++
ee/api/chalicelib/utils/metrics_helper.py | 5 +
ee/api/chalicelib/utils/pg_client.py | 55 +
ee/api/chalicelib/utils/s3.py | 57 +
ee/api/chalicelib/utils/s3urls.py | 120 +
ee/api/chalicelib/utils/smtp.py | 39 +
ee/api/chalicelib/utils/strings.py | 45 +
ee/api/requirements.txt | 15 +
ee/api/sourcemaps_reader/.gitignore | 11 +
ee/api/sourcemaps_reader/README.md | 15 +
ee/api/sourcemaps_reader/package-lock.json | 109 +
ee/api/sourcemaps_reader/package.json | 16 +
214 files changed, 30619 insertions(+)
create mode 100644 api/.chalice/config.json
create mode 100644 api/.gitignore
create mode 100644 api/Dockerfile
create mode 100644 api/app.py
create mode 100644 api/build.sh
create mode 100644 api/chalicelib/__init__.py
create mode 100644 api/chalicelib/_overrides.py
create mode 100644 api/chalicelib/blueprints/__init__.py
create mode 100644 api/chalicelib/blueprints/bp_authorizers.py
create mode 100644 api/chalicelib/blueprints/bp_core.py
create mode 100644 api/chalicelib/blueprints/bp_core_crons.py
create mode 100644 api/chalicelib/blueprints/bp_core_dynamic.py
create mode 100644 api/chalicelib/blueprints/bp_core_dynamic_crons.py
create mode 100644 api/chalicelib/blueprints/subs/__init__.py
create mode 100644 api/chalicelib/blueprints/subs/bp_dashboard.py
create mode 100644 api/chalicelib/core/__init__.py
create mode 100644 api/chalicelib/core/alerts.py
create mode 100644 api/chalicelib/core/announcements.py
create mode 100644 api/chalicelib/core/authorizers.py
create mode 100644 api/chalicelib/core/boarding.py
create mode 100644 api/chalicelib/core/collaboration_slack.py
create mode 100644 api/chalicelib/core/dashboard.py
create mode 100644 api/chalicelib/core/errors.py
create mode 100644 api/chalicelib/core/errors_favorite_viewed.py
create mode 100644 api/chalicelib/core/events.py
create mode 100644 api/chalicelib/core/events_ios.py
create mode 100644 api/chalicelib/core/funnels.py
create mode 100644 api/chalicelib/core/integration_base.py
create mode 100644 api/chalicelib/core/integration_base_issue.py
create mode 100644 api/chalicelib/core/integration_github.py
create mode 100644 api/chalicelib/core/integration_github_issue.py
create mode 100644 api/chalicelib/core/integration_jira_cloud.py
create mode 100644 api/chalicelib/core/integration_jira_cloud_issue.py
create mode 100644 api/chalicelib/core/integrations_manager.py
create mode 100644 api/chalicelib/core/issues.py
create mode 100644 api/chalicelib/core/log_tool_bugsnag.py
create mode 100644 api/chalicelib/core/log_tool_cloudwatch.py
create mode 100644 api/chalicelib/core/log_tool_datadog.py
create mode 100644 api/chalicelib/core/log_tool_elasticsearch.py
create mode 100644 api/chalicelib/core/log_tool_newrelic.py
create mode 100644 api/chalicelib/core/log_tool_rollbar.py
create mode 100644 api/chalicelib/core/log_tool_sentry.py
create mode 100644 api/chalicelib/core/log_tool_stackdriver.py
create mode 100644 api/chalicelib/core/log_tool_sumologic.py
create mode 100644 api/chalicelib/core/log_tools.py
create mode 100644 api/chalicelib/core/metadata.py
create mode 100644 api/chalicelib/core/notifications.py
create mode 100644 api/chalicelib/core/projects.py
create mode 100644 api/chalicelib/core/reset_password.py
create mode 100644 api/chalicelib/core/resources.py
create mode 100644 api/chalicelib/core/sessions.py
create mode 100644 api/chalicelib/core/sessions_assignments.py
create mode 100644 api/chalicelib/core/sessions_favorite_viewed.py
create mode 100644 api/chalicelib/core/sessions_metas.py
create mode 100644 api/chalicelib/core/sessions_mobs.py
create mode 100644 api/chalicelib/core/significance.py
create mode 100644 api/chalicelib/core/signup.py
create mode 100644 api/chalicelib/core/slack.py
create mode 100644 api/chalicelib/core/socket_ios.py
create mode 100644 api/chalicelib/core/sourcemaps.py
create mode 100644 api/chalicelib/core/sourcemaps_parser.py
create mode 100644 api/chalicelib/core/telemetry.py
create mode 100644 api/chalicelib/core/tenants.py
create mode 100644 api/chalicelib/core/users.py
create mode 100644 api/chalicelib/core/webhook.py
create mode 100644 api/chalicelib/core/weekly_report.py
create mode 100644 api/chalicelib/utils/TimeUTC.py
create mode 100644 api/chalicelib/utils/__init__.py
create mode 100644 api/chalicelib/utils/args_transformer.py
create mode 100644 api/chalicelib/utils/captcha.py
create mode 100644 api/chalicelib/utils/dev.py
create mode 100644 api/chalicelib/utils/email_handler.py
create mode 100644 api/chalicelib/utils/email_helper.py
create mode 100644 api/chalicelib/utils/event_filter_definition.py
create mode 100644 api/chalicelib/utils/github_client_v3.py
create mode 100644 api/chalicelib/utils/helper.py
create mode 100644 api/chalicelib/utils/html/Project-Weekly-Report.html
create mode 100644 api/chalicelib/utils/html/alert_notification.html
create mode 100644 api/chalicelib/utils/html/assignment.html
create mode 100644 api/chalicelib/utils/html/img/asayer-logo.png
create mode 100644 api/chalicelib/utils/html/img/header.png
create mode 100644 api/chalicelib/utils/html/img/icn-facebook.png
create mode 100644 api/chalicelib/utils/html/img/icn-linkedin.png
create mode 100644 api/chalicelib/utils/html/img/icn-medium.png
create mode 100644 api/chalicelib/utils/html/img/icn-twitter.png
create mode 100644 api/chalicelib/utils/html/img/illustrations/img-no-signal.png
create mode 100644 api/chalicelib/utils/html/img/illustrations/img-welcome.png
create mode 100644 api/chalicelib/utils/html/img/laptop.png
create mode 100644 api/chalicelib/utils/html/img/weekly/arrow-decrease.png
create mode 100644 api/chalicelib/utils/html/img/weekly/arrow-increase.png
create mode 100644 api/chalicelib/utils/html/img/weekly/asayer-logo.png
create mode 100644 api/chalicelib/utils/html/invitation.html
create mode 100644 api/chalicelib/utils/html/reset_password.html
create mode 100644 api/chalicelib/utils/jira_client.py
create mode 100644 api/chalicelib/utils/metrics_helper.py
create mode 100644 api/chalicelib/utils/pg_client.py
create mode 100644 api/chalicelib/utils/s3.py
create mode 100644 api/chalicelib/utils/smtp.py
create mode 100644 api/chalicelib/utils/strings.py
create mode 100644 api/requirements.txt
create mode 100644 api/sourcemaps_reader/.gitignore
create mode 100644 api/sourcemaps_reader/README.md
create mode 100644 api/sourcemaps_reader/package-lock.json
create mode 100644 api/sourcemaps_reader/package.json
create mode 100644 ee/api/.chalice/config.json
create mode 100644 ee/api/.gitignore
create mode 100644 ee/api/app.py
create mode 100644 ee/api/chalicelib/__init__.py
create mode 100644 ee/api/chalicelib/_overrides.py
create mode 100644 ee/api/chalicelib/blueprints/__init__.py
create mode 100644 ee/api/chalicelib/blueprints/bp_authorizers.py
create mode 100644 ee/api/chalicelib/blueprints/bp_core.py
create mode 100644 ee/api/chalicelib/blueprints/bp_core_crons.py
create mode 100644 ee/api/chalicelib/blueprints/bp_core_dynamic.py
create mode 100644 ee/api/chalicelib/blueprints/bp_core_dynamic_crons.py
create mode 100644 ee/api/chalicelib/blueprints/bp_ee.py
create mode 100644 ee/api/chalicelib/blueprints/bp_ee_crons.py
create mode 100644 ee/api/chalicelib/blueprints/subs/__init__.py
create mode 100644 ee/api/chalicelib/blueprints/subs/bp_dashboard.py
create mode 100644 ee/api/chalicelib/core/__init__.py
create mode 100644 ee/api/chalicelib/core/alerts.py
create mode 100644 ee/api/chalicelib/core/announcements.py
create mode 100644 ee/api/chalicelib/core/authorizers.py
create mode 100644 ee/api/chalicelib/core/collaboration_slack.py
create mode 100644 ee/api/chalicelib/core/errors_favorite_viewed.py
create mode 100644 ee/api/chalicelib/core/events.py
create mode 100644 ee/api/chalicelib/core/events_ios.py
create mode 100644 ee/api/chalicelib/core/funnels.py
create mode 100644 ee/api/chalicelib/core/integration_base.py
create mode 100644 ee/api/chalicelib/core/integration_base_issue.py
create mode 100644 ee/api/chalicelib/core/integration_github.py
create mode 100644 ee/api/chalicelib/core/integration_github_issue.py
create mode 100644 ee/api/chalicelib/core/integration_jira_cloud.py
create mode 100644 ee/api/chalicelib/core/integration_jira_cloud_issue.py
create mode 100644 ee/api/chalicelib/core/integrations_manager.py
create mode 100644 ee/api/chalicelib/core/issues.py
create mode 100644 ee/api/chalicelib/core/log_tool_bugsnag.py
create mode 100644 ee/api/chalicelib/core/log_tool_cloudwatch.py
create mode 100644 ee/api/chalicelib/core/log_tool_datadog.py
create mode 100644 ee/api/chalicelib/core/log_tool_elasticsearch.py
create mode 100644 ee/api/chalicelib/core/log_tool_newrelic.py
create mode 100644 ee/api/chalicelib/core/log_tool_rollbar.py
create mode 100644 ee/api/chalicelib/core/log_tool_sentry.py
create mode 100644 ee/api/chalicelib/core/log_tool_stackdriver.py
create mode 100644 ee/api/chalicelib/core/log_tool_sumologic.py
create mode 100644 ee/api/chalicelib/core/log_tools.py
create mode 100644 ee/api/chalicelib/core/metadata.py
create mode 100644 ee/api/chalicelib/core/reset_password.py
create mode 100644 ee/api/chalicelib/core/sessions.py
create mode 100644 ee/api/chalicelib/core/sessions_assignments.py
create mode 100644 ee/api/chalicelib/core/sessions_favorite_viewed.py
create mode 100644 ee/api/chalicelib/core/sessions_metas.py
create mode 100644 ee/api/chalicelib/core/sessions_mobs.py
create mode 100644 ee/api/chalicelib/core/significance.py
create mode 100644 ee/api/chalicelib/core/slack.py
create mode 100644 ee/api/chalicelib/core/socket_ios.py
create mode 100644 ee/api/chalicelib/core/sourcemaps.py
create mode 100644 ee/api/chalicelib/core/sourcemaps_parser.py
create mode 100644 ee/api/chalicelib/core/telemetry.py
create mode 100644 ee/api/chalicelib/core/weekly_report.py
create mode 100644 ee/api/chalicelib/ee/__init__.py
create mode 100644 ee/api/chalicelib/ee/boarding.py
create mode 100644 ee/api/chalicelib/ee/dashboard.py
create mode 100644 ee/api/chalicelib/ee/errors.py
create mode 100644 ee/api/chalicelib/ee/notifications.py
create mode 100644 ee/api/chalicelib/ee/projects.py
create mode 100644 ee/api/chalicelib/ee/resources.py
create mode 100644 ee/api/chalicelib/ee/signup.py
create mode 100644 ee/api/chalicelib/ee/telemetry.py
create mode 100644 ee/api/chalicelib/ee/tenants.py
create mode 100644 ee/api/chalicelib/ee/users.py
create mode 100644 ee/api/chalicelib/ee/utils/__init__.py
create mode 100644 ee/api/chalicelib/ee/utils/ch_client.py
create mode 100644 ee/api/chalicelib/ee/webhook.py
create mode 100644 ee/api/chalicelib/utils/TimeUTC.py
create mode 100644 ee/api/chalicelib/utils/__init__.py
create mode 100644 ee/api/chalicelib/utils/args_transformer.py
create mode 100644 ee/api/chalicelib/utils/captcha.py
create mode 100644 ee/api/chalicelib/utils/dev.py
create mode 100644 ee/api/chalicelib/utils/email_handler.py
create mode 100644 ee/api/chalicelib/utils/email_helper.py
create mode 100644 ee/api/chalicelib/utils/event_filter_definition.py
create mode 100644 ee/api/chalicelib/utils/github_client_v3.py
create mode 100644 ee/api/chalicelib/utils/helper.py
create mode 100644 ee/api/chalicelib/utils/html/Project-Weekly-Report.html
create mode 100644 ee/api/chalicelib/utils/html/alert_notification.html
create mode 100644 ee/api/chalicelib/utils/html/assignment.html
create mode 100644 ee/api/chalicelib/utils/html/img/asayer-logo.png
create mode 100644 ee/api/chalicelib/utils/html/img/header.png
create mode 100644 ee/api/chalicelib/utils/html/img/icn-facebook.png
create mode 100644 ee/api/chalicelib/utils/html/img/icn-linkedin.png
create mode 100644 ee/api/chalicelib/utils/html/img/icn-medium.png
create mode 100644 ee/api/chalicelib/utils/html/img/icn-twitter.png
create mode 100644 ee/api/chalicelib/utils/html/img/illustrations/img-no-signal.png
create mode 100644 ee/api/chalicelib/utils/html/img/illustrations/img-welcome.png
create mode 100644 ee/api/chalicelib/utils/html/img/laptop.png
create mode 100644 ee/api/chalicelib/utils/html/img/weekly/arrow-decrease.png
create mode 100644 ee/api/chalicelib/utils/html/img/weekly/arrow-increase.png
create mode 100644 ee/api/chalicelib/utils/html/img/weekly/asayer-logo.png
create mode 100644 ee/api/chalicelib/utils/html/invitation.html
create mode 100644 ee/api/chalicelib/utils/html/reset_password.html
create mode 100644 ee/api/chalicelib/utils/jira_client.py
create mode 100644 ee/api/chalicelib/utils/metrics_helper.py
create mode 100644 ee/api/chalicelib/utils/pg_client.py
create mode 100644 ee/api/chalicelib/utils/s3.py
create mode 100644 ee/api/chalicelib/utils/s3urls.py
create mode 100644 ee/api/chalicelib/utils/smtp.py
create mode 100644 ee/api/chalicelib/utils/strings.py
create mode 100644 ee/api/requirements.txt
create mode 100644 ee/api/sourcemaps_reader/.gitignore
create mode 100644 ee/api/sourcemaps_reader/README.md
create mode 100644 ee/api/sourcemaps_reader/package-lock.json
create mode 100644 ee/api/sourcemaps_reader/package.json
diff --git a/.gitignore b/.gitignore
index b92743393..ee79ca544 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ public
node_modules
*DS_Store
*.env
+.idea
\ No newline at end of file
diff --git a/api/.chalice/config.json b/api/.chalice/config.json
new file mode 100644
index 000000000..d6c3aa2f1
--- /dev/null
+++ b/api/.chalice/config.json
@@ -0,0 +1,72 @@
+{
+ "version": "2.0",
+ "app_name": "parrot",
+ "environment_variables": {
+ "version": "0.0.0"
+ },
+ "stages": {
+ "default-foss": {
+ "api_gateway_stage": "default-fos",
+ "manage_iam_role": false,
+ "iam_role_arn": "",
+ "autogen_policy": true,
+ "environment_variables": {
+ "isFOS": "true",
+ "isEE": "false",
+ "stage": "default-fos",
+ "jwt_issuer": "asayer-default-fos",
+ "allowCron": "true",
+ "sentry": "false",
+ "sentryURL": "",
+ "pg_host": "",
+ "pg_port": "5432",
+ "pg_dbname": "",
+ "pg_user": "",
+ "pg_password": "",
+ "alert_ntf": "http://127.0.0.1:8000/async/alerts/notifications/%s",
+ "email_signup": "http://127.0.0.1:8000/async/email_signup/%s",
+ "email_funnel": "http://127.0.0.1:8000/async/funnel/%s",
+ "email_basic": "http://127.0.0.1:8000/async/basic/%s",
+ "assign_link": "http://127.0.0.1:8000/async/email_assignment",
+ "verification_link": "http://127.0.0.1:8000/email/validate/",
+ "verification_success_redirect": "",
+ "verification_fail_redirect": "",
+ "captcha_server": "",
+ "captcha_key": "",
+ "jira_api": "http://127.0.0.1:3000/dev",
+ "github_api": "http://127.0.0.1:4000/dev",
+ "sessions_bucket": "",
+ "sessions_region": "",
+ "stack_reader": "",
+ "put_S3_TTL": "20",
+ "sourcemaps_bucket": "",
+ "sourcemaps_bucket_key": "",
+ "sourcemaps_bucket_secret": "",
+ "sourcemaps_bucket_region": "",
+ "js_cache_bucket": "",
+ "web_mobs": "https://mobs-staging.asayer.io",
+ "async_Token": "",
+ "EMAIL_HOST": "",
+ "EMAIL_PORT": "587",
+ "EMAIL_USER": "",
+ "EMAIL_PASSWORD": "",
+ "EMAIL_USE_TLS": "true",
+ "EMAIL_USE_SSL": "false",
+ "EMAIL_SSL_KEY": "",
+ "EMAIL_SSL_CERT": "",
+ "EMAIL_FROM": "OpenReplay",
+ "SITE_URL": "",
+ "announcement_bucket": "",
+ "jwt_secret": "",
+ "jwt_algorithm": "HS512",
+ "jwt_exp_delta_seconds": "2592000"
+ },
+ "lambda_timeout": 150,
+ "lambda_memory_size": 400,
+ "subnet_ids": [
+ ],
+ "security_group_ids": [
+ ]
+ }
+ }
+}
diff --git a/api/.gitignore b/api/.gitignore
new file mode 100644
index 000000000..d9688e343
--- /dev/null
+++ b/api/.gitignore
@@ -0,0 +1,176 @@
+# Created by .ignore support plugin (hsz.mobi)
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff:
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/dictionaries
+
+# Sensitive or high-churn files:
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.xml
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+
+# Gradle:
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# CMake
+cmake-build-debug/
+
+# Mongo Explorer plugin:
+.idea/**/mongoSettings.xml
+
+## File-based project format:
+*.iws
+
+## Plugin-specific files:
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+### Example user template template
+### Example user template
+
+# IntelliJ project files
+.idea
+*.iml
+out
+gen### Python template
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+.static_storage/
+.media/
+local_settings.py
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+/.chalice/deployments/
+
+vendor
+
+
+logs*.txt
+*.csv
+
+*.p
+*.js
+SUBNETS.json
+
+./chalicelib/.configs
diff --git a/api/Dockerfile b/api/Dockerfile
new file mode 100644
index 000000000..4d25a923b
--- /dev/null
+++ b/api/Dockerfile
@@ -0,0 +1,16 @@
+FROM python:3.6-slim
+LABEL Maintainer="Rajesh Rajendran"
+WORKDIR /work
+COPY . .
+RUN pip install -r requirements.txt -t ./vendor --upgrade
+RUN pip install chalice==1.22.2
+
+# Add Tini
+# Startup daemon
+ENV TINI_VERSION v0.19.0
+ARG envarg
+ENV ENTERPRISE_BUILD ${envarg}
+ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
+RUN chmod +x /tini
+ENTRYPOINT ["/tini", "--"]
+CMD chalice local --no-autoreload --host 0.0.0.0 --stage ${ENTERPRISE_BUILD}
\ No newline at end of file
diff --git a/api/app.py b/api/app.py
new file mode 100644
index 000000000..9edf3453b
--- /dev/null
+++ b/api/app.py
@@ -0,0 +1,96 @@
+import sentry_sdk
+from chalice import Chalice, Response
+from sentry_sdk import configure_scope
+
+from chalicelib import _overrides
+from chalicelib.blueprints import bp_authorizers
+from chalicelib.blueprints import bp_core, bp_core_crons
+from chalicelib.blueprints import bp_core_dynamic, bp_core_dynamic_crons
+from chalicelib.blueprints.subs import bp_dashboard
+from chalicelib.utils import helper
+from chalicelib.utils import pg_client
+from chalicelib.utils.helper import environ
+
+app = Chalice(app_name='parrot')
+app.debug = not helper.is_production() or helper.is_local()
+
+sentry_sdk.init(environ["sentryURL"])
+
+# Monkey-patch print for DataDog hack
+import sys
+import traceback
+
+old_tb = traceback.print_exception
+old_f = sys.stdout
+old_e = sys.stderr
+ASAYER_SESSION_ID = None
+
+
+class F:
+ def write(self, x):
+ if ASAYER_SESSION_ID is not None and x != '\n' and not helper.is_local():
+ old_f.write(f"[asayer_session_id={ASAYER_SESSION_ID}] {x}")
+ else:
+ old_f.write(x)
+
+ def flush(self):
+ pass
+
+
+def tb_print_exception(etype, value, tb, limit=None, file=None, chain=True):
+ if ASAYER_SESSION_ID is not None and not helper.is_local():
+ # bugsnag.notify(Exception(str(value)), meta_data={"special_info": {"asayerSessionId": ASAYER_SESSION_ID}})
+ value = type(value)(f"[asayer_session_id={ASAYER_SESSION_ID}] " + str(value))
+
+ old_tb(etype, value, tb, limit, file, chain)
+
+
+if helper.is_production():
+ traceback.print_exception = tb_print_exception
+
+sys.stdout = F()
+sys.stderr = F()
+# ---End Monkey-patch
+
+
+_overrides.chalice_app(app)
+
+# v0505
+@app.middleware('http')
+def asayer_middleware(event, get_response):
+ global ASAYER_SESSION_ID
+ ASAYER_SESSION_ID = app.current_request.headers.get('vnd.asayer.io.sid')
+ if "authorizer" in event.context and event.context["authorizer"] is None:
+ print("Deleted user!!")
+ pg_client.close()
+ return Response(body={"errors": ["Deleted user"]}, status_code=403)
+
+ try:
+ if helper.TRACK_TIME:
+ import time
+ now = int(time.time() * 1000)
+ response = get_response(event)
+ if helper.TRACK_TIME:
+ print(f"Execution time: {int(time.time() * 1000) - now} ms")
+ except Exception as e:
+ print("middleware exception handling")
+ print(e)
+ pg_client.close()
+ if helper.allow_sentry() and ASAYER_SESSION_ID is not None and not helper.is_local():
+ with configure_scope() as scope:
+ scope.set_tag('stage', environ["stage"])
+ scope.set_tag('openReplaySessionToken', ASAYER_SESSION_ID)
+ scope.set_extra("context", event.context)
+ sentry_sdk.capture_exception(e)
+ raise e
+ pg_client.close()
+ return response
+
+
+# Open source
+app.register_blueprint(bp_authorizers.app)
+app.register_blueprint(bp_core.app)
+app.register_blueprint(bp_core_crons.app)
+app.register_blueprint(bp_core_dynamic.app)
+app.register_blueprint(bp_core_dynamic_crons.app)
+app.register_blueprint(bp_dashboard.app)
diff --git a/api/build.sh b/api/build.sh
new file mode 100644
index 000000000..a3f129d0e
--- /dev/null
+++ b/api/build.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Script to build api module
+# flags to accept:
+# envarg: build for enterprize edition.
+# Default will be OSS build.
+
+# Usage: bash build.sh
+
+git_sha1=$(git rev-parse HEAD)
+envarg="default-foss"
+check_prereq() {
+ which docker || {
+ echo "Docker not installed, please install docker."
+ exit=1
+ }
+ [[ exit -eq 1 ]] && exit 1
+}
+
+function build_api(){
+ # Copy enterprize code
+ [[ $1 == "ee" ]] && {
+ cp -rf ../ee/api/* ./
+ cp -rf ../ee/api/.chalice/* ./.chalice/
+ envarg="default-ee"
+ }
+ docker build -f ./Dockerfile --build-arg envarg=$envarg -t ${DOCKER_REPO:-'local'}/chalice:${git_sha1} .
+}
+
+check_prereq
+build_api $1
diff --git a/api/chalicelib/__init__.py b/api/chalicelib/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/api/chalicelib/_overrides.py b/api/chalicelib/_overrides.py
new file mode 100644
index 000000000..5033b0324
--- /dev/null
+++ b/api/chalicelib/_overrides.py
@@ -0,0 +1,104 @@
+from chalice import Chalice, CORSConfig
+from chalicelib.blueprints import bp_authorizers
+from chalicelib.core import authorizers
+
+import sched
+import threading
+import time
+from datetime import datetime
+import pytz
+from croniter import croniter
+
+base_time = datetime.now(pytz.utc)
+
+cors_config = CORSConfig(
+ allow_origin='*',
+ allow_headers=['vnd.asayer.io.sid'],
+ # max_age=600,
+ # expose_headers=['X-Special-Header'],
+ allow_credentials=True
+)
+
+
+def chalice_app(app):
+ def app_route(self, path, **kwargs):
+ kwargs.setdefault('cors', cors_config)
+ kwargs.setdefault('authorizer', bp_authorizers.jwt_authorizer)
+ handler_type = 'route'
+ name = kwargs.pop('name', None)
+ registration_kwargs = {'path': path, 'kwargs': kwargs, 'authorizer': kwargs.get("authorizer")}
+
+ def _register_handler(user_handler):
+ handler_name = name
+ if handler_name is None:
+ handler_name = user_handler.__name__
+ if registration_kwargs is not None:
+ kwargs = registration_kwargs
+ else:
+ kwargs = {}
+
+ if kwargs['authorizer'] == bp_authorizers.jwt_authorizer \
+ or kwargs['authorizer'] == bp_authorizers.api_key_authorizer:
+ def _user_handler(context=None, **args):
+ if context is not None:
+ args['context'] = context
+ else:
+ authorizer_context = app.current_request.context['authorizer']
+ if kwargs['authorizer'] == bp_authorizers.jwt_authorizer:
+ args['context'] = authorizers.jwt_context(authorizer_context)
+ else:
+ args['context'] = authorizer_context
+ return user_handler(**args)
+
+ wrapped = self._wrap_handler(handler_type, handler_name, _user_handler)
+ self._register_handler(handler_type, handler_name, _user_handler, wrapped, kwargs)
+ else:
+ wrapped = self._wrap_handler(handler_type, handler_name, user_handler)
+ self._register_handler(handler_type, handler_name, user_handler, wrapped, kwargs)
+ return wrapped
+
+ return _register_handler
+
+ app.route = app_route.__get__(app, Chalice)
+
+ def app_schedule(self, expression, name=None, description=''):
+ handler_type = 'schedule'
+ registration_kwargs = {'expression': expression,
+ 'description': description}
+
+ def _register_handler(user_handler):
+ handler_name = name
+ if handler_name is None:
+ handler_name = user_handler.__name__
+ kwargs = registration_kwargs
+ cron_expression = kwargs["expression"].to_string()[len("cron("):-1]
+ if len(cron_expression.split(" ")) > 5:
+ cron_expression = " ".join(cron_expression.split(" ")[:-1])
+ cron_expression = cron_expression.replace("?", "*")
+ cron_shell(user_handler, cron_expression)
+
+ wrapped = self._wrap_handler(handler_type, handler_name, user_handler)
+ self._register_handler(handler_type, handler_name, user_handler, wrapped, kwargs)
+ return wrapped
+
+ return _register_handler
+
+ app.schedule = app_schedule.__get__(app, Chalice)
+
+ def spawn(function, args):
+ th = threading.Thread(target=function, kwargs=args)
+ th.setDaemon(True)
+ th.start()
+
+ def cron_shell(function, cron_expression):
+ def to_start():
+ scheduler = sched.scheduler(time.time, time.sleep)
+ citer = croniter(cron_expression, base_time)
+ while True:
+ next_execution = citer.get_next(datetime)
+ print(f"{function.__name__} next execution: {next_execution}")
+ scheduler.enterabs(next_execution.timestamp(), 1, function, argument=(None,))
+ scheduler.run()
+ print(f"{function.__name__} executed: {next_execution}")
+
+ spawn(to_start, None)
diff --git a/api/chalicelib/blueprints/__init__.py b/api/chalicelib/blueprints/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/api/chalicelib/blueprints/bp_authorizers.py b/api/chalicelib/blueprints/bp_authorizers.py
new file mode 100644
index 000000000..414394e5a
--- /dev/null
+++ b/api/chalicelib/blueprints/bp_authorizers.py
@@ -0,0 +1,37 @@
+from chalice import Blueprint, AuthResponse
+from chalicelib.core import authorizers
+
+
+from chalicelib.core import users
+app = Blueprint(__name__)
+
+
+@app.authorizer()
+def api_key_authorizer(auth_request):
+ r = authorizers.api_key_authorizer(auth_request.token)
+ if r is None:
+ return AuthResponse(routes=[], principal_id=None)
+
+ return AuthResponse(
+ routes=['*'],
+ principal_id=r['tenantId'],
+ context=r
+ )
+
+
+@app.authorizer(ttl_seconds=60)
+def jwt_authorizer(auth_request):
+ print("---- Auth")
+ jwt_payload = authorizers.jwt_authorizer(auth_request.token)
+ print(jwt_payload)
+ if jwt_payload is None \
+ or jwt_payload.get("iat") is None or jwt_payload.get("aud") is None \
+ or not users.auth_exists(user_id=jwt_payload["userId"], tenant_id=jwt_payload["tenantId"],
+ jwt_iat=jwt_payload["iat"], jwt_aud=jwt_payload["aud"]):
+ return AuthResponse(routes=[], principal_id=None)
+
+ return AuthResponse(
+ routes=['*'],
+ principal_id=jwt_payload['userId'],
+ context=jwt_payload
+ )
diff --git a/api/chalicelib/blueprints/bp_core.py b/api/chalicelib/blueprints/bp_core.py
new file mode 100644
index 000000000..f2ca10746
--- /dev/null
+++ b/api/chalicelib/blueprints/bp_core.py
@@ -0,0 +1,879 @@
+from chalicelib.utils.helper import environ
+
+from chalice import Blueprint
+from chalice import Response
+
+from chalicelib import _overrides
+from chalicelib.blueprints import bp_authorizers
+from chalicelib.core import log_tool_rollbar, sourcemaps, events, sessions_assignments, projects, \
+ sessions_metas, alerts, funnels, issues, integrations_manager, errors_favorite_viewed, metadata, \
+ log_tool_elasticsearch, log_tool_datadog, \
+ log_tool_stackdriver, reset_password, sessions_favorite_viewed, \
+ log_tool_cloudwatch, log_tool_sentry, log_tool_sumologic, log_tools, errors, sessions, \
+ log_tool_newrelic, announcements, log_tool_bugsnag, weekly_report, integration_jira_cloud, integration_github
+from chalicelib.core.collaboration_slack import Slack
+from chalicelib.utils import email_helper
+
+app = Blueprint(__name__)
+_overrides.chalice_app(app)
+
+
+@app.route('/{projectId}/sessions2/favorite', methods=['GET'])
+def get_favorite_sessions2(projectId, context):
+ params = app.current_request.query_params
+
+ return {
+ 'data': sessions.get_favorite_sessions(project_id=projectId, user_id=context["userId"], include_viewed=True)
+ }
+
+
+@app.route('/{projectId}/sessions2/{sessionId}', methods=['GET'])
+def get_session2(projectId, sessionId, context):
+ data = sessions.get_by_id2_pg(project_id=projectId, session_id=sessionId, full_data=True, user_id=context["userId"],
+ include_fav_viewed=True, group_metadata=True)
+ if data is not None:
+ sessions_favorite_viewed.view_session(project_id=projectId, user_id=context['userId'], session_id=sessionId)
+ return {
+ 'data': data
+ }
+
+
+@app.route('/{projectId}/sessions2/{sessionId}/favorite', methods=['GET'])
+def add_remove_favorite_session2(projectId, sessionId, context):
+ return {
+ "data": sessions_favorite_viewed.favorite_session(project_id=projectId, user_id=context['userId'],
+ session_id=sessionId)}
+
+
+@app.route('/{projectId}/sessions2/{sessionId}/assign', methods=['GET'])
+def assign_session(projectId, sessionId, context):
+ data = sessions_assignments.get_by_session(project_id=projectId, session_id=sessionId,
+ tenant_id=context['tenantId'],
+ user_id=context["userId"])
+ if "errors" in data:
+ return data
+ return {
+ 'data': data
+ }
+
+
+@app.route('/{projectId}/sessions2/{sessionId}/errors/{errorId}/sourcemaps', methods=['GET'])
+def get_error_trace(projectId, sessionId, errorId, context):
+ data = errors.get_trace(project_id=projectId, error_id=errorId)
+ if "errors" in data:
+ return data
+ return {
+ 'data': data
+ }
+
+
+@app.route('/{projectId}/sessions2/{sessionId}/assign/{issueId}', methods=['GET'])
+def assign_session(projectId, sessionId, issueId, context):
+ data = sessions_assignments.get(project_id=projectId, session_id=sessionId, assignment_id=issueId,
+ tenant_id=context['tenantId'], user_id=context["userId"])
+ if "errors" in data:
+ return data
+ return {
+ 'data': data
+ }
+
+
+@app.route('/{projectId}/sessions2/{sessionId}/assign/{issueId}/comment', methods=['POST', 'PUT'])
+def comment_assignment(projectId, sessionId, issueId, context):
+ data = app.current_request.json_body
+ data = sessions_assignments.comment(tenant_id=context['tenantId'], project_id=projectId,
+ session_id=sessionId, assignment_id=issueId,
+ user_id=context["userId"], message=data["message"])
+ if "errors" in data.keys():
+ return data
+ return {
+ 'data': data
+ }
+
+
+@app.route('/{projectId}/events/search', methods=['GET'])
+def events_search(projectId, context):
+ params = app.current_request.query_params
+ if params is None:
+ return {"data": []}
+
+ q = params.get('q', '')
+ if len(q) == 0:
+ return {"data": []}
+ result = events.search_pg2(q, params.get('type', ''), project_id=projectId, source=params.get('source'),
+ key=params.get("key"))
+ return result
+
+
+@app.route('/{projectId}/sessions/search2', methods=['POST'])
+def sessions_search2(projectId, context):
+ data = app.current_request.json_body
+
+ data = sessions.search2_pg(data, projectId, user_id=context["userId"])
+ return {'data': data}
+
+
+@app.route('/{projectId}/sessions/filters', methods=['GET'])
+def session_filter_values(projectId, context):
+ return {'data': sessions_metas.get_key_values(projectId)}
+
+
+@app.route('/{projectId}/sessions/filters/top', methods=['GET'])
+def session_top_filter_values(projectId, context):
+ return {'data': sessions_metas.get_top_key_values(projectId)}
+
+
+@app.route('/{projectId}/sessions/filters/search', methods=['GET'])
+def get_session_filters_meta(projectId, context):
+ params = app.current_request.query_params
+ if params is None:
+ return {"data": []}
+
+ meta_type = params.get('type', '')
+ if len(meta_type) == 0:
+ return {"data": []}
+ q = params.get('q', '')
+ if len(q) == 0:
+ return {"data": []}
+ return sessions_metas.search(project_id=projectId, meta_type=meta_type, text=q)
+
+
+@app.route('/{projectId}/integrations/{integration}/notify/{integrationId}/{source}/{sourceId}',
+ methods=['POST', 'PUT'])
+def integration_notify(projectId, integration, integrationId, source, sourceId, context):
+ data = app.current_request.json_body
+ comment = None
+ if "comment" in data:
+ comment = data["comment"]
+ if integration == "slack":
+ args = {"tenant_id": context["tenantId"],
+ "user": context['email'], "comment": comment, "project_id": projectId,
+ "integration_id": integrationId}
+ if source == "sessions":
+ return Slack.share_session(session_id=sourceId, **args)
+ elif source == "errors":
+ return Slack.share_error(error_id=sourceId, **args)
+ return {"data": None}
+
+
+@app.route('/integrations/sentry', methods=['GET'])
+def get_all_sentry(context):
+ return {"data": log_tool_sentry.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/sentry', methods=['GET'])
+def get_sentry(projectId, context):
+ return {"data": log_tool_sentry.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/sentry', methods=['POST', 'PUT'])
+def add_edit_sentry(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_sentry.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/sentry', methods=['DELETE'])
+def delete_sentry(projectId, context):
+ return {"data": log_tool_sentry.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/sentry/events/{eventId}', methods=['GET'])
+def proxy_sentry(projectId, eventId, context):
+ return {"data": log_tool_sentry.proxy_get(tenant_id=context["tenantId"], project_id=projectId, event_id=eventId)}
+
+
+@app.route('/integrations/datadog', methods=['GET'])
+def get_all_datadog(context):
+ return {"data": log_tool_datadog.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/datadog', methods=['GET'])
+def get_datadog(projectId, context):
+ return {"data": log_tool_datadog.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/datadog', methods=['POST', 'PUT'])
+def add_edit_datadog(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_datadog.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/datadog', methods=['DELETE'])
+def delete_datadog(projectId, context):
+ return {"data": log_tool_datadog.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/stackdriver', methods=['GET'])
+def get_all_stackdriver(context):
+ return {"data": log_tool_stackdriver.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/stackdriver', methods=['GET'])
+def get_stackdriver(projectId, context):
+ return {"data": log_tool_stackdriver.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/stackdriver', methods=['POST', 'PUT'])
+def add_edit_stackdriver(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_stackdriver.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/stackdriver', methods=['DELETE'])
+def delete_stackdriver(projectId, context):
+ return {"data": log_tool_stackdriver.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/newrelic', methods=['GET'])
+def get_all_newrelic(context):
+ return {"data": log_tool_newrelic.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/newrelic', methods=['GET'])
+def get_newrelic(projectId, context):
+ return {"data": log_tool_newrelic.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/newrelic', methods=['POST', 'PUT'])
+def add_edit_newrelic(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_newrelic.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/newrelic', methods=['DELETE'])
+def delete_newrelic(projectId, context):
+ return {"data": log_tool_newrelic.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/rollbar', methods=['GET'])
+def get_all_rollbar(context):
+ return {"data": log_tool_rollbar.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/rollbar', methods=['GET'])
+def get_rollbar(projectId, context):
+ return {"data": log_tool_rollbar.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/rollbar', methods=['POST', 'PUT'])
+def add_edit_rollbar(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_rollbar.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/rollbar', methods=['DELETE'])
+def delete_datadog(projectId, context):
+ return {"data": log_tool_rollbar.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/bugsnag/list_projects', methods=['POST'])
+def list_projects_bugsnag(context):
+ data = app.current_request.json_body
+ return {"data": log_tool_bugsnag.list_projects(auth_token=data["authorizationToken"])}
+
+
+@app.route('/integrations/bugsnag', methods=['GET'])
+def get_all_bugsnag(context):
+ return {"data": log_tool_bugsnag.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/bugsnag', methods=['GET'])
+def get_bugsnag(projectId, context):
+ return {"data": log_tool_bugsnag.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/bugsnag', methods=['POST', 'PUT'])
+def add_edit_bugsnag(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_bugsnag.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/bugsnag', methods=['DELETE'])
+def delete_bugsnag(projectId, context):
+ return {"data": log_tool_bugsnag.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/cloudwatch/list_groups', methods=['POST'])
+def list_groups_cloudwatch(context):
+ data = app.current_request.json_body
+ return {"data": log_tool_cloudwatch.list_log_groups(aws_access_key_id=data["awsAccessKeyId"],
+ aws_secret_access_key=data["awsSecretAccessKey"],
+ region=data["region"])}
+
+
+@app.route('/integrations/cloudwatch', methods=['GET'])
+def get_all_cloudwatch(context):
+ return {"data": log_tool_cloudwatch.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/cloudwatch', methods=['GET'])
+def get_cloudwatch(projectId, context):
+ return {"data": log_tool_cloudwatch.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/cloudwatch', methods=['POST', 'PUT'])
+def add_edit_cloudwatch(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_cloudwatch.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/cloudwatch', methods=['DELETE'])
+def delete_cloudwatch(projectId, context):
+ return {"data": log_tool_cloudwatch.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/elasticsearch', methods=['GET'])
+def get_all_elasticsearch(context):
+ return {"data": log_tool_elasticsearch.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/elasticsearch', methods=['GET'])
+def get_elasticsearch(projectId, context):
+ return {"data": log_tool_elasticsearch.get(project_id=projectId)}
+
+
+@app.route('/integrations/elasticsearch/test', methods=['POST'])
+def test_elasticsearch_connection(context):
+ data = app.current_request.json_body
+ return {"data": log_tool_elasticsearch.ping(tenant_id=context["tenantId"], **data)}
+
+
+@app.route('/{projectId}/integrations/elasticsearch', methods=['POST', 'PUT'])
+def add_edit_elasticsearch(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_elasticsearch.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/elasticsearch', methods=['DELETE'])
+def delete_elasticsearch(projectId, context):
+ return {"data": log_tool_elasticsearch.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/sumologic', methods=['GET'])
+def get_all_sumologic(context):
+ return {"data": log_tool_sumologic.get_all(tenant_id=context["tenantId"])}
+
+
+@app.route('/{projectId}/integrations/sumologic', methods=['GET'])
+def get_sumologic(projectId, context):
+ return {"data": log_tool_sumologic.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/integrations/sumologic', methods=['POST', 'PUT'])
+def add_edit_sumologic(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": log_tool_sumologic.add_edit(tenant_id=context["tenantId"], project_id=projectId, data=data)}
+
+
+@app.route('/{projectId}/integrations/sumologic', methods=['DELETE'])
+def delete_sumologic(projectId, context):
+ return {"data": log_tool_sumologic.delete(tenant_id=context["tenantId"], project_id=projectId)}
+
+
+@app.route('/integrations/issues', methods=['GET'])
+def get_integration_status(context):
+ error, integration = integrations_manager.get_integration(tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return {"data": {}}
+ return {"data": integration.get_obfuscated()}
+
+
+@app.route('/integrations/jira', methods=['POST', 'PUT'])
+def add_edit_jira_cloud(context):
+ data = app.current_request.json_body
+ error, integration = integrations_manager.get_integration(tool=integration_jira_cloud.PROVIDER,
+ tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ return {"data": integration.add_edit(data=data)}
+
+
+@app.route('/integrations/github', methods=['POST', 'PUT'])
+def add_edit_github(context):
+ data = app.current_request.json_body
+ error, integration = integrations_manager.get_integration(tool=integration_github.PROVIDER,
+ tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ return {"data": integration.add_edit(data=data)}
+
+
+@app.route('/integrations/issues', methods=['DELETE'])
+def delete_default_issue_tracking_tool(context):
+ error, integration = integrations_manager.get_integration(tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ return {"data": integration.delete()}
+
+
+@app.route('/integrations/jira', methods=['DELETE'])
+def delete_jira_cloud(context):
+ error, integration = integrations_manager.get_integration(tool=integration_jira_cloud.PROVIDER,
+ tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ return {"data": integration.delete()}
+
+
+@app.route('/integrations/github', methods=['DELETE'])
+def delete_github(context):
+ error, integration = integrations_manager.get_integration(tool=integration_github.PROVIDER,
+ tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ return {"data": integration.delete()}
+
+
+@app.route('/integrations/issues/list_projects', methods=['GET'])
+def get_all_issue_tracking_projects(context):
+ error, integration = integrations_manager.get_integration(tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ data = integration.issue_handler.get_projects()
+ if "errors" in data:
+ return data
+ return {"data": data}
+
+
+@app.route('/integrations/issues/{integrationProjectId}', methods=['GET'])
+def get_integration_metadata(integrationProjectId, context):
+ error, integration = integrations_manager.get_integration(tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ data = integration.issue_handler.get_metas(integrationProjectId)
+ if "errors" in data.keys():
+ return data
+ return {"data": data}
+
+
+@app.route('/{projectId}/assignments', methods=['GET'])
+def get_all_assignments(projectId, context):
+ data = sessions_assignments.get_all(project_id=projectId, user_id=context["userId"])
+ return {
+ 'data': data
+ }
+
+
+@app.route('/{projectId}/sessions2/{sessionId}/assign/projects/{integrationProjectId}', methods=['POST', 'PUT'])
+def create_issue_assignment(projectId, sessionId, integrationProjectId, context):
+ data = app.current_request.json_body
+ data = sessions_assignments.create_new_assignment(tenant_id=context['tenantId'], project_id=projectId,
+ session_id=sessionId,
+ creator_id=context["userId"], assignee=data["assignee"],
+ description=data["description"], title=data["title"],
+ issue_type=data["issueType"],
+ integration_project_id=integrationProjectId)
+ if "errors" in data.keys():
+ return data
+ return {
+ 'data': data
+ }
+
+
+@app.route('/{projectId}/gdpr', methods=['GET'])
+def get_gdpr(projectId, context):
+ return {"data": projects.get_gdpr(project_id=projectId)}
+
+
+@app.route('/{projectId}/gdpr', methods=['POST', 'PUT'])
+def edit_gdpr(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": projects.edit_gdpr(project_id=projectId, gdpr=data)}
+
+
+@app.route('/password/reset/{step}', methods=['PUT', 'POST'], authorizer=None)
+def reset_password_handler(step):
+ data = app.current_request.json_body
+ if step == "1":
+ if "email" not in data or len(data["email"]) < 5:
+ return {"errors": ["please provide a valid email address"]}
+ return reset_password.step1(data)
+ elif step == "2":
+ return reset_password.step2(data)
+
+
+@app.route('/{projectId}/metadata', methods=['GET'])
+def get_metadata(projectId, context):
+ return {"data": metadata.get(project_id=projectId)}
+
+
+@app.route('/{projectId}/metadata/list', methods=['POST', 'PUT'])
+def add_edit_delete_metadata(projectId, context):
+ data = app.current_request.json_body
+
+ return metadata.add_edit_delete(tenant_id=context["tenantId"], project_id=projectId, new_metas=data["list"])
+
+
+@app.route('/{projectId}/metadata', methods=['POST', 'PUT'])
+def add_metadata(projectId, context):
+ data = app.current_request.json_body
+
+ return metadata.add(tenant_id=context["tenantId"], project_id=projectId, new_name=data["key"])
+
+
+@app.route('/{projectId}/metadata/{index}', methods=['POST', 'PUT'])
+def edit_metadata(projectId, index, context):
+ data = app.current_request.json_body
+
+ return metadata.edit(tenant_id=context["tenantId"], project_id=projectId, index=int(index),
+ new_name=data["key"])
+
+
+@app.route('/{projectId}/metadata/{index}', methods=['DELETE'])
+def delete_metadata(projectId, index, context):
+ return metadata.delete(tenant_id=context["tenantId"], project_id=projectId, index=index)
+
+
+@app.route('/{projectId}/metadata/search', methods=['GET'])
+def search_metadata(projectId, context):
+ params = app.current_request.query_params
+ q = params.get('q', '')
+ key = params.get('key', '')
+ if len(q) == 0 and len(key) == 0:
+ return {"data": []}
+ if len(q) == 0:
+ return {"errors": ["please provide a value for search"]}
+ if len(key) == 0:
+ return {"errors": ["please provide a key for search"]}
+ return metadata.search(tenant_id=context["tenantId"], project_id=projectId, value=q, key=key)
+
+
+@app.route('/{projectId}/integration/sources', methods=['GET'])
+def search_integrations(projectId, context):
+ return log_tools.search(project_id=projectId)
+
+
+@app.route('/async/email_assignment', methods=['POST', 'PUT'], authorizer=None)
+def async_send_signup_emails():
+ data = app.current_request.json_body
+ if data.pop("auth") != environ["async_Token"]:
+ return {}
+ email_helper.send_assign_session(recipient=data["email"], link=data["link"], message=data["message"])
+
+
+@app.route('/async/funnel/weekly_report2', methods=['POST', 'PUT'], authorizer=None)
+def async_weekly_report():
+ print("=========================> Sending weekly report")
+ data = app.current_request.json_body
+ if data.pop("auth") != environ["async_Token"]:
+ return {}
+ email_helper.weekly_report2(recipients=data["email"], data=data.get("data", None))
+
+
+@app.route('/async/basic/{step}', methods=['POST', 'PUT'], authorizer=None)
+def async_basic_emails(step):
+ data = app.current_request.json_body
+ if data.pop("auth") != environ["async_Token"]:
+ return {}
+ if step.lower() == "member_invitation":
+ email_helper.send_team_invitation(recipient=data["email"], user_name=data["userName"],
+ temp_password=data["tempPassword"], client_id=data["clientId"],
+ sender_name=data["senderName"])
+
+
+@app.route('/{projectId}/sample_rate', methods=['GET'])
+def get_capture_status(projectId, context):
+ return {"data": projects.get_capture_status(project_id=projectId)}
+
+
+@app.route('/{projectId}/sample_rate', methods=['POST', 'PUT'])
+def update_capture_status(projectId, context):
+ data = app.current_request.json_body
+
+ return {"data": projects.update_capture_status(project_id=projectId, changes=data)}
+
+
+@app.route('/announcements', methods=['GET'])
+def get_all_announcements(context):
+ return {"data": announcements.get_all(context["userId"])}
+
+
+@app.route('/announcements/view', methods=['GET'])
+def get_all_announcements(context):
+ return {"data": announcements.view(user_id=context["userId"])}
+
+
+@app.route('/{projectId}/errors/{errorId}/{action}', methods=['GET'])
+def add_remove_favorite_error(projectId, errorId, action, context):
+ if action == "favorite":
+ return errors_favorite_viewed.favorite_error(project_id=projectId, user_id=context['userId'], error_id=errorId)
+ elif action == "sessions":
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+ start_date = params.get("startDate")
+ end_date = params.get("endDate")
+ return {
+ "data": errors.get_sessions(project_id=projectId, user_id=context['userId'], error_id=errorId,
+ start_date=start_date, end_date=end_date)}
+ elif action in list(errors.ACTION_STATE.keys()):
+ return errors.change_state(project_id=projectId, user_id=context['userId'], error_id=errorId, action=action)
+ else:
+ return {"errors": ["undefined action"]}
+
+
+@app.route('/{projectId}/errors/merge', methods=['POST'])
+def errors_merge(projectId, context):
+ data = app.current_request.json_body
+
+ data = errors.merge(error_ids=data.get("errors", []))
+ return data
+
+
+@app.route('/show_banner', methods=['GET'])
+def errors_merge(context):
+ return {"data": False}
+
+
+@app.route('/{projectId}/alerts', methods=['POST', 'PUT'])
+def create_alert(projectId, context):
+ data = app.current_request.json_body
+ return alerts.create(projectId, data)
+
+
+@app.route('/{projectId}/alerts', methods=['GET'])
+def get_all_alerts(projectId, context):
+ return {"data": alerts.get_all(projectId)}
+
+
+@app.route('/{projectId}/alerts/{alertId}', methods=['GET'])
+def get_alert(projectId, alertId, context):
+ return {"data": alerts.get(alertId)}
+
+
+@app.route('/{projectId}/alerts/{alertId}', methods=['POST', 'PUT'])
+def update_alert(projectId, alertId, context):
+ data = app.current_request.json_body
+ return alerts.update(alertId, data)
+
+
+@app.route('/{projectId}/alerts/{alertId}', methods=['DELETE'])
+def delete_alert(projectId, alertId, context):
+ return alerts.delete(projectId, alertId)
+
+
+@app.route('/alerts/notifications', methods=['POST', 'PUT'], authorizer=None)
+def send_alerts_notifications():
+ data = app.current_request.json_body
+ if data.get("token", "") != "nF46JdQqAM5v9KI9lPMpcu8o9xiJGvNNWOGL7TJP":
+ return {"errors": ["missing token"]}
+ return {"data": alerts.process_notifications(data.get("notifications", []))}
+
+
+@app.route('/{projectId}/funnels', methods=['POST', 'PUT'])
+def add_funnel(projectId, context):
+ data = app.current_request.json_body
+ return funnels.create(project_id=projectId,
+ user_id=context['userId'],
+ name=data["name"],
+ filter=data["filter"],
+ is_public=data.get("isPublic", False))
+
+
+@app.route('/{projectId}/funnels', methods=['GET'])
+def get_funnels(projectId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return {"data": funnels.get_by_user(project_id=projectId,
+ user_id=context['userId'],
+ range_value=None,
+ start_date=None,
+ end_date=None,
+ details=False)}
+
+
+@app.route('/{projectId}/funnels/details', methods=['GET'])
+def get_funnels_with_details(projectId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return {"data": funnels.get_by_user(project_id=projectId,
+ user_id=context['userId'],
+ range_value=params.get("rangeValue", None),
+ start_date=params.get('startDate', None),
+ end_date=params.get('endDate', None),
+ details=True)}
+
+
+@app.route('/{projectId}/funnels/issue_types', methods=['GET'])
+def get_possible_issue_types(projectId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return {"data": funnels.get_possible_issue_types(project_id=projectId)}
+
+
+@app.route('/{projectId}/funnels/{funnelId}/insights', methods=['GET'])
+def get_funnel_insights(projectId, funnelId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return {"data": funnels.get_top_insights(funnel_id=funnelId, project_id=projectId,
+ range_value=params.get("range_value", None),
+ start_date=params.get('startDate', None),
+ end_date=params.get('endDate', None))}
+
+
+@app.route('/{projectId}/funnels/{funnelId}/insights', methods=['POST', 'PUT'])
+def get_funnel_insights_on_the_fly(projectId, funnelId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+
+ return {
+ "data": funnels.get_top_insights_on_the_fly(funnel_id=funnelId, project_id=projectId, data={**params, **data})}
+
+
+@app.route('/{projectId}/funnels/{funnelId}/issues', methods=['GET'])
+def get_funnel_issues(projectId, funnelId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return funnels.get_issues(funnel_id=funnelId, project_id=projectId,
+ range_value=params.get("range_value", None),
+ start_date=params.get('startDate', None), end_date=params.get('endDate', None))
+
+
+@app.route('/{projectId}/funnels/{funnelId}/issues', methods=['POST', 'PUT'])
+def get_funnel_issues_on_the_fly(projectId, funnelId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+
+ return {"data": funnels.get_issues_on_the_fly(funnel_id=funnelId, project_id=projectId, data={**params, **data})}
+
+
+@app.route('/{projectId}/funnels/{funnelId}/sessions', methods=['GET'])
+def get_funnel_sessions(projectId, funnelId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return {"data": funnels.get_sessions(funnel_id=funnelId, user_id=context['userId'], project_id=projectId,
+ range_value=params.get("range_value", None),
+ start_date=params.get('startDate', None),
+ end_date=params.get('endDate', None))}
+
+
+@app.route('/{projectId}/funnels/{funnelId}/sessions', methods=['POST', 'PUT'])
+def get_funnel_sessions_on_the_fly(projectId, funnelId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ return {"data": funnels.get_sessions_on_the_fly(funnel_id=funnelId, user_id=context['userId'], project_id=projectId,
+ data={**params, **data})}
+
+
+@app.route('/{projectId}/funnels/issues/{issueId}/sessions', methods=['GET'])
+def get_issue_sessions(projectId, issueId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ issue = issues.get(project_id=projectId, issue_id=issueId)
+ return {
+ "data": {"sessions": sessions.search_by_issue(user_id=context["userId"], project_id=projectId, issue=issue,
+ start_date=params.get('startDate', None),
+ end_date=params.get('endDate', None)),
+ "issue": issue}}
+
+
+@app.route('/{projectId}/funnels/{funnelId}/issues/{issueId}/sessions', methods=['POST', 'PUT'])
+def get_funnel_issue_sessions(projectId, funnelId, issueId, context):
+ data = app.current_request.json_body
+
+ data = funnels.search_by_issue(project_id=projectId, user_id=context["userId"], issue_id=issueId,
+ funnel_id=funnelId, data=data)
+ if "errors" in data:
+ return data
+ if data.get("issue") is None:
+ data["issue"] = issues.get(project_id=projectId, issue_id=issueId)
+ return {
+ "data": data
+ }
+
+
+@app.route('/{projectId}/funnels/{funnelId}', methods=['GET'])
+def get_funnel(projectId, funnelId, context):
+ return {"data": funnels.get(funnel_id=funnelId,
+ project_id=projectId)}
+
+
+@app.route('/{projectId}/funnels/{funnelId}', methods=['POST', 'PUT'])
+def edit_funnel(projectId, funnelId, context):
+ data = app.current_request.json_body
+ return funnels.update(funnel_id=funnelId,
+ user_id=context['userId'],
+ name=data.get("name"),
+ filter=data.get("filter"),
+ is_public=data.get("isPublic"))
+
+
+@app.route('/{projectId}/funnels/{funnelId}', methods=['DELETE'])
+def delete_filter(projectId, funnelId, context):
+ return funnels.delete(user_id=context['userId'], funnel_id=funnelId, project_id=projectId)
+
+
+@app.route('/{projectId}/sourcemaps', methods=['PUT'], authorizer=bp_authorizers.api_key_authorizer)
+def sign_sourcemap_for_upload(projectId, context):
+ data = app.current_request.json_body
+ project_id = projects.get_internal_project_id(projectId)
+ if project_id is None:
+ return Response(status_code=400, body='invalid projectId')
+
+ return {"data": sourcemaps.presign_upload_urls(project_id=project_id, urls=data["URL"])}
+
+
+@app.route('/config/weekly_report', methods=['GET'])
+def get_weekly_report_config(context):
+ return {"data": weekly_report.get_config(user_id=context['userId'])}
+
+
+@app.route('/config/weekly_report', methods=['POST', 'PUT'])
+def get_weekly_report_config(context):
+ data = app.current_request.json_body
+ return {"data": weekly_report.edit_config(user_id=context['userId'], weekly_report=data.get("weeklyReport", True))}
+
+
+@app.route('/{projectId}/issue_types', methods=['GET'])
+def issue_types(projectId, context):
+ return {"data": issues.get_types(project_id=projectId)}
+
+
+@app.route('/flows', methods=['GET', 'PUT', 'POST', 'DELETE'])
+@app.route('/{projectId}/flows', methods=['GET', 'PUT', 'POST', 'DELETE'])
+def removed_endpoints(context):
+ return Response(body={"errors": ["Endpoint no longer available"]}, status_code=410)
diff --git a/api/chalicelib/blueprints/bp_core_crons.py b/api/chalicelib/blueprints/bp_core_crons.py
new file mode 100644
index 000000000..a64d7ce10
--- /dev/null
+++ b/api/chalicelib/blueprints/bp_core_crons.py
@@ -0,0 +1,18 @@
+from chalice import Blueprint
+from chalice import Cron
+from chalicelib import _overrides
+from chalicelib.core import reset_password, weekly_report
+
+app = Blueprint(__name__)
+_overrides.chalice_app(app)
+
+
+@app.schedule(Cron('0/60', '*', '*', '*', '?', '*'))
+def clear_password_reset(event):
+ reset_password.cron()
+
+
+# Run every monday.
+@app.schedule(Cron('5', '0', '?', '*', 'MON', '*'))
+def weekly_report2(event):
+ weekly_report.cron()
diff --git a/api/chalicelib/blueprints/bp_core_dynamic.py b/api/chalicelib/blueprints/bp_core_dynamic.py
new file mode 100644
index 000000000..8bdd5ca30
--- /dev/null
+++ b/api/chalicelib/blueprints/bp_core_dynamic.py
@@ -0,0 +1,385 @@
+from chalice import Blueprint, Response
+
+from chalicelib import _overrides
+from chalicelib.core import metadata, errors_favorite_viewed, slack, alerts, sessions, integration_github, \
+ integrations_manager
+from chalicelib.utils import captcha
+from chalicelib.utils import helper
+from chalicelib.utils.helper import environ
+
+from chalicelib.core import tenants
+from chalicelib.core import signup
+from chalicelib.core import users
+from chalicelib.core import projects
+from chalicelib.core import errors
+from chalicelib.core import notifications
+from chalicelib.core import boarding
+from chalicelib.core import webhook
+from chalicelib.core.collaboration_slack import Slack
+
+app = Blueprint(__name__)
+_overrides.chalice_app(app)
+
+
+@app.route('/signedups', methods=['GET'], authorizer=None)
+def signed_ups():
+ return {
+ 'data': tenants.get_tenants()
+ }
+
+
+@app.route('/login', methods=['POST'], authorizer=None)
+def login():
+ data = app.current_request.json_body
+ if helper.allow_captcha() and not captcha.is_valid(data["g-recaptcha-response"]):
+ return {"errors": ["Invalid captcha."]}
+ r = users.authenticate(data['email'], data['password'],
+ for_plugin= False
+ )
+ if r is None:
+ return {
+ 'errors': ['You’ve entered invalid Email or Password.']
+ }
+
+ tenant_id = r.pop("tenantId")
+
+ r["limits"] = {
+ "teamMember": -1,
+ "projects": -1,
+ "metadata": metadata.get_remaining_metadata_with_count(tenant_id)}
+
+ c = tenants.get_by_tenant_id(tenant_id)
+ c.pop("createdAt")
+ c["projects"] = projects.get_projects(tenant_id=tenant_id, recording_state=True, recorded=True,
+ stack_integrations=True)
+ return {
+ 'jwt': r.pop('jwt'),
+ 'data': {
+ "user": r,
+ "client": c,
+ }
+ }
+
+
+@app.route('/account', methods=['GET'])
+def get_account(context):
+ r = users.get(tenant_id=context['tenantId'], user_id=context['userId'])
+ return {
+ 'data': {
+ **r,
+ "limits": {
+ "teamMember": -1,
+ "projects": -1,
+ "metadata": metadata.get_remaining_metadata_with_count(context['tenantId'])},
+ }
+ }
+
+
+@app.route('/projects', methods=['GET'])
+def get_projects(context):
+ return {"data": projects.get_projects(tenant_id=context["tenantId"], recording_state=True, gdpr=True, recorded=True,
+ stack_integrations=True)}
+
+
+@app.route('/projects', methods=['POST', 'PUT'])
+def create_project(context):
+ data = app.current_request.json_body
+ return projects.create(tenant_id=context["tenantId"], user_id=context["userId"], data=data)
+
+
+@app.route('/projects/{projectId}', methods=['POST', 'PUT'])
+def create_edit_project(projectId, context):
+ data = app.current_request.json_body
+
+ return projects.edit(tenant_id=context["tenantId"], user_id=context["userId"], data=data, project_id=projectId)
+
+
+@app.route('/projects/{projectId}', methods=['GET'])
+def get_project(projectId, context):
+ return {"data": projects.get_project(tenant_id=context["tenantId"], project_id=projectId, include_last_session=True,
+ include_gdpr=True)}
+
+
+@app.route('/projects/{projectId}', methods=['DELETE'])
+def delete_project(projectId, context):
+ return projects.delete(tenant_id=context["tenantId"], user_id=context["userId"], project_id=projectId)
+
+
+@app.route('/projects/limit', methods=['GET'])
+def get_projects_limit(context):
+ return {"data": {
+ "current": projects.count_by_tenant(tenant_id=context["tenantId"]),
+ "remaining": -1
+ }}
+
+
+@app.route('/client', methods=['GET'])
+def get_client(context):
+ r = tenants.get_by_tenant_id(context['tenantId'])
+ if r is not None:
+ r.pop("createdAt")
+ r["projects"] = projects.get_projects(tenant_id=context['tenantId'], recording_state=True, recorded=True,
+ stack_integrations=True)
+ return {
+ 'data': r
+ }
+
+
+@app.route('/client/new_api_key', methods=['GET'])
+def generate_new_tenant_token(context):
+ return {
+ 'data': tenants.generate_new_api_key(context['tenantId'])
+ }
+
+
+@app.route('/client', methods=['PUT', 'POST'])
+def put_client(context):
+ data = app.current_request.json_body
+ return tenants.update(tenant_id=context["tenantId"], user_id=context["userId"], data=data)
+
+
+@app.route('/signup', methods=['GET'], authorizer=None)
+def get_all_signup():
+ return {"data": signup.get_signed_ups()}
+
+
+@app.route('/signup', methods=['POST', 'PUT'], authorizer=None)
+def signup_handler():
+ data = app.current_request.json_body
+ return signup.create_step1(data)
+
+
+@app.route('/integrations/slack', methods=['POST', 'PUT'])
+def add_slack_client(context):
+ data = app.current_request.json_body
+ if "url" not in data or "name" not in data:
+ return {"errors": ["please provide a url and a name"]}
+ if Slack.add_integration(tenant_id=context["tenantId"], url=data["url"], name=data["name"]):
+ return {"data": {"status": "success"}}
+ else:
+ return {
+ "errors": ["failed URL verification, if you received a message on slack, please notify our dev-team"]
+ }
+
+@app.route('/{projectId}/errors/search', methods=['POST'])
+def errors_search(projectId, context):
+ data = app.current_request.json_body
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return errors.search(data, projectId, user_id=context["userId"], status=params.get("status", "ALL"),
+ favorite_only="favorite" in params)
+
+
+@app.route('/{projectId}/errors/stats', methods=['GET'])
+def errors_stats(projectId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ return errors.stats(projectId, user_id=context["userId"], **params)
+
+
+@app.route('/{projectId}/errors/{errorId}', methods=['GET'])
+def errors_get_details(projectId, errorId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ data = errors.get_details(project_id=projectId, user_id=context["userId"], error_id=errorId, **params)
+ if data.get("data") is not None:
+ errors_favorite_viewed.viewed_error(project_id=projectId, user_id=context['userId'], error_id=errorId)
+ return data
+
+
+@app.route('/{projectId}/errors/{errorId}/stats', methods=['GET'])
+def errors_get_details_right_column(projectId, errorId, context):
+ params = app.current_request.query_params
+ if params is None:
+ params = {}
+
+ data = errors.get_details_chart(project_id=projectId, user_id=context["userId"], error_id=errorId, **params)
+ return data
+
+
+@app.route('/{projectId}/errors/{errorId}/sourcemaps', methods=['GET'])
+def errors_get_details_sourcemaps(projectId, errorId, context):
+ data = errors.get_trace(project_id=projectId, error_id=errorId)
+ if "errors" in data:
+ return data
+ return {
+ 'data': data
+ }
+
+
+@app.route('/async/alerts/notifications/{step}', methods=['POST', 'PUT'], authorizer=None)
+def send_alerts_notification_async(step):
+ data = app.current_request.json_body
+ if data.pop("auth") != environ["async_Token"]:
+ return {"errors": ["missing auth"]}
+ if step == "slack":
+ slack.send_batch(notifications_list=data.get("notifications"))
+ elif step == "email":
+ alerts.send_by_email_batch(notifications_list=data.get("notifications"))
+ elif step == "webhook":
+ webhook.trigger_batch(data_list=data.get("notifications"))
+
+
+@app.route('/notifications', methods=['GET'])
+def get_notifications(context):
+ return {"data": notifications.get_all(tenant_id=context['tenantId'], user_id=context['userId'])}
+
+
+@app.route('/notifications/{notificationId}/view', methods=['GET'])
+def view_notifications(notificationId, context):
+ return {"data": notifications.view_notification(notification_ids=[notificationId], user_id=context['userId'])}
+
+
+@app.route('/notifications/view', methods=['POST', 'PUT'])
+def batch_view_notifications(context):
+ data = app.current_request.json_body
+ return {"data": notifications.view_notification(notification_ids=data.get("ids", []),
+ startTimestamp=data.get("startTimestamp"),
+ endTimestamp=data.get("endTimestamp"),
+ user_id=context['userId'],
+ tenant_id=context["tenantId"])}
+
+
+@app.route('/notifications', methods=['POST', 'PUT'], authorizer=None)
+def create_notifications():
+ data = app.current_request.json_body
+ if data.get("token", "") != "nF46JdQqAM5v9KI9lPMpcu8o9xiJGvNNWOGL7TJP":
+ return {"errors": ["missing token"]}
+ return notifications.create(data.get("notifications", []))
+
+
+@app.route('/boarding', methods=['GET'])
+def get_boarding_state(context):
+ return {"data": boarding.get_state(tenant_id=context["tenantId"])}
+
+
+@app.route('/boarding/installing', methods=['GET'])
+def get_boarding_state_installing(context):
+ return {"data": boarding.get_state_installing(tenant_id=context["tenantId"])}
+
+
+@app.route('/boarding/identify-users', methods=['GET'])
+def get_boarding_state_identify_users(context):
+ return {"data": boarding.get_state_identify_users(tenant_id=context["tenantId"])}
+
+
+@app.route('/boarding/manage-users', methods=['GET'])
+def get_boarding_state_manage_users(context):
+ return {"data": boarding.get_state_manage_users(tenant_id=context["tenantId"])}
+
+
+@app.route('/boarding/integrations', methods=['GET'])
+def get_boarding_state_integrations(context):
+ return {"data": boarding.get_state_integrations(tenant_id=context["tenantId"])}
+
+
+# this endpoint supports both jira & github based on `provider` attribute
+@app.route('/integrations/issues', methods=['POST', 'PUT'])
+def add_edit_jira_cloud_github(context):
+ data = app.current_request.json_body
+ provider = data.get("provider", "").upper()
+ error, integration = integrations_manager.get_integration(tool=provider, tenant_id=context["tenantId"],
+ user_id=context["userId"])
+ if error is not None:
+ return error
+ return {"data": integration.add_edit(data=data)}
+
+
+@app.route('/integrations/slack/{integrationId}', methods=['GET'])
+def get_slack_webhook(integrationId, context):
+ return {"data": webhook.get(tenant_id=context["tenantId"], webhook_id=integrationId)}
+
+
+@app.route('/integrations/slack/channels', methods=['GET'])
+def get_slack_integration(context):
+ return {"data": webhook.get_by_type(tenant_id=context["tenantId"], webhook_type='slack')}
+
+
+@app.route('/integrations/slack/{integrationId}', methods=['DELETE'])
+def delete_slack_integration(integrationId, context):
+ return webhook.delete(context["tenantId"], integrationId)
+
+
+@app.route('/webhooks', methods=['POST', 'PUT'])
+def add_edit_webhook(context):
+ data = app.current_request.json_body
+ return {"data": webhook.add_edit(tenant_id=context["tenantId"], data=data, replace_none=True)}
+
+
+@app.route('/webhooks', methods=['GET'])
+def get_webhooks(context):
+ return {"data": webhook.get_by_tenant(tenant_id=context["tenantId"], replace_none=True)}
+
+
+@app.route('/webhooks/{webhookId}', methods=['DELETE'])
+def delete_webhook(webhookId, context):
+ return {"data": webhook.delete(tenant_id=context["tenantId"], webhook_id=webhookId)}
+
+
+@app.route('/client/members', methods=['GET'])
+def get_members(context):
+ return {"data": users.get_members(tenant_id=context['tenantId'])}
+
+
+@app.route('/client/members', methods=['PUT', 'POST'])
+def add_member(context):
+ data = app.current_request.json_body
+ return users.create_member(tenant_id=context['tenantId'], user_id=context['userId'], data=data)
+
+
+@app.route('/client/members/{memberId}', methods=['PUT', 'POST'])
+def edit_member(memberId, context):
+ data = app.current_request.json_body
+ return users.edit(tenant_id=context['tenantId'], editor_id=context['userId'], changes=data,
+ user_id_to_update=memberId)
+
+
+@app.route('/client/members/{memberId}', methods=['DELETE'])
+def delete_member(memberId, context):
+ return users.delete_member(tenant_id=context["tenantId"], user_id=context['userId'], id_to_delete=memberId)
+
+
+@app.route('/account/new_api_key', methods=['GET'])
+def generate_new_user_token(context):
+ return {"data": users.generate_new_api_key(user_id=context['userId'])}
+
+
+@app.route('/account', methods=['POST', 'PUT'])
+def edit_account(context):
+ data = app.current_request.json_body
+ return users.edit(tenant_id=context['tenantId'], user_id_to_update=context['userId'], changes=data,
+ editor_id=context['userId'])
+
+
+@app.route('/account/password', methods=['PUT', 'POST'])
+def change_client_password(context):
+ data = app.current_request.json_body
+ return users.change_password(email=context['email'], old_password=data["oldPassword"],
+ new_password=data["newPassword"], tenant_id=context["tenantId"],
+ user_id=context["userId"])
+
+
+@app.route('/metadata/session_search', methods=['GET'])
+def search_sessions_by_metadata(context):
+ params = app.current_request.query_params
+ if params is None:
+ return {"errors": ["please provide a key&value for search"]}
+ value = params.get('value', '')
+ key = params.get('key', '')
+ project_id = params.get('projectId')
+ if len(value) == 0 and len(key) == 0:
+ return {"errors": ["please provide a key&value for search"]}
+ if len(value) == 0:
+ return {"errors": ["please provide a value for search"]}
+ if len(key) == 0:
+ return {"errors": ["please provide a key for search"]}
+ return {
+ "data": sessions.search_by_metadata(tenant_id=context["tenantId"], user_id=context["userId"], m_value=value,
+ m_key=key,
+ project_id=project_id)}
diff --git a/api/chalicelib/blueprints/bp_core_dynamic_crons.py b/api/chalicelib/blueprints/bp_core_dynamic_crons.py
new file mode 100644
index 000000000..74d8766e5
--- /dev/null
+++ b/api/chalicelib/blueprints/bp_core_dynamic_crons.py
@@ -0,0 +1,13 @@
+from chalice import Blueprint, Cron
+from chalicelib import _overrides
+
+app = Blueprint(__name__)
+_overrides.chalice_app(app)
+
+from chalicelib.core import telemetry
+
+
+# Run every day.
+@app.schedule(Cron('0', '0', '?', '*', '*', '*'))
+def telemetry_cron(event):
+ telemetry.compute()
diff --git a/api/chalicelib/blueprints/subs/__init__.py b/api/chalicelib/blueprints/subs/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/api/chalicelib/blueprints/subs/bp_dashboard.py b/api/chalicelib/blueprints/subs/bp_dashboard.py
new file mode 100644
index 000000000..51bdce092
--- /dev/null
+++ b/api/chalicelib/blueprints/subs/bp_dashboard.py
@@ -0,0 +1,605 @@
+from chalice import Blueprint
+from chalicelib.utils import helper
+from chalicelib import _overrides
+
+from chalicelib.core import dashboard
+from chalicelib.core import metadata
+
+app = Blueprint(__name__)
+_overrides.chalice_app(app)
+
+
+@app.route('/{projectId}/dashboard/metadata', methods=['GET'])
+def get_metadata_map(projectId, context):
+ metamap = []
+ for m in metadata.get(project_id=projectId):
+ metamap.append({"name": m["key"], "key": f"metadata{m['index']}"})
+ return {"data": metamap}
+
+
+@app.route('/{projectId}/dashboard/sessions', methods=['GET', 'POST'])
+def get_dashboard_processed_sessions(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_processed_sessions(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/errors', methods=['GET', 'POST'])
+def get_dashboard_errors(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_errors(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/errors_trend', methods=['GET', 'POST'])
+def get_dashboard_errors_trend(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_errors_trend(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/application_activity', methods=['GET', 'POST'])
+def get_dashboard_application_activity(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_application_activity(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/page_metrics', methods=['GET', 'POST'])
+def get_dashboard_page_metrics(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_page_metrics(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/user_activity', methods=['GET', 'POST'])
+def get_dashboard_user_activity(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_user_activity(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/performance', methods=['GET', 'POST'])
+def get_dashboard_performance(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_performance(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/slowest_images', methods=['GET', 'POST'])
+def get_dashboard_slowest_images(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_slowest_images(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/missing_resources', methods=['GET', 'POST'])
+def get_performance_sessions(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_missing_resources_trend(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/network', methods=['GET', 'POST'])
+def get_network_widget(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_network(project_id=projectId, **{**data, **args})}
+
+
+@app.route('/{projectId}/dashboard/{widget}/search', methods=['GET'])
+def get_dashboard_autocomplete(projectId, widget, context):
+ params = app.current_request.query_params
+ if params is None:
+ return {"data": []}
+
+ if widget in ['performance']:
+ data = dashboard.search(params.get('q', ''), params.get('type', ''), project_id=projectId,
+ platform=params.get('platform', None), performance=True)
+ elif widget in ['pages', 'pages_dom_buildtime', 'top_metrics', 'time_to_render',
+ 'impacted_sessions_by_slow_pages', 'pages_response_time']:
+ data = dashboard.search(params.get('q', ''), params.get('type', ''), project_id=projectId,
+ platform=params.get('platform', None), pages_only=True)
+ elif widget in ['resources_loading_time']:
+ data = dashboard.search(params.get('q', ''), params.get('type', ''), project_id=projectId,
+ platform=params.get('platform', None), performance=False)
+ elif widget in ['time_between_events', 'events']:
+ data = dashboard.search(params.get('q', ''), params.get('type', ''), project_id=projectId,
+ platform=params.get('platform', None), performance=False, events_only=True)
+ elif widget in ['metadata']:
+ data = dashboard.search(params.get('q', ''), None, project_id=projectId,
+ platform=params.get('platform', None), metadata=True, key=params.get("key"))
+ else:
+ return {"errors": [f"unsupported widget: {widget}"]}
+ return {'data': data}
+
+
+# 1
+@app.route('/{projectId}/dashboard/slowest_resources', methods=['GET', 'POST'])
+def get_dashboard_slowest_resources(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_slowest_resources(project_id=projectId, **{**data, **args})}
+
+
+# 2
+@app.route('/{projectId}/dashboard/resources_loading_time', methods=['GET', 'POST'])
+def get_dashboard_resources(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_resources_loading_time(project_id=projectId, **{**data, **args})}
+
+
+# 3
+@app.route('/{projectId}/dashboard/pages_dom_buildtime', methods=['GET', 'POST'])
+def get_dashboard_pages_dom(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_pages_dom_build_time(project_id=projectId, **{**data, **args})}
+
+
+# 4
+@app.route('/{projectId}/dashboard/busiest_time_of_day', methods=['GET', 'POST'])
+def get_dashboard_busiest_time_of_day(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_busiest_time_of_day(project_id=projectId, **{**data, **args})}
+
+
+# 5
+@app.route('/{projectId}/dashboard/sessions_location', methods=['GET', 'POST'])
+def get_dashboard_sessions_location(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_sessions_location(project_id=projectId, **{**data, **args})}
+
+
+# 6
+@app.route('/{projectId}/dashboard/speed_location', methods=['GET', 'POST'])
+def get_dashboard_speed_location(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_speed_index_location(project_id=projectId, **{**data, **args})}
+
+
+# 7
+@app.route('/{projectId}/dashboard/pages_response_time', methods=['GET', 'POST'])
+def get_dashboard_pages_response_time(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_pages_response_time(project_id=projectId, **{**data, **args})}
+
+
+# 8
+@app.route('/{projectId}/dashboard/pages_response_time_distribution', methods=['GET', 'POST'])
+def get_dashboard_pages_response_time_distribution(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_pages_response_time_distribution(project_id=projectId, **{**data, **args})}
+
+
+# 9
+@app.route('/{projectId}/dashboard/top_metrics', methods=['GET', 'POST'])
+def get_dashboard_top_metrics(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_top_metrics(project_id=projectId, **{**data, **args})}
+
+
+# 10
+@app.route('/{projectId}/dashboard/time_to_render', methods=['GET', 'POST'])
+def get_dashboard_time_to_render(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_time_to_render(project_id=projectId, **{**data, **args})}
+
+
+# 11
+@app.route('/{projectId}/dashboard/impacted_sessions_by_slow_pages', methods=['GET', 'POST'])
+def get_dashboard_impacted_sessions_by_slow_pages(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_impacted_sessions_by_slow_pages(project_id=projectId, **{**data, **args})}
+
+
+# 12
+@app.route('/{projectId}/dashboard/memory_consumption', methods=['GET', 'POST'])
+def get_dashboard_memory_consumption(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_memory_consumption(project_id=projectId, **{**data, **args})}
+
+
+# 12.1
+@app.route('/{projectId}/dashboard/fps', methods=['GET', 'POST'])
+def get_dashboard_avg_fps(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_avg_fps(project_id=projectId, **{**data, **args})}
+
+
+# 12.2
+@app.route('/{projectId}/dashboard/cpu', methods=['GET', 'POST'])
+def get_dashboard_avg_cpu(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_avg_cpu(project_id=projectId, **{**data, **args})}
+
+
+# 13
+@app.route('/{projectId}/dashboard/crashes', methods=['GET', 'POST'])
+def get_dashboard_impacted_sessions_by_slow_pages(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_crashes(project_id=projectId, **{**data, **args})}
+
+
+# 14
+@app.route('/{projectId}/dashboard/domains_errors', methods=['GET', 'POST'])
+def get_dashboard_domains_errors(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_domains_errors(project_id=projectId, **{**data, **args})}
+
+
+# 14.1
+@app.route('/{projectId}/dashboard/domains_errors_4xx', methods=['GET', 'POST'])
+def get_dashboard_domains_errors_4xx(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_domains_errors_4xx(project_id=projectId, **{**data, **args})}
+
+
+# 14.2
+@app.route('/{projectId}/dashboard/domains_errors_5xx', methods=['GET', 'POST'])
+def get_dashboard_domains_errors_5xx(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_domains_errors_5xx(project_id=projectId, **{**data, **args})}
+
+
+# 15
+@app.route('/{projectId}/dashboard/slowest_domains', methods=['GET', 'POST'])
+def get_dashboard_slowest_domains(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_slowest_domains(project_id=projectId, **{**data, **args})}
+
+
+# 16
+@app.route('/{projectId}/dashboard/errors_per_domains', methods=['GET', 'POST'])
+def get_dashboard_errors_per_domains(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_errors_per_domains(project_id=projectId, **{**data, **args})}
+
+
+# 17
+@app.route('/{projectId}/dashboard/sessions_per_browser', methods=['GET', 'POST'])
+def get_dashboard_sessions_per_browser(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_sessions_per_browser(project_id=projectId, **{**data, **args})}
+
+
+# 18
+@app.route('/{projectId}/dashboard/calls_errors', methods=['GET', 'POST'])
+def get_dashboard_calls_errors(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_calls_errors(project_id=projectId, **{**data, **args})}
+
+
+# 18.1
+@app.route('/{projectId}/dashboard/calls_errors_4xx', methods=['GET', 'POST'])
+def get_dashboard_calls_errors_4xx(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_calls_errors_4xx(project_id=projectId, **{**data, **args})}
+
+
+# 18.2
+@app.route('/{projectId}/dashboard/calls_errors_5xx', methods=['GET', 'POST'])
+def get_dashboard_calls_errors_5xx(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_calls_errors_5xx(project_id=projectId, **{**data, **args})}
+
+
+# 19
+@app.route('/{projectId}/dashboard/errors_per_type', methods=['GET', 'POST'])
+def get_dashboard_errors_per_type(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_errors_per_type(project_id=projectId, **{**data, **args})}
+
+
+# 20
+@app.route('/{projectId}/dashboard/resources_by_party', methods=['GET', 'POST'])
+def get_dashboard_resources_by_party(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_resources_by_party(project_id=projectId, **{**data, **args})}
+
+
+# 21
+@app.route('/{projectId}/dashboard/resource_type_vs_response_end', methods=['GET', 'POST'])
+def get_dashboard_errors_per_resource_type(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.resource_type_vs_response_end(project_id=projectId, **{**data, **args})}
+
+
+# 22
+@app.route('/{projectId}/dashboard/resources_vs_visually_complete', methods=['GET', 'POST'])
+def get_dashboard_resources_vs_visually_complete(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_resources_vs_visually_complete(project_id=projectId, **{**data, **args})}
+
+
+# 23
+@app.route('/{projectId}/dashboard/impacted_sessions_by_js_errors', methods=['GET', 'POST'])
+def get_dashboard_impacted_sessions_by_js_errors(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_impacted_sessions_by_js_errors(project_id=projectId, **{**data, **args})}
+
+
+# 24
+@app.route('/{projectId}/dashboard/resources_count_by_type', methods=['GET', 'POST'])
+def get_dashboard_resources_count_by_type(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": dashboard.get_resources_count_by_type(project_id=projectId, **{**data, **args})}
+
+
+# 25
+@app.route('/{projectId}/dashboard/time_between_events', methods=['GET'])
+def get_dashboard_resources_count_by_type(projectId, context):
+ return {"errors": ["please choose 2 events"]}
+
+
+@app.route('/{projectId}/dashboard/overview', methods=['GET', 'POST'])
+def get_dashboard_group(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": [
+ *helper.explode_widget(key="count_sessions",
+ data=dashboard.get_processed_sessions(project_id=projectId, **{**data, **args})),
+ *helper.explode_widget(data={**dashboard.get_application_activity(project_id=projectId, **{**data, **args}),
+ "chart": dashboard.get_performance(project_id=projectId, **{**data, **args})
+ .get("chart", [])}),
+ *helper.explode_widget(data=dashboard.get_page_metrics(project_id=projectId, **{**data, **args})),
+ *helper.explode_widget(data=dashboard.get_user_activity(project_id=projectId, **{**data, **args})),
+ *helper.explode_widget(data=dashboard.get_pages_dom_build_time(project_id=projectId, **{**data, **args}),
+ key="avg_pages_dom_buildtime"),
+ *helper.explode_widget(data=dashboard.get_pages_response_time(project_id=projectId, **{**data, **args}),
+ key="avg_pages_response_time"),
+ *helper.explode_widget(dashboard.get_top_metrics(project_id=projectId, **{**data, **args})),
+ *helper.explode_widget(data=dashboard.get_time_to_render(project_id=projectId, **{**data, **args}),
+ key="avg_time_to_render"),
+ *helper.explode_widget(dashboard.get_memory_consumption(project_id=projectId, **{**data, **args})),
+ *helper.explode_widget(dashboard.get_avg_cpu(project_id=projectId, **{**data, **args})),
+ *helper.explode_widget(dashboard.get_avg_fps(project_id=projectId, **{**data, **args})),
+ ]}
+
+
+@app.route('/{projectId}/dashboard/errors_crashes', methods=['GET', 'POST'])
+def get_dashboard_group(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": [
+ {"key": "errors",
+ "data": dashboard.get_errors(project_id=projectId, **{**data, **args})},
+ {"key": "errors_trend",
+ "data": dashboard.get_errors_trend(project_id=projectId, **{**data, **args})},
+ {"key": "crashes",
+ "data": dashboard.get_crashes(project_id=projectId, **{**data, **args})},
+ {"key": "domains_errors",
+ "data": dashboard.get_domains_errors(project_id=projectId, **{**data, **args})},
+ {"key": "errors_per_domains",
+ "data": dashboard.get_errors_per_domains(project_id=projectId, **{**data, **args})},
+ {"key": "calls_errors",
+ "data": dashboard.get_calls_errors(project_id=projectId, **{**data, **args})},
+ {"key": "errors_per_type",
+ "data": dashboard.get_errors_per_type(project_id=projectId, **{**data, **args})},
+ {"key": "impacted_sessions_by_js_errors",
+ "data": dashboard.get_impacted_sessions_by_js_errors(project_id=projectId, **{**data, **args})}
+ ]}
+
+
+@app.route('/{projectId}/dashboard/resources', methods=['GET', 'POST'])
+def get_dashboard_group(projectId, context):
+ data = app.current_request.json_body
+ if data is None:
+ data = {}
+ params = app.current_request.query_params
+ args = dashboard.dashboard_args(params)
+
+ return {"data": [
+ {"key": "slowest_images",
+ "data": dashboard.get_slowest_images(project_id=projectId, **{**data, **args})},
+ {"key": "missing_resources",
+ "data": dashboard.get_missing_resources_trend(project_id=projectId, **{**data, **args})},
+ {"key": "slowest_resources",
+ "data": dashboard.get_slowest_resources(project_id=projectId, type='all', **{**data, **args})},
+ {"key": "resources_loading_time",
+ "data": dashboard.get_resources_loading_time(project_id=projectId, **{**data, **args})},
+ {"key": "resources_by_party",
+ "data": dashboard.get_resources_by_party(project_id=projectId, **{**data, **args})},
+ {"key": "resource_type_vs_response_end",
+ "data": dashboard.resource_type_vs_response_end(project_id=projectId, **{**data, **args})},
+ {"key": "resources_vs_visually_complete",
+ "data": dashboard.get_resources_vs_visually_complete(project_id=projectId, **{**data, **args})},
+ {"key": "resources_count_by_type",
+ "data": dashboard.get_resources_count_by_type(project_id=projectId, **{**data, **args})}
+ ]}
diff --git a/api/chalicelib/core/__init__.py b/api/chalicelib/core/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/api/chalicelib/core/alerts.py b/api/chalicelib/core/alerts.py
new file mode 100644
index 000000000..6ed9aff3e
--- /dev/null
+++ b/api/chalicelib/core/alerts.py
@@ -0,0 +1,168 @@
+import time
+from chalicelib.utils.helper import environ
+
+from chalicelib.core import notifications
+from chalicelib.utils import pg_client, helper, email_helper
+from chalicelib.utils.TimeUTC import TimeUTC
+import json
+
+ALLOW_UPDATE = ["name", "description", "active", "detectionMethod", "query", "options"]
+
+
+def get(id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT *
+ FROM public.alerts
+ WHERE alert_id =%(id)s;""",
+ {"id": id})
+ )
+ a = helper.dict_to_camel_case(cur.fetchone())
+ return __process_circular(a)
+
+
+def get_all(project_id):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify("""\
+ SELECT *
+ FROM public.alerts
+ WHERE project_id =%(project_id)s AND deleted_at ISNULL
+ ORDER BY created_at;""",
+ {"project_id": project_id})
+ cur.execute(query=query)
+ all = helper.list_to_camel_case(cur.fetchall())
+ for a in all:
+ a = __process_circular(a)
+ return all
+
+
+SUPPORTED_THRESHOLD = [15, 30, 60, 120, 240, 1440]
+
+
+def __transform_structure(data):
+ if data.get("options") is None:
+ return f"Missing 'options'", None
+ if data["options"].get("currentPeriod") not in SUPPORTED_THRESHOLD:
+ return f"Unsupported currentPeriod, please provide one of these values {SUPPORTED_THRESHOLD}", None
+ if data["options"].get("previousPeriod", 15) not in SUPPORTED_THRESHOLD:
+ return f"Unsupported previousPeriod, please provide one of these values {SUPPORTED_THRESHOLD}", None
+ if data["options"].get("renotifyInterval") is None:
+ data["options"]["renotifyInterval"] = 720
+ data["query"]["right"] = float(data["query"]["right"])
+ data["query"] = json.dumps(data["query"])
+ data["description"] = data["description"] if data.get("description") is not None and len(
+ data["description"]) > 0 else None
+ if data.get("options"):
+ messages = []
+ for m in data["options"].get("message", []):
+ if m.get("value") is None:
+ continue
+ m["value"] = str(m["value"])
+ messages.append(m)
+ data["options"]["message"] = messages
+ data["options"] = json.dumps(data["options"])
+ return None, data
+
+
+def __process_circular(alert):
+ if alert is None:
+ return None
+ alert.pop("deletedAt")
+ alert["createdAt"] = TimeUTC.datetime_to_timestamp(alert["createdAt"])
+ return alert
+
+
+def create(project_id, data):
+ err, data = __transform_structure(data)
+ if err is not None:
+ return {"errors": [err]}
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ INSERT INTO public.alerts(project_id, name, description, detection_method, query, options)
+ VALUES (%(project_id)s, %(name)s, %(description)s, %(detectionMethod)s, %(query)s, %(options)s::jsonb)
+ RETURNING *;""",
+ {"project_id": project_id, **data})
+ )
+ a = helper.dict_to_camel_case(cur.fetchone())
+ return {"data": helper.dict_to_camel_case(__process_circular(a))}
+
+
+def update(id, changes):
+ changes = {k: changes[k] for k in changes.keys() if k in ALLOW_UPDATE}
+ err, changes = __transform_structure(changes)
+ if err is not None:
+ return {"errors": [err]}
+ updateq = []
+ for k in changes.keys():
+ updateq.append(f"{helper.key_to_snake_case(k)} = %({k})s")
+ if len(updateq) == 0:
+ return {"errors": ["nothing to update"]}
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ UPDATE public.alerts
+ SET {", ".join(updateq)}
+ WHERE alert_id =%(id)s AND deleted_at ISNULL
+ RETURNING *;""",
+ {"id": id, **changes})
+ cur.execute(query=query)
+ a = helper.dict_to_camel_case(cur.fetchone())
+ return {"data": __process_circular(a)}
+
+
+def process_notifications(data):
+ full = {}
+ for n in data:
+ if "message" in n["options"]:
+ webhook_data = {}
+ if "data" in n["options"]:
+ webhook_data = n["options"].pop("data")
+ for c in n["options"].pop("message"):
+ if c["type"] not in full:
+ full[c["type"]] = []
+ if c["type"] in ["slack", "email"]:
+ full[c["type"]].append({
+ "notification": n,
+ "destination": c["value"]
+ })
+ elif c["type"] in ["webhook"]:
+ full[c["type"]].append({"data": webhook_data, "destination": c["value"]})
+ notifications.create(data)
+ BATCH_SIZE = 200
+ for t in full.keys():
+ for i in range(0, len(full[t]), BATCH_SIZE):
+ helper.async_post(environ['alert_ntf'] % t, {"notifications": full[t][i:i + BATCH_SIZE]})
+
+
+def send_by_email(notification, destination):
+ if notification is None:
+ return
+ email_helper.alert_email(recipients=destination,
+ subject=f'"{notification["title"]}" has been triggered',
+ data={
+ "message": f'"{notification["title"]}" {notification["description"]}',
+ "project_id": notification["options"]["projectId"]})
+
+
+def send_by_email_batch(notifications_list):
+ if notifications_list is None or len(notifications_list) == 0:
+ return
+ for n in notifications_list:
+ send_by_email(notification=n.get("notification"), destination=n.get("destination"))
+ time.sleep(1)
+
+
+def delete(project_id, alert_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.alerts
+ SET
+ deleted_at = timezone('utc'::text, now()),
+ active = FALSE
+ WHERE
+ alert_id = %(alert_id)s AND project_id=%(project_id)s;""",
+ {"alert_id": alert_id, "project_id": project_id})
+ )
+ return {"data": {"state": "success"}}
diff --git a/api/chalicelib/core/announcements.py b/api/chalicelib/core/announcements.py
new file mode 100644
index 000000000..bb719afb9
--- /dev/null
+++ b/api/chalicelib/core/announcements.py
@@ -0,0 +1,42 @@
+from chalicelib.utils import pg_client
+from chalicelib.utils import helper
+from chalicelib.utils.helper import environ
+from chalicelib.utils.TimeUTC import TimeUTC
+
+
+def get_all(user_id):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify("""
+ SELECT a.*, u.last >= (EXTRACT(EPOCH FROM a.created_at)*1000) AS viewed
+ FROM public.announcements AS a,
+ (SELECT COALESCE(CAST(data ->> 'lastAnnouncementView' AS bigint), 0)
+ FROM public.users
+ WHERE user_id = %(userId)s
+ LIMIT 1) AS u(last)
+ ORDER BY a.created_at DESC;""",
+ {"userId": user_id})
+ cur.execute(
+ query
+ )
+ announcements = helper.list_to_camel_case(cur.fetchall())
+ for a in announcements:
+ a["createdAt"] = TimeUTC.datetime_to_timestamp(a["createdAt"])
+ if a["imageUrl"] is not None and len(a["imageUrl"]) > 0:
+ a["imageUrl"] = environ["announcement_bucket"] + a["imageUrl"]
+ return announcements
+
+
+def view(user_id):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify("""
+ UPDATE public.users
+ SET data=data ||
+ ('{"lastAnnouncementView":' ||
+ (EXTRACT(EPOCH FROM timezone('utc'::text, now())) * 1000)::bigint - 20 * 000 ||
+ '}')::jsonb
+ WHERE user_id = %(userId)s;""",
+ {"userId": user_id})
+ cur.execute(
+ query
+ )
+ return True
diff --git a/api/chalicelib/core/authorizers.py b/api/chalicelib/core/authorizers.py
new file mode 100644
index 000000000..1122b0d65
--- /dev/null
+++ b/api/chalicelib/core/authorizers.py
@@ -0,0 +1,61 @@
+from chalicelib.utils.helper import environ
+import jwt
+from chalicelib.utils import helper
+from chalicelib.utils.TimeUTC import TimeUTC
+
+from chalicelib.core import tenants
+from chalicelib.core import users
+
+
+def jwt_authorizer(token):
+ token = token.split(" ")
+ if len(token) != 2 or token[0].lower() != "bearer":
+ return None
+ try:
+ payload = jwt.decode(
+ token[1],
+ environ["jwt_secret"],
+ algorithms=environ["jwt_algorithm"],
+ audience=[f"plugin:{helper.get_stage_name()}", f"front:{helper.get_stage_name()}"]
+ )
+ except jwt.ExpiredSignatureError:
+ print("! JWT Expired signature")
+ return None
+ except BaseException as e:
+ print("! JWT Base Exception")
+ return None
+ return payload
+
+
+def jwt_context(context):
+ user = users.get(user_id=context["userId"], tenant_id=context["tenantId"])
+ if user is None:
+ return None
+ return {
+ "tenantId": context["tenantId"],
+ "userId": context["userId"],
+ **user
+ }
+
+
+def generate_jwt(id, tenant_id, iat, aud):
+ token = jwt.encode(
+ payload={
+ "userId": id,
+ "tenantId": tenant_id,
+ "exp": iat // 1000 + int(environ["jwt_exp_delta_seconds"]) + TimeUTC.get_utc_offset() // 1000,
+ "iss": environ["jwt_issuer"],
+ "iat": iat // 1000,
+ "aud": aud
+ },
+ key=environ["jwt_secret"],
+ algorithm=environ["jwt_algorithm"]
+ )
+ return token.decode("utf-8")
+
+
+def api_key_authorizer(token):
+ t = tenants.get_by_api_key(token)
+ if t is not None:
+ t["createdAt"] = TimeUTC.datetime_to_timestamp(t["createdAt"])
+ return t
diff --git a/api/chalicelib/core/boarding.py b/api/chalicelib/core/boarding.py
new file mode 100644
index 000000000..e39f8ff28
--- /dev/null
+++ b/api/chalicelib/core/boarding.py
@@ -0,0 +1,116 @@
+from chalicelib.utils import pg_client
+from chalicelib.core import projects, log_tool_datadog, log_tool_stackdriver, log_tool_sentry
+
+from chalicelib.core import users
+
+
+def get_state(tenant_id):
+ my_projects = projects.get_projects(tenant_id=tenant_id, recording_state=False)
+ pids = [s["projectId"] for s in my_projects]
+ with pg_client.PostgresClient() as cur:
+ recorded = False
+ meta = False
+
+ if len(pids) > 0:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT
+ COUNT(*)
+ FROM public.sessions AS s
+ where s.project_id IN %(ids)s
+ LIMIT 1;""",
+ {"ids": tuple(pids)})
+ )
+ recorded = cur.fetchone()["count"] > 0
+ meta = False
+ if recorded:
+ cur.execute("""SELECT SUM((SELECT COUNT(t.meta)
+ FROM (VALUES (p.metadata_1), (p.metadata_2), (p.metadata_3), (p.metadata_4), (p.metadata_5),
+ (p.metadata_6), (p.metadata_7), (p.metadata_8), (p.metadata_9), (p.metadata_10),
+ (sessions.user_id)) AS t(meta)
+ WHERE t.meta NOTNULL))
+ FROM public.projects AS p
+ LEFT JOIN LATERAL ( SELECT 'defined'
+ FROM public.sessions
+ WHERE sessions.project_id=p.project_id AND sessions.user_id IS NOT NULL
+ LIMIT 1) AS sessions(user_id) ON(TRUE)
+ WHERE p.deleted_at ISNULL;"""
+ )
+
+ meta = cur.fetchone()["sum"] > 0
+
+ return [
+ {"task": "Install Asayer",
+ "done": recorded,
+ "URL": "https://docs.asayer.io/getting-started/quick-start"},
+ {"task": "Identify Users",
+ "done": meta,
+ "URL": "https://docs.asayer.io/data-privacy-security/metadata"},
+ {"task": "Invite Team Members",
+ "done": len(users.get_members(tenant_id=tenant_id)) > 1,
+ "URL": "https://app.asayer.io/client/manage-users"},
+ {"task": "Integrations",
+ "done": len(log_tool_datadog.get_all(tenant_id=tenant_id)) > 0 \
+ or len(log_tool_sentry.get_all(tenant_id=tenant_id)) > 0 \
+ or len(log_tool_stackdriver.get_all(tenant_id=tenant_id)) > 0,
+ "URL": "https://docs.asayer.io/integrations"}
+ ]
+
+
+def get_state_installing(tenant_id):
+ my_projects = projects.get_projects(tenant_id=tenant_id, recording_state=False)
+ pids = [s["projectId"] for s in my_projects]
+ with pg_client.PostgresClient() as cur:
+ recorded = False
+
+ if len(pids) > 0:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT
+ COUNT(*)
+ FROM public.sessions AS s
+ where s.project_id IN %(ids)s
+ LIMIT 1;""",
+ {"ids": tuple(pids)})
+ )
+ recorded = cur.fetchone()["count"] > 0
+
+ return {"task": "Install Asayer",
+ "done": recorded,
+ "URL": "https://docs.asayer.io/getting-started/quick-start"}
+
+
+def get_state_identify_users(tenant_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ """SELECT SUM((SELECT COUNT(t.meta)
+ FROM (VALUES (p.metadata_1), (p.metadata_2), (p.metadata_3), (p.metadata_4), (p.metadata_5),
+ (p.metadata_6), (p.metadata_7), (p.metadata_8), (p.metadata_9), (p.metadata_10),
+ (sessions.user_id)) AS t(meta)
+ WHERE t.meta NOTNULL))
+ FROM public.projects AS p
+ LEFT JOIN LATERAL ( SELECT 'defined'
+ FROM public.sessions
+ WHERE sessions.project_id=p.project_id AND sessions.user_id IS NOT NULL
+ LIMIT 1) AS sessions(user_id) ON(TRUE)
+ WHERE p.deleted_at ISNULL;""")
+
+ meta = cur.fetchone()["sum"] > 0
+
+ return {"task": "Identify Users",
+ "done": meta,
+ "URL": "https://docs.asayer.io/data-privacy-security/metadata"}
+
+
+def get_state_manage_users(tenant_id):
+ return {"task": "Invite Team Members",
+ "done": len(users.get_members(tenant_id=tenant_id)) > 1,
+ "URL": "https://app.asayer.io/client/manage-users"}
+
+
+def get_state_integrations(tenant_id):
+ return {"task": "Integrations",
+ "done": len(log_tool_datadog.get_all(tenant_id=tenant_id)) > 0 \
+ or len(log_tool_sentry.get_all(tenant_id=tenant_id)) > 0 \
+ or len(log_tool_stackdriver.get_all(tenant_id=tenant_id)) > 0,
+ "URL": "https://docs.asayer.io/integrations"}
diff --git a/api/chalicelib/core/collaboration_slack.py b/api/chalicelib/core/collaboration_slack.py
new file mode 100644
index 000000000..5fc80511c
--- /dev/null
+++ b/api/chalicelib/core/collaboration_slack.py
@@ -0,0 +1,126 @@
+import requests
+from chalicelib.utils.helper import environ
+from datetime import datetime
+from chalicelib.core import webhook
+
+
+class Slack:
+ @classmethod
+ def add_integration(cls, tenant_id, **args):
+ url = args["url"]
+ name = args["name"]
+ if cls.__say_hello(url):
+ webhook.add(tenant_id=tenant_id,
+ endpoint=url,
+ webhook_type="slack",
+ name=name)
+ return True
+ return False
+
+ @classmethod
+ def __say_hello(cls, url):
+ r = requests.post(
+ url=url,
+ json={
+ "attachments": [
+ {
+ "text": "Welcome to OpenReplay",
+ "ts": datetime.now().timestamp(),
+ }
+ ]
+ })
+ if r.status_code != 200:
+ print("slack integration failed")
+ print(r.text)
+ return False
+ return True
+
+ @classmethod
+ def send_text(cls, tenant_id, webhook_id, text, **args):
+ integration = cls.__get(tenant_id=tenant_id, integration_id=webhook_id)
+ if integration is None:
+ return {"errors": ["slack integration not found"]}
+ print("====> sending slack notification")
+ r = requests.post(
+ url=integration["endpoint"],
+ json={
+ "attachments": [
+ {
+ "text": text,
+ "ts": datetime.now().timestamp(),
+ **args
+ }
+ ]
+ })
+ print(r)
+ print(r.text)
+ return {"data": r.text}
+
+ @classmethod
+ def send_batch(cls, tenant_id, webhook_id, attachments):
+ integration = cls.__get(tenant_id=tenant_id, integration_id=webhook_id)
+ if integration is None:
+ return {"errors": ["slack integration not found"]}
+ print(f"====> sending slack batch notification: {len(attachments)}")
+ for i in range(0, len(attachments), 100):
+ r = requests.post(
+ url=integration["endpoint"],
+ json={"attachments": attachments[i:i + 100]})
+ if r.status_code != 200:
+ print("!!!! something went wrong")
+ print(r)
+ print(r.text)
+
+ @classmethod
+ def __share_to_slack(cls, tenant_id, integration_id, fallback, pretext, title, title_link, text):
+ integration = cls.__get(tenant_id=tenant_id, integration_id=integration_id)
+ if integration is None:
+ return {"errors": ["slack integration not found"]}
+ r = requests.post(
+ url=integration["endpoint"],
+ json={
+ "attachments": [
+ {
+ "fallback": fallback,
+ "pretext": pretext,
+ "title": title,
+ "title_link": title_link,
+ "text": text,
+ "ts": datetime.now().timestamp()
+ }
+ ]
+ })
+ return r.text
+
+ @classmethod
+ def share_session(cls, tenant_id, project_id, session_id, user, comment, integration_id=None):
+ args = {"fallback": f"{user} has shared the below session!",
+ "pretext": f"{user} has shared the below session!",
+ "title": f"{environ['SITE_URL']}/{project_id}/session/{session_id}",
+ "title_link": f"{environ['SITE_URL']}/{project_id}/session/{session_id}",
+ "text": comment}
+ return {"data": cls.__share_to_slack(tenant_id, integration_id, **args)}
+
+ @classmethod
+ def share_error(cls, tenant_id, project_id, error_id, user, comment, integration_id=None):
+ args = {"fallback": f"{user} has shared the below error!",
+ "pretext": f"{user} has shared the below error!",
+ "title": f"{environ['SITE_URL']}/{project_id}/errors/{error_id}",
+ "title_link": f"{environ['SITE_URL']}/{project_id}/errors/{error_id}",
+ "text": comment}
+ return {"data": cls.__share_to_slack(tenant_id, integration_id, **args)}
+
+ @classmethod
+ def has_slack(cls, tenant_id):
+ integration = cls.__get(tenant_id=tenant_id)
+ return not (integration is None or len(integration) == 0)
+
+ @classmethod
+ def __get(cls, tenant_id, integration_id=None):
+ if integration_id is not None:
+ return webhook.get(tenant_id=tenant_id, webhook_id=integration_id)
+
+ integrations = webhook.get_by_type(tenant_id=tenant_id, webhook_type="slack")
+ if integrations is None or len(integrations) == 0:
+ return None
+ return integrations[0]
diff --git a/api/chalicelib/core/dashboard.py b/api/chalicelib/core/dashboard.py
new file mode 100644
index 000000000..e739ceb04
--- /dev/null
+++ b/api/chalicelib/core/dashboard.py
@@ -0,0 +1,2034 @@
+from chalicelib.core import metadata
+from chalicelib.utils import args_transformer
+from chalicelib.utils import helper, dev
+from chalicelib.utils import pg_client
+from chalicelib.utils.TimeUTC import TimeUTC
+from chalicelib.utils.metrics_helper import __get_step_size
+import math
+
+
+# Written by David Aznaurov, inspired by numpy.quantile
+def __quantiles(a, q, interpolation='higher'):
+ arr = a.copy()
+ arr = sorted(arr)
+ if isinstance(q, list):
+ ind = [qi * (len(arr) - 1) for qi in q]
+ else:
+ ind = q * (len(arr) - 1)
+ if interpolation == 'higher':
+ if isinstance(q, list):
+ ind = [math.ceil(i) for i in ind]
+ else:
+ ind = math.ceil(ind)
+ if isinstance(q, list):
+ return [arr[i] for i in ind]
+ else:
+ return arr[ind]
+
+
+def __get_constraints(project_id, time_constraint=True, chart=False, duration=True, project=True,
+ project_identifier="project_id",
+ main_table="sessions", time_column="start_ts", data={}):
+ pg_sub_query = []
+ if project:
+ pg_sub_query.append(f"{main_table}.{project_identifier} =%({project_identifier})s")
+ if duration:
+ pg_sub_query.append(f"{main_table}.duration>0")
+ if time_constraint:
+ pg_sub_query.append(f"{main_table}.{time_column} >= %(startTimestamp)s")
+ pg_sub_query.append(f"{main_table}.{time_column} < %(endTimestamp)s")
+ if chart:
+ pg_sub_query.append(f"{main_table}.{time_column} >= generated_timestamp")
+ pg_sub_query.append(f"{main_table}.{time_column} < generated_timestamp + %(step_size)s")
+ return pg_sub_query + __get_meta_constraint(project_id=project_id, data=data)
+
+
+def __merge_charts(list1, list2, time_key="timestamp"):
+ if len(list1) != len(list2):
+ raise Exception("cannot merge unequal lists")
+ result = []
+ for i in range(len(list1)):
+ timestamp = min(list1[i][time_key], list2[i][time_key])
+ result.append({**list1[i], **list2[i], time_key: timestamp})
+ return result
+
+
+def __get_constraint_values(data):
+ params = {}
+ for i, f in enumerate(data.get("filters", [])):
+ params[f"{f['key']}_{i}"] = f["value"]
+ return params
+
+
+METADATA_FIELDS = {"userId": "user_id",
+ "userAnonymousId": "user_anonymous_id",
+ "metadata1": "metadata_1",
+ "metadata2": "metadata_2",
+ "metadata3": "metadata_3",
+ "metadata4": "metadata_4",
+ "metadata5": "metadata_5",
+ "metadata6": "metadata_6",
+ "metadata7": "metadata_7",
+ "metadata8": "metadata_8",
+ "metadata9": "metadata_9",
+ "metadata10": "metadata_10"}
+
+from chalicelib.core import sessions_metas
+
+
+def __get_meta_constraint(project_id, data):
+ if len(data.get("filters", [])) == 0:
+ return []
+ constraints = []
+ meta_keys = metadata.get(project_id=project_id)
+ meta_keys = {m["key"]: m["index"] for m in meta_keys}
+ print(meta_keys)
+
+ for i, f in enumerate(data.get("filters", [])):
+ if f["key"] in meta_keys.keys():
+ key = f"sessions.metadata_{meta_keys[f['key']]})"
+ if f["value"] in ["*", ""]:
+ constraints.append(f"{key} IS NOT NULL")
+ else:
+ constraints.append(f"{key} = %({f['key']}_{i})s")
+ else:
+ filter_type = f["key"].upper()
+ if filter_type == sessions_metas.meta_type.USERBROWSER:
+ constraints.append(f"sessions.user_browser = %({f['key']}_{i})s")
+ elif filter_type in [sessions_metas.meta_type.USEROS, sessions_metas.meta_type.USEROS_IOS]:
+ constraints.append(f"sessions.user_os = %({f['key']}_{i})s")
+ elif filter_type in [sessions_metas.meta_type.USERDEVICE, sessions_metas.meta_type.USERDEVICE_IOS]:
+ constraints.append(f"sessions.user_device = %({f['key']}_{i})s")
+ elif filter_type in [sessions_metas.meta_type.USERCOUNTRY, sessions_metas.meta_type.USERCOUNTRY_IOS]:
+ constraints.append(f"sessions.user_country = %({f['key']}_{i})s")
+ elif filter_type in [sessions_metas.meta_type.USERID, sessions_metas.meta_type.USERID_IOS]:
+ constraints.append(f"sessions.user_id = %({f['key']}_{i})s")
+ elif filter_type in [sessions_metas.meta_type.USERANONYMOUSID,
+ sessions_metas.meta_type.USERANONYMOUSID_IOS]:
+ constraints.append(f"sessions.user_anonymous_id = %({f['key']}_{i})s")
+ elif filter_type in [sessions_metas.meta_type.REVID, sessions_metas.meta_type.REVID_IOS]:
+ constraints.append(f"sessions.rev_id = %({f['key']}_{i})s")
+ return constraints
+
+
+SESSIONS_META_FIELDS = {"revId": "rev_id",
+ "country": "user_country",
+ "os": "user_os",
+ "platform": "user_device_type",
+ "device": "user_device",
+ "browser": "user_browser"}
+
+
+@dev.timed
+def get_processed_sessions(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(),
+ density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""\
+ SELECT generated_timestamp AS timestamp,
+ COALESCE(COUNT(sessions), 0) AS count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT 1
+ FROM public.sessions
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sessions ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"step_size": step_size, "project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ results = {
+ "count": sum([r["count"] for r in rows]),
+ "chart": rows
+ }
+
+ diff = endTimestamp - startTimestamp
+ endTimestamp = startTimestamp
+ startTimestamp = endTimestamp - diff
+
+ pg_query = f"""\
+ SELECT COUNT(sessions.session_id) AS count
+ FROM public.sessions
+ WHERE {" AND ".join(pg_sub_query)};"""
+ params = {"project_id": project_id, "startTimestamp": startTimestamp, "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}
+
+ cur.execute(cur.mogrify(pg_query, params))
+
+ count = cur.fetchone()["count"]
+
+ results["countProgress"] = helper.__progress(old_val=count, new_val=results["count"])
+
+ return results
+
+
+@dev.timed
+def get_errors(project_id, startTimestamp=TimeUTC.now(delta_days=-1), endTimestamp=TimeUTC.now(),
+ density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("m_errors.source = 'js_exception'")
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ pg_sub_query_chart.append("m_errors.source = 'js_exception'")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""\
+ SELECT generated_timestamp AS timestamp,
+ COALESCE(COUNT(sessions), 0) AS count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT DISTINCT session_id
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING(error_id)
+ INNER JOIN public.sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sessions ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"step_size": step_size, "project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ results = {
+ "count": 0 if len(rows) == 0 else __count_distinct_errors(cur, project_id, startTimestamp, endTimestamp,
+ pg_sub_query),
+ "impactedSessions": sum([r["count"] for r in rows]),
+ "chart": rows
+ }
+
+ diff = endTimestamp - startTimestamp
+ endTimestamp = startTimestamp
+ startTimestamp = endTimestamp - diff
+ count = __count_distinct_errors(cur, project_id, startTimestamp, endTimestamp, pg_sub_query, **args)
+ results["progress"] = helper.__progress(old_val=count, new_val=results["count"])
+ return results
+
+
+def __count_distinct_errors(cur, project_id, startTimestamp, endTimestamp, pg_sub_query, **args):
+ pg_query = f"""\
+ SELECT COALESCE(COUNT(DISTINCT errors.error_id),0) AS count
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING(error_id)
+ INNER JOIN public.sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ return cur.fetchone()["count"]
+
+
+@dev.timed
+def get_errors_trend(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(),
+ density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("m_errors.project_id = %(project_id)s")
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True, duration=False,
+ project=False, main_table="errors", time_column="timestamp", data=args)
+ pg_sub_query_chart.append("error_id = errors_details.error_id")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""
+ SELECT *
+ FROM (SELECT errors.error_id AS error_id,
+ m_errors.message AS error,
+ COUNT(errors.session_id) AS count,
+ COUNT(DISTINCT errors.session_id) AS sessions_count
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING (error_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY errors.error_id, m_errors.message
+ ORDER BY sessions_count DESC, count DESC
+ LIMIT 10) AS errors_details
+ INNER JOIN LATERAL (SELECT MAX(timestamp) AS last_occurrence_at,
+ MIN(timestamp) AS first_occurrence_at
+ FROM events.errors
+ WHERE error_id = errors_details.error_id
+ GROUP BY error_id) AS errors_time ON (TRUE)
+ INNER JOIN LATERAL (SELECT jsonb_agg(chart) AS chart
+ FROM (SELECT generated_timestamp AS timestamp, COALESCE(COUNT(sessions), 0) AS count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT DISTINCT session_id
+ FROM events.errors
+ WHERE {" AND ".join(pg_sub_query_chart)}) AS sessions
+ ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp) AS chart) AS chart ON (TRUE);"""
+ params = {"step_size": step_size, "project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+
+ for i in range(len(rows)):
+ rows[i] = helper.dict_to_camel_case(rows[i])
+ rows[i]["sessions"] = rows[i].pop("sessionsCount")
+ rows[i]["error_id"] = rows[i]["errorId"]
+ rows[i]["startTimestamp"] = startTimestamp
+ rows[i]["endTimestamp"] = endTimestamp
+
+ return rows
+
+
+@dev.timed
+def get_page_metrics(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ with pg_client.PostgresClient() as cur:
+ rows = __get_page_metrics(cur, project_id, startTimestamp, endTimestamp, **args)
+ if len(rows) > 0:
+ results = helper.dict_to_camel_case(rows[0])
+ diff = endTimestamp - startTimestamp
+ endTimestamp = startTimestamp
+ startTimestamp = endTimestamp - diff
+ rows = __get_page_metrics(cur, project_id, startTimestamp, endTimestamp, **args)
+ if len(rows) > 0:
+ previous = helper.dict_to_camel_case(rows[0])
+ for key in previous.keys():
+ results[key + "Progress"] = helper.__progress(old_val=previous[key], new_val=results[key])
+ return results
+
+
+def __get_page_metrics(cur, project_id, startTimestamp, endTimestamp, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+
+ pg_query = f"""\
+ SELECT
+ COALESCE(AVG(NULLIF(pages.dom_content_loaded_time ,0)),0) AS avg_dom_content_load_start,
+ COALESCE(AVG(NULLIF(pages.first_contentful_paint_time,0)),0) AS avg_first_contentful_pixel
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ params = {"project_id": project_id, "startTimestamp": startTimestamp, "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ return rows
+
+
+@dev.timed
+def get_application_activity(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ with pg_client.PostgresClient() as cur:
+ row = __get_application_activity(cur, project_id, startTimestamp, endTimestamp, **args)
+ results = helper.dict_to_camel_case(row)
+ diff = endTimestamp - startTimestamp
+ endTimestamp = startTimestamp
+ startTimestamp = endTimestamp - diff
+ row = __get_application_activity(cur, project_id, startTimestamp, endTimestamp, **args)
+ previous = helper.dict_to_camel_case(row)
+ for key in previous.keys():
+ results[key + "Progress"] = helper.__progress(old_val=previous[key], new_val=results[key])
+ return results
+
+
+def __get_application_activity(cur, project_id, startTimestamp, endTimestamp, **args):
+ result = {}
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("pages.load_time > 0")
+ pg_query = f"""\
+ SELECT COALESCE(AVG(pages.load_time) ,0) AS avg_page_load_time
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ params = {"project_id": project_id, "startTimestamp": startTimestamp, "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}
+
+ cur.execute(cur.mogrify(pg_query, params))
+ row = cur.fetchone()
+ result = {**result, **row}
+
+ pg_sub_query[-1] = "resources.duration > 0"
+ pg_sub_query.append("resources.type= %(type)s")
+ pg_query = f"""\
+ SELECT COALESCE(AVG(resources.duration),0) AS avg
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id, "type": 'img', "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ row = cur.fetchone()
+ result = {**result, "avg_image_load_time": row["avg"]}
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id, "type": 'fetch', "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+
+ row = cur.fetchone()
+ result = {**result, "avg_request_load_time": row["avg"]}
+
+ return result
+
+
+@dev.timed
+def get_user_activity(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ with pg_client.PostgresClient() as cur:
+ row = __get_user_activity(cur, project_id, startTimestamp, endTimestamp, **args)
+ results = helper.dict_to_camel_case(row)
+ diff = endTimestamp - startTimestamp
+ endTimestamp = startTimestamp
+ startTimestamp = endTimestamp - diff
+ row = __get_user_activity(cur, project_id, startTimestamp, endTimestamp, **args)
+
+ previous = helper.dict_to_camel_case(row)
+ for key in previous:
+ results[key + "Progress"] = helper.__progress(old_val=previous[key], new_val=results[key])
+ return results
+
+
+def __get_user_activity(cur, project_id, startTimestamp, endTimestamp, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+
+ pg_query = f"""\
+ SELECT COALESCE(CEIL(AVG(NULLIF(sessions.pages_count,0))),0) AS avg_visited_pages,
+ COALESCE(AVG(NULLIF(sessions.duration,0)),0) AS avg_session_duration
+ FROM public.sessions
+ WHERE {" AND ".join(pg_sub_query)};"""
+ params = {"project_id": project_id, "startTimestamp": startTimestamp, "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}
+
+ cur.execute(cur.mogrify(pg_query, params))
+ row = cur.fetchone()
+ return row
+
+
+@dev.timed
+def get_slowest_images(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(),
+ density=7, **args):
+ step_size = __get_step_size(endTimestamp=endTimestamp, startTimestamp=startTimestamp, density=density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("resources.type = 'img'")
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ pg_sub_query_chart.append("resources.type = 'img'")
+ pg_sub_query_chart.append("resources.url = %(url)s")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT resources.url,
+ COALESCE(AVG(NULLIF(resources.duration,0)),0) AS avg_duration,
+ COUNT(resources.session_id) AS sessions_count
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY resources.url
+ ORDER BY avg_duration DESC LIMIT 10;"""
+
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ urls = [row["url"] for row in rows]
+
+ charts = {}
+ for url in urls:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(duration), 0) AS avg_duration
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT resources.duration
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sessions ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"step_size": step_size, "project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, "url": url, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ r = cur.fetchall()
+ charts[url] = helper.list_to_camel_case(r)
+ for i in range(len(rows)):
+ rows[i]["sessions"] = rows[i].pop("sessions_count")
+ rows[i] = helper.dict_to_camel_case(rows[i])
+ rows[i]["chart"] = charts[rows[i]["url"]]
+
+ return sorted(rows, key=lambda k: k["sessions"], reverse=True)
+
+
+@dev.timed
+def __get_performance_constraint(l):
+ if len(l) == 0:
+ return ""
+ l = [s.decode('UTF-8').replace("%", "%%") for s in l]
+ return f"AND ({' OR '.join(l)})"
+
+
+@dev.timed
+def get_performance(project_id, startTimestamp=TimeUTC.now(delta_days=-1), endTimestamp=TimeUTC.now(),
+ density=19, resources=None, **args):
+ step_size = __get_step_size(endTimestamp=endTimestamp, startTimestamp=startTimestamp, density=density, factor=1)
+ location_constraints = []
+ img_constraints = []
+ request_constraints = []
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ img_constraints_vals = {}
+ location_constraints_vals = {}
+ request_constraints_vals = {}
+
+ if resources and len(resources) > 0:
+ for r in resources:
+ if r["type"] == "IMG":
+ img_constraints.append(f"resources.url = %(val_{len(img_constraints)})s")
+ img_constraints_vals["val_" + str(len(img_constraints) - 1)] = r['value']
+ elif r["type"] == "LOCATION":
+ location_constraints.append(f"pages.path = %(val_{len(location_constraints)})s")
+ location_constraints_vals["val_" + str(len(location_constraints) - 1)] = r['value']
+ else:
+ request_constraints.append(f"resources.url = %(val_{len(request_constraints)})s")
+ request_constraints_vals["val_" + str(len(request_constraints) - 1)] = r['value']
+ params = {"step_size": step_size, "project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp}
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT
+ generated_timestamp AS timestamp,
+ COALESCE(AVG(NULLIF(resources.duration,0)),0) AS avg_image_load_time
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT resources.duration
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ AND resources.type = 'img'
+ {(f' AND ({" OR ".join(img_constraints)})') if len(img_constraints) > 0 else ""}
+ ) AS resources ON (TRUE)
+ GROUP BY timestamp
+ ORDER BY timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {**params, **img_constraints_vals, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ images = helper.list_to_camel_case(rows)
+ pg_query = f"""SELECT
+ generated_timestamp AS timestamp,
+ COALESCE(AVG(NULLIF(resources.duration,0)),0) AS avg_request_load_time
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT resources.duration
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ AND resources.type = 'fetch'
+ {(f' AND ({" OR ".join(request_constraints)})') if len(request_constraints) > 0 else ""}
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {**params, **request_constraints_vals, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ requests = helper.list_to_camel_case(rows)
+
+ pg_query = f"""SELECT
+ generated_timestamp AS timestamp,
+ COALESCE(AVG(NULLIF(pages.load_time ,0)),0) AS avg_page_load_time
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT pages.load_time
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ {(f' AND ({" OR ".join(location_constraints)})') if len(location_constraints) > 0 else ""}
+ ) AS pages ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+
+ cur.execute(cur.mogrify(pg_query, {**params, **location_constraints_vals, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ pages = helper.list_to_camel_case(rows)
+
+ rows = helper.merge_lists_by_key(helper.merge_lists_by_key(pages, requests, "timestamp"), images, "timestamp")
+
+ return {"chart": rows}
+
+
+RESOURCS_TYPE_TO_DB_TYPE = {
+ "img": "IMG",
+ "fetch": "REQUEST",
+ "stylesheet": "STYLESHEET",
+ "script": "SCRIPT",
+ "other": "OTHER",
+ "media": "MEDIA"
+}
+
+
+def __get_resource_type_from_db_type(db_type):
+ db_type = db_type.lower()
+ return RESOURCS_TYPE_TO_DB_TYPE.get(db_type, db_type)
+
+
+def __get_resource_db_type_from_type(resource_type):
+ resource_type = resource_type.upper()
+ return {v: k for k, v in RESOURCS_TYPE_TO_DB_TYPE.items()}.get(resource_type, resource_type)
+
+
+@dev.timed
+def search(text, resource_type, project_id, performance=False, pages_only=False, events_only=False,
+ metadata=False, key=None, platform=None):
+ if not resource_type:
+ data = []
+ if metadata:
+ resource_type = "METADATA"
+ elif pages_only or performance:
+ resource_type = "LOCATION"
+ else:
+ resource_type = "ALL"
+ data.extend(search(text=text, resource_type=resource_type, project_id=project_id,
+ performance=performance, pages_only=pages_only, events_only=events_only, key=key,
+ platform=platform))
+ return data
+
+ pg_sub_query = __get_constraints(project_id=project_id, time_constraint=False, duration=True,
+ data={} if platform is None else {"platform": platform})
+
+ if resource_type == "ALL" and not pages_only and not events_only:
+ pg_sub_query.append("url_hostpath ILIKE %(value)s")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT key, value
+ FROM ( SELECT DISTINCT ON (url) ROW_NUMBER() OVER (PARTITION BY type ORDER BY url) AS r,
+ url AS value,
+ type AS key
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ ORDER BY url, type ASC) AS ranked_values
+ WHERE ranked_values.r<=5;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id, "value": helper.string_to_sql_like(text)}))
+ rows = cur.fetchall()
+ rows = [{"value": i["value"], "type": __get_resource_type_from_db_type(i["key"])} for i in rows]
+ elif resource_type == "ALL" and events_only:
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""(SELECT DISTINCT label AS value, 'INPUT' AS key
+ FROM events.inputs INNER JOIN public.sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query)} AND positionUTF8(lowerUTF8(label), %(value)s) != 0
+ LIMIT 10)
+ UNION ALL
+ (SELECT DISTINCT label AS value, 'CLICK' AS key
+ FROM events.clicks INNER JOIN public.sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query)} AND positionUTF8(lowerUTF8(label), %(value)s) != 0
+ LIMIT 10)
+ UNION ALL
+ (SELECT DISTINCT path AS value, 'LOCATION' AS key
+ FROM events.pages INNER JOIN public.sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query)} AND positionUTF8(url_path, %(value)s) != 0
+ LIMIT 10);"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "value": helper.string_to_sql_like(text.lower()),
+ "platform_0": platform}))
+ rows = cur.fetchall()
+ rows = [{"value": i["value"], "type": i["key"]} for i in rows]
+ elif resource_type in ['IMG', 'REQUEST', 'STYLESHEET', 'OTHER', 'SCRIPT'] and not pages_only:
+ pg_sub_query.append("url_hostpath ILIKE %(value)s")
+ pg_sub_query.append(f"resources.type = '{__get_resource_db_type_from_type(resource_type)}'")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT
+ DISTINCT url_hostpath AS value,
+ %(resource_type)s AS type
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "value": helper.string_to_sql_like(text),
+ "resource_type": resource_type,
+ "platform_0": platform}))
+ rows = cur.fetchall()
+ elif resource_type == 'LOCATION':
+ with pg_client.PostgresClient() as cur:
+ pg_sub_query.append("path ILIKE %(value)s")
+ pg_query = f"""SELECT
+ DISTINCT path AS value,
+ 'LOCATION' AS type
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ LIMIT 10;"""
+ print(cur.mogrify(pg_query, {"project_id": project_id,
+ "value": helper.string_to_sql_like(text),
+ "platform_0": platform}))
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "value": helper.string_to_sql_like(text),
+ "platform_0": platform}))
+ rows = cur.fetchall()
+ elif resource_type == "INPUT":
+ with pg_client.PostgresClient() as cur:
+ pg_sub_query.append("label ILIKE %(value)s")
+ pg_query = f"""SELECT DISTINCT label AS value, 'INPUT' AS type
+ FROM events.inputs INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "value": helper.string_to_sql_like(text),
+ "platform_0": platform}))
+ rows = cur.fetchall()
+ elif resource_type == "CLICK":
+ with pg_client.PostgresClient() as cur:
+ pg_sub_query.append("label ILIKE %(value)s")
+ pg_query = f"""SELECT DISTINCT label AS value, 'CLICK' AS key
+ FROM events.clicks INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "value": helper.string_to_sql_like(text),
+ "platform_0": platform}))
+ rows = cur.fetchall()
+ elif resource_type == "METADATA":
+ if key and len(key) > 0 and key in {**METADATA_FIELDS, **SESSIONS_META_FIELDS}.keys():
+ if key in METADATA_FIELDS.keys():
+ column = METADATA_FIELDS[key]
+ pg_sub_query.append(f"{METADATA_FIELDS[key]} ILIKE %(value)s")
+ else:
+ column = SESSIONS_META_FIELDS[key]
+ pg_sub_query.append(f"{SESSIONS_META_FIELDS[key]} ILIKE %(value)s")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT DISTINCT {column} AS value,
+ %(key)s AS key
+ FROM sessions
+ WHERE {" AND ".join(pg_sub_query)}
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query,
+ {"project_id": project_id, "value": helper.string_to_sql_like(text), "key": key,
+ "platform_0": platform}))
+ rows = cur.fetchall()
+ else:
+ with pg_client.PostgresClient() as cur:
+ pg_query = []
+ for k in METADATA_FIELDS.keys():
+ pg_query.append(f"""(SELECT DISTINCT sessions.{METADATA_FIELDS[k]} AS value,
+ '{k}' AS key
+ FROM public.sessions
+ WHERE {" AND ".join(pg_sub_query)}
+ AND {METADATA_FIELDS[k]} ILIKE %(value)s
+ LIMIT 10)""")
+ for k in SESSIONS_META_FIELDS.keys():
+ if k in ["platform", "country"]:
+ continue
+ pg_query.append(f"""(SELECT DISTINCT sessions.{SESSIONS_META_FIELDS[k]} AS value,
+ '{k}' AS key
+ FROM sessions
+ WHERE {" AND ".join(pg_sub_query)}
+ AND sessions.{SESSIONS_META_FIELDS[k]} ILIKE %(value)s
+ LIMIT 10)""")
+ pg_query = " UNION ALL ".join(pg_query)
+ cur.execute(cur.mogrify(pg_query,
+ {"project_id": project_id, "value": helper.string_to_sql_like(text),
+ "key": key,
+ "platform_0": platform}))
+ rows = cur.fetchall()
+ else:
+ return []
+ return [helper.dict_to_camel_case(row) for row in rows]
+
+
+@dev.timed
+def get_missing_resources_trend(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(),
+ density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True, data=args)
+ pg_sub_query.append("resources.success = FALSE")
+ pg_sub_query_chart.append("resources.success = FALSE")
+ pg_sub_query.append("resources.type != 'fetch'")
+ pg_sub_query_chart.append("resources.type != 'fetch'")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT
+ resources.url_hostpath AS url,
+ COUNT(resources.session_id) AS sessions
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY url_hostpath
+ ORDER BY sessions DESC
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+
+ rows = cur.fetchall()
+ # rows = [{"url": i["key"], "sessions": i["doc_count"]} for i in rows]
+ if len(rows) == 0:
+ return []
+ pg_sub_query.append("resources.url_hostpath = %(value)s")
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COUNT(resources.session_id) AS count,
+ MAX(resources.timestamp) AS max_datatime
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT resources.session_id,
+ resources.timestamp
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ for e in rows:
+ e["startedAt"] = startTimestamp
+ e["startTimestamp"] = startTimestamp
+ e["endTimestamp"] = endTimestamp
+
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size, "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "value": e["url"],
+ **__get_constraint_values(args)}))
+ r = cur.fetchall()
+ e["endedAt"] = r[-1]["max_datatime"]
+ e["chart"] = [{"timestamp": i["timestamp"], "count": i["count"]} for i in r]
+ return rows
+
+
+@dev.timed
+def get_network(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(),
+ density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ resources.url_hostpath,
+ COUNT(resources.session_id) AS doc_count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT resources.session_id,
+ resources.url_hostpath
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp, resources.url_hostpath
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size, "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ r = cur.fetchall()
+ results = []
+
+ i = 0
+ while i < len(r):
+ results.append({"timestamp": r[i]["timestamp"], "domains": []})
+ i += 1
+ while i < len(r) and r[i]["timestamp"] == results[-1]["timestamp"]:
+ results[-1]["domains"].append({r[i]["url_hostpath"]: r[i]["doc_count"]})
+ i += 1
+
+ return {"startTimestamp": startTimestamp, "endTimestamp": endTimestamp, "chart": results}
+
+
+KEYS = {
+ 'startTimestamp': args_transformer.int_arg,
+ 'endTimestamp': args_transformer.int_arg,
+ 'density': args_transformer.int_arg,
+ 'performanceDensity': args_transformer.int_arg,
+ 'platform': args_transformer.string
+}
+
+
+def dashboard_args(params):
+ args = {}
+ if params is not None:
+ for key in params.keys():
+ if key in KEYS.keys():
+ args[key] = KEYS[key](params.get(key))
+ return args
+
+
+@dev.timed
+def get_resources_loading_time(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(),
+ density=19, type=None, url=None, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ if type is not None:
+ pg_sub_query.append(f"resources.type = '{__get_resource_db_type_from_type(type)}'")
+ pg_sub_query_chart.append(f"resources.type = '{__get_resource_db_type_from_type(type)}'")
+ if url is not None:
+ pg_sub_query.append(f"resources.url = %(value)s")
+ pg_sub_query_chart.append(f"resources.url = %(value)s")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(NULLIF(resources.duration,0)),0) AS avg
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT resources.duration
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"step_size": step_size, "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "value": url, "type": type, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ if len(rows) > 0:
+ pg_query = f"""SELECT COALESCE(AVG(NULLIF(resources.duration,0)),0) AS avg
+ FROM events.resources INNER JOIN sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, params))
+ avg = cur.fetchone()["avg"]
+ else:
+ avg = 0
+ return {"avg": avg, "chart": rows}
+
+
+@dev.timed
+def get_pages_dom_build_time(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=19, url=None, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ if url is not None:
+ pg_sub_query.append(f"pages.path = %(value)s")
+ pg_sub_query_chart.append(f"pages.path = %(value)s")
+ pg_sub_query.append("pages.dom_building_time>0")
+ pg_sub_query_chart.append("pages.dom_building_time>0")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT COALESCE(avg, 0) AS avg, chart
+ FROM (SELECT AVG(dom_building_time)
+ FROM public.sessions
+ INNER JOIN events.pages USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}) AS avg
+ LEFT JOIN
+ (SELECT jsonb_agg(chart) AS chart
+ FROM (
+ SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(dom_building_time), 0) AS avg
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT pages.dom_building_time
+ FROM public.sessions
+ INNER JOIN events.pages USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sessionsBD ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp) AS chart) AS chart ON (TRUE);"""
+ params = {"step_size": step_size, "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "value": url, **__get_constraint_values(args)}
+
+ cur.execute(cur.mogrify(pg_query, params))
+ row = cur.fetchone()
+ return row
+
+
+@dev.timed
+def get_slowest_resources(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), type="all", density=19, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ if type is not None and type.upper() != "ALL":
+ sq = f"resources.type = '{__get_resource_db_type_from_type(type.upper())}'"
+ else:
+ sq = "resources.type != 'fetch'"
+ pg_sub_query.append(sq)
+ pg_sub_query_chart.append(sq)
+ pg_sub_query_chart.append("resources.duration IS NOT NULL")
+ pg_sub_query_chart.append("resources.duration>0")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT *
+ FROM (SELECT regexp_replace(resources.url_hostpath, '^.*/', '') AS name,
+ AVG(NULLIF(resources.duration, 0)) AS avg
+ FROM events.resources
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY name
+ ORDER BY avg DESC
+ LIMIT 10) AS main_list
+ INNER JOIN LATERAL (
+ SELECT url, type
+ FROM events.resources
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ AND resources.url_hostpath ILIKE '%%' || main_list.name
+ ORDER BY resources.duration DESC
+ LIMIT 1
+ ) AS resource_details ON (TRUE)
+ INNER JOIN LATERAL (
+ SELECT JSONB_AGG(chart_details) AS chart
+ FROM (
+ SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(resources.duration), 0) AS avg
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT resources.duration
+ FROM events.resources
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ AND resources.url_hostpath ILIKE '%%' || main_list.name
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp
+ ) AS chart_details
+ ) AS chart_details ON (TRUE);"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "step_size": step_size,
+ **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ for r in rows:
+ r["type"] = __get_resource_type_from_db_type(r["type"])
+ return rows
+
+
+@dev.timed
+def get_sessions_location(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT user_country, COUNT(session_id) AS count
+ FROM public.sessions
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY user_country
+ ORDER BY user_country;"""
+ cur.execute(cur.mogrify(pg_query,
+ {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return {"count": sum(i["count"] for i in rows), "chart": helper.list_to_camel_case(rows)}
+
+
+@dev.timed
+def get_speed_index_location(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("pages.speed_index IS NOT NULL")
+ pg_sub_query.append("pages.speed_index>0")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT sessions.user_country, AVG(pages.speed_index) AS avg
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY sessions.user_country
+ ORDER BY avg,sessions.user_country;"""
+ params = {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ if len(rows) > 0:
+ pg_query = f"""SELECT AVG(pages.speed_index) AS avg
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, params))
+ avg = cur.fetchone()["avg"]
+ else:
+ avg = 0
+ return {"avg": avg, "chart": helper.list_to_camel_case(rows)}
+
+
+@dev.timed
+def get_pages_response_time(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, url=None, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("pages.response_time IS NOT NULL")
+ pg_sub_query.append("pages.response_time>0")
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True,
+ data=args)
+ pg_sub_query_chart.append("pages.response_time IS NOT NULL")
+ pg_sub_query_chart.append("pages.response_time>0")
+
+ if url is not None:
+ pg_sub_query_chart.append(f"url = %(value)s")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(pages.response_time),0) AS avg
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT response_time
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS pages ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "value": url, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ pg_query = f"""SELECT COALESCE(AVG(pages.response_time),0) AS avg
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, params))
+ avg = cur.fetchone()["avg"]
+ return {"avg": avg, "chart": rows}
+
+
+@dev.timed
+def get_pages_response_time_distribution(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=20, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("pages.response_time IS NOT NULL")
+ pg_sub_query.append("pages.response_time>0")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT pages.response_time AS response_time,
+ COUNT(pages.session_id) AS count
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY response_time
+ ORDER BY pages.response_time;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ pg_query = f"""SELECT COALESCE(AVG(pages.response_time),0) AS avg
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ avg = cur.fetchone()["avg"]
+ quantiles_keys = [50, 90, 95, 99]
+ pg_query = f"""SELECT pages.response_time AS value
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ response_times = cur.fetchall()
+ response_times = [i["value"] for i in response_times]
+ if len(response_times) > 0:
+ quantiles = __quantiles(a=response_times,
+ q=[i / 100 for i in quantiles_keys],
+ interpolation='higher')
+ else:
+ quantiles = [0 for i in range(len(quantiles_keys))]
+ result = {
+ "avg": avg,
+ "total": sum(r["count"] for r in rows),
+ "chart": [],
+ "percentiles": [{
+ "percentile": float(v),
+ "responseTime": int(quantiles[i])
+ } for i, v in enumerate(quantiles_keys)
+ ],
+ "extremeValues": [{"count": 0}]
+ }
+ rows = helper.list_to_camel_case(rows)
+ _99 = result["percentiles"][-1]["responseTime"]
+ extreme_values_first_index = -1
+ for i, r in enumerate(rows):
+ if r["responseTime"] > _99:
+ extreme_values_first_index = i
+ break
+
+ if extreme_values_first_index >= 0:
+ extreme_values_first_index += 1
+ result["extremeValues"][0]["count"] = sum(r["count"] for r in rows[extreme_values_first_index:])
+ rows = rows[:extreme_values_first_index]
+
+ # ------- Merge points to reduce chart length till density
+ if density < len(quantiles_keys):
+ density = len(quantiles_keys)
+
+ while len(rows) > density:
+ true_length = len(rows)
+ rows_partitions = []
+ offset = 0
+ for p in result["percentiles"]:
+ rows_partitions.append([])
+ for r in rows[offset:]:
+ if r["responseTime"] < p["responseTime"]:
+ rows_partitions[-1].append(r)
+ offset += 1
+ else:
+ break
+ rows_partitions.append(rows[offset:])
+
+ largest_partition = 0
+ for i in range(len(rows_partitions)):
+ if len(rows_partitions[i]) > len(rows_partitions[largest_partition]):
+ largest_partition = i
+
+ if len(rows_partitions[largest_partition]) <= 2:
+ break
+ # computing lowest merge diff
+ diff = rows[-1]["responseTime"]
+ for i in range(1, len(rows_partitions[largest_partition]) - 1, 1):
+ v1 = rows_partitions[largest_partition][i]
+ v2 = rows_partitions[largest_partition][i + 1]
+ if (v2["responseTime"] - v1["responseTime"]) < diff:
+ diff = v2["responseTime"] - v1["responseTime"]
+
+ i = 1
+ while i < len(rows_partitions[largest_partition]) - 1 and true_length > density - 1:
+ v1 = rows_partitions[largest_partition][i]
+ v2 = rows_partitions[largest_partition][i + 1]
+ if (v2["responseTime"] - v1["responseTime"]) == diff:
+ rows_partitions[largest_partition][i]["count"] += v2["count"]
+ rows_partitions[largest_partition][i]["responseTime"] = v2["responseTime"]
+ del rows_partitions[largest_partition][i + 1]
+ true_length -= 1
+ else:
+ i += 1
+
+ rows = [r for rp in rows_partitions for r in rp]
+
+ if extreme_values_first_index == len(rows):
+ rows.append({"count": 0, "responseTime": rows[-1]["responseTime"] + 10})
+
+ result["chart"] = rows
+ return result
+
+
+@dev.timed
+def get_busiest_time_of_day(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT
+ (EXTRACT(HOUR FROM TO_TIMESTAMP(sessions.start_ts))::INTEGER / 2) * 2 AS hour,
+ COUNT(sessions.session_id) AS count
+ FROM public.sessions
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY hour
+ ORDER BY hour ASC;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return rows
+
+
+@dev.timed
+def get_top_metrics(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), value=None, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+
+ if value is not None:
+ pg_sub_query.append("pages.path = %(value)s")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT (SELECT COALESCE(AVG(pages.response_time),0) FROM events.pages INNER JOIN public.sessions USING (session_id) WHERE {" AND ".join(pg_sub_query)} AND pages.response_time IS NOT NULL AND pages.response_time>0) AS avg_response_time,
+ (SELECT COUNT(pages.session_id) FROM events.pages INNER JOIN public.sessions USING (session_id) WHERE {" AND ".join(pg_sub_query)}) AS count_requests,
+ (SELECT COALESCE(AVG(pages.first_paint_time),0) FROM events.pages INNER JOIN public.sessions USING (session_id) WHERE {" AND ".join(pg_sub_query)} AND pages.first_paint_time IS NOT NULL AND pages.first_paint_time>0) AS avg_first_paint,
+ (SELECT COALESCE(AVG(pages.dom_content_loaded_time),0) FROM events.pages INNER JOIN public.sessions USING (session_id) WHERE {" AND ".join(pg_sub_query)} AND pages.dom_content_loaded_time IS NOT NULL AND pages.dom_content_loaded_time>0) AS avg_dom_content_loaded,
+ (SELECT COALESCE(AVG(pages.ttfb),0) FROM events.pages INNER JOIN public.sessions USING (session_id) WHERE {" AND ".join(pg_sub_query)} AND pages.ttfb IS NOT NULL AND pages.ttfb>0) AS avg_till_first_bit,
+ (SELECT COALESCE(AVG(pages.time_to_interactive),0) FROM events.pages INNER JOIN public.sessions USING (session_id) WHERE {" AND ".join(pg_sub_query)} AND pages.time_to_interactive IS NOT NULL AND pages.time_to_interactive >0) AS avg_time_to_interactive;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "value": value, **__get_constraint_values(args)}))
+ row = cur.fetchone()
+ return helper.dict_to_camel_case(row)
+
+
+@dev.timed
+def get_time_to_render(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, url=None, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True,
+ data=args)
+ pg_sub_query.append("pages.visually_complete>0")
+ pg_sub_query_chart.append("pages.visually_complete>0")
+ if url is not None:
+ pg_sub_query_chart.append("pages.path = %(value)s")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT COALESCE(avg,0) AS avg, chart
+ FROM (SELECT AVG(pages.visually_complete)
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}) AS avg
+ LEFT JOIN
+ (SELECT jsonb_agg(chart) AS chart
+ FROM (SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(visually_complete), 0) AS avg
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT pages.visually_complete
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS pages ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp) AS chart) AS chart ON(TRUE);"""
+ params = {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, "value": url, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ row = cur.fetchone()
+ return row
+
+
+@dev.timed
+def get_impacted_sessions_by_slow_pages(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), value=None, density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True,
+ data=args)
+ pg_sub_query.append("pages.response_time IS NOT NULL")
+ pg_sub_query_chart.append("pages.response_time IS NOT NULL")
+ pg_sub_query.append("pages.response_time>0")
+ pg_sub_query_chart.append("pages.response_time>0")
+ if value is not None:
+ pg_sub_query.append("pages.path = %(value)s")
+ pg_sub_query_chart.append("pages.path = %(value)s")
+ pg_sub_query_chart.append("avg_response_time>0")
+ pg_sub_query_chart.append("pages.response_time>avg_response_time*2")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COUNT(pages.session_id) AS count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN ( SELECT AVG(pages.response_time) AS avg_response_time
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ ) AS avg_response_time ON (avg_response_time>0)
+ LEFT JOIN LATERAL ( SELECT DISTINCT pages.session_id
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS pages ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "value": value, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return rows
+
+
+@dev.timed
+def get_memory_consumption(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(performance.avg_used_js_heap_size),0) AS avg_used_js_heap_size
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT avg_used_js_heap_size
+ FROM events.performance INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS performance ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp ASC;"""
+ params = {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ pg_query = f"""SELECT COALESCE(AVG(performance.avg_used_js_heap_size),0) AS avg
+ FROM events.performance INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, params))
+ avg = cur.fetchone()["avg"]
+ return {"avgUsedJsHeapSize": avg, "chart": helper.list_to_camel_case(rows)}
+
+
+@dev.timed
+def get_avg_cpu(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(performance.avg_cpu),0) AS avg_cpu
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT avg_cpu
+ FROM events.performance INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS performance ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp ASC;"""
+ params = {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ pg_query = f"""SELECT COALESCE(AVG(performance.avg_cpu),0) AS avg
+ FROM events.performance INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, params))
+ avg = cur.fetchone()["avg"]
+ return {"avgCpu": avg, "chart": helper.list_to_camel_case(rows)}
+
+
+@dev.timed
+def get_avg_fps(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(NULLIF(performance.avg_fps,0)),0) AS avg_fps
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT avg_fps
+ FROM events.performance INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS performance ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp ASC;"""
+ params = {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ pg_query = f"""SELECT COALESCE(AVG(NULLIF(performance.avg_fps,0)),0) AS avg
+ FROM events.performance INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, params))
+ avg = cur.fetchone()["avg"]
+ return {"avgFps": avg, "chart": helper.list_to_camel_case(rows)}
+
+
+@dev.timed
+def get_crashes(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("m_issues.type = 'crash'")
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ pg_sub_query_chart.append("m_issues.type = 'crash'")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COUNT(sessions) AS count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (
+ SELECT sessions.session_id
+ FROM public.sessions
+ INNER JOIN events_common.issues USING (session_id)
+ INNER JOIN public.issues AS m_issues USING (issue_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sessions ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ pg_query = f"""SELECT b.user_browser AS browser,
+ sum(bv.count) AS total,
+ JSONB_AGG(bv) AS versions
+ FROM (
+ SELECT sessions.user_browser
+ FROM public.sessions
+ INNER JOIN events_common.issues USING (session_id)
+ INNER JOIN public.issues AS m_issues USING (issue_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY sessions.user_browser
+ ORDER BY COUNT(sessions.session_id) DESC
+ LIMIT 3
+ ) AS b
+ INNER JOIN LATERAL
+ (
+ SELECT sessions.user_browser_version AS version,
+ COUNT(sessions.session_id) AS count
+ FROM sessions
+ INNER JOIN events_common.issues USING (session_id)
+ INNER JOIN public.issues AS m_issues USING (issue_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ AND sessions.user_browser = b.user_browser
+ GROUP BY sessions.user_browser_version
+ ORDER BY count DESC
+ ) AS bv ON (TRUE)
+ GROUP BY b.user_browser
+ ORDER BY b.user_browser;"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}))
+ browsers = cur.fetchall()
+ total = sum(r["total"] for r in browsers)
+ for r in browsers:
+ r["percentage"] = r["total"] / (total / 100)
+ versions = []
+ for v in r["versions"][:3]:
+ versions.append({v["version"]: v["count"] / (r["total"] / 100)})
+ r["versions"] = versions
+
+ return {"chart": rows, "browsers": browsers}
+
+
+def __get_neutral(rows, add_All_if_empty=True):
+ neutral = {l: 0 for l in [i for k in [list(v.keys()) for v in rows] for i in k]}
+ if add_All_if_empty and len(neutral.keys()) == 0:
+ neutral = {"All": 0}
+ return neutral
+
+
+def __merge_rows_with_neutral(rows, neutral):
+ for i in range(len(rows)):
+ rows[i] = {**neutral, **rows[i]}
+ return rows
+
+
+@dev.timed
+def get_domains_errors(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=6, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True,
+ data=args)
+ pg_sub_query_chart.append("resources.status/100 = %(status_code)s")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(JSONB_AGG(resources) FILTER ( WHERE resources IS NOT NULL ), '[]'::JSONB) AS keys
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT resources.url_host, COUNT(resources.session_id) AS count
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ GROUP BY url_host
+ ORDER BY count DESC
+ LIMIT 5
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "step_size": step_size,
+ "status_code": 4, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ rows = __nested_array_to_dict_array(rows)
+ neutral = __get_neutral(rows)
+ rows = __merge_rows_with_neutral(rows, neutral)
+
+ result = {"4xx": rows}
+ params["status_code"] = 5
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ rows = __nested_array_to_dict_array(rows)
+ neutral = __get_neutral(rows)
+ rows = __merge_rows_with_neutral(rows, neutral)
+ result["5xx"] = rows
+ return result
+
+
+@dev.timed
+def get_domains_errors_4xx(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=6, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True,
+ data=args)
+ pg_sub_query_chart.append("resources.status/100 = %(status_code)s")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(JSONB_AGG(resources) FILTER ( WHERE resources IS NOT NULL ), '[]'::JSONB) AS keys
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT resources.url_host, COUNT(resources.session_id) AS count
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ GROUP BY url_host
+ ORDER BY count DESC
+ LIMIT 5
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "step_size": step_size,
+ "status_code": 4, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ rows = __nested_array_to_dict_array(rows)
+ neutral = __get_neutral(rows)
+ rows = __merge_rows_with_neutral(rows, neutral)
+
+ return rows
+
+
+@dev.timed
+def get_domains_errors_5xx(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=6, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True,
+ data=args)
+ pg_sub_query_chart.append("resources.status/100 = %(status_code)s")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(JSONB_AGG(resources) FILTER ( WHERE resources IS NOT NULL ), '[]'::JSONB) AS keys
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT resources.url_host, COUNT(resources.session_id) AS count
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ GROUP BY url_host
+ ORDER BY count DESC
+ LIMIT 5
+ ) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ params = {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ "step_size": step_size,
+ "status_code": 5, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ rows = __nested_array_to_dict_array(rows)
+ neutral = __get_neutral(rows)
+ rows = __merge_rows_with_neutral(rows, neutral)
+
+ return rows
+
+
+def __nested_array_to_dict_array(rows, key="url_host", value="count"):
+ for r in rows:
+ for i in range(len(r["keys"])):
+ r[r["keys"][i][key]] = r["keys"][i][value]
+ r.pop("keys")
+ return rows
+
+
+@dev.timed
+def get_slowest_domains(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("resources.duration IS NOT NULL")
+ pg_sub_query.append("resources.duration>0")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT
+ resources.url_host AS domain,
+ AVG(resources.duration) AS avg
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY resources.url_host
+ ORDER BY avg DESC
+ LIMIT 5;"""
+ params = {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ if len(rows) > 0:
+ pg_query = f"""SELECT AVG(resources.duration) AS avg
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)};"""
+ cur.execute(cur.mogrify(pg_query, params))
+ avg = cur.fetchone()["avg"]
+ else:
+ avg = 0
+ return {"avg": avg, "partition": rows}
+
+
+@dev.timed
+def get_errors_per_domains(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("resources.success = FALSE")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT
+ resources.url_host AS domain,
+ COUNT(resources.session_id) AS errors_count
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY resources.url_host
+ ORDER BY errors_count DESC
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return helper.list_to_camel_case(rows)
+
+
+@dev.timed
+def get_sessions_per_browser(project_id, startTimestamp=TimeUTC.now(delta_days=-1), endTimestamp=TimeUTC.now(),
+ platform=None, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query2 = pg_sub_query[:]
+ pg_sub_query2.append("sessions.user_browser = b.user_browser")
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT b.user_browser AS browser,
+ b.count,
+ jsonb_agg(bv) AS versions
+ FROM (
+ SELECT sessions.user_browser,
+ COUNT(sessions.session_id) AS count
+ FROM sessions
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY sessions.user_browser
+ ORDER BY count DESC
+ LIMIT 3
+ ) AS b
+ INNER JOIN LATERAL
+ (
+ SELECT sessions.user_browser_version,
+ COUNT(sessions.session_id) AS count
+ FROM public.sessions
+ WHERE {" AND ".join(pg_sub_query2)}
+ GROUP BY sessions.user_browser,
+ sessions.user_browser_version
+ ORDER BY count DESC
+ LIMIT 3
+ ) AS bv ON (TRUE)
+ GROUP BY b.user_browser, b.count
+ ORDER BY b.count DESC;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ for r in rows:
+ for j in r["versions"]:
+ r[j["user_browser_version"]] = j["count"]
+ r.pop("versions")
+ return {"count": sum(i["count"] for i in rows), "chart": rows}
+
+
+@dev.timed
+def get_calls_errors(project_id, startTimestamp=TimeUTC.now(delta_days=-1), endTimestamp=TimeUTC.now(),
+ platform=None, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("resources.type = 'fetch'")
+ pg_sub_query.append("resources.status/100 != 2")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT resources.method,
+ resources.url_hostpath,
+ COUNT(resources.session_id) AS all_requests,
+ SUM(CASE WHEN resources.status/100 = 4 THEN 1 ELSE 0 END) AS _4xx,
+ SUM(CASE WHEN resources.status/100 = 5 THEN 1 ELSE 0 END) AS _5xx
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY resources.method, resources.url_hostpath
+ ORDER BY (4 + 5), 3 DESC
+ LIMIT 50;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return helper.list_to_camel_case(rows)
+
+
+@dev.timed
+def get_calls_errors_4xx(project_id, startTimestamp=TimeUTC.now(delta_days=-1), endTimestamp=TimeUTC.now(),
+ platform=None, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("resources.type = 'fetch'")
+ pg_sub_query.append("resources.status/100 = 4")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT resources.method,
+ resources.url_hostpath,
+ COUNT(resources.session_id) AS all_requests
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY resources.method, resources.url_hostpath
+ ORDER BY all_requests DESC
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return helper.list_to_camel_case(rows)
+
+
+@dev.timed
+def get_calls_errors_5xx(project_id, startTimestamp=TimeUTC.now(delta_days=-1), endTimestamp=TimeUTC.now(),
+ platform=None, **args):
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query.append("resources.type = 'fetch'")
+ pg_sub_query.append("resources.status/100 = 5")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT resources.method,
+ resources.url_hostpath,
+ COUNT(resources.session_id) AS all_requests
+ FROM events.resources INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY resources.method, resources.url_hostpath
+ ORDER BY all_requests DESC
+ LIMIT 10;"""
+ cur.execute(cur.mogrify(pg_query, {"project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return helper.list_to_camel_case(rows)
+
+
+@dev.timed
+def get_errors_per_type(project_id, startTimestamp=TimeUTC.now(delta_days=-1), endTimestamp=TimeUTC.now(),
+ platform=None, density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(SUM(CASE WHEN type = 'fetch' AND status / 100 = 4 THEN 1 ELSE 0 END), 0) AS _4xx,
+ COALESCE(SUM(CASE WHEN type = 'fetch' AND status / 100 = 5 THEN 1 ELSE 0 END), 0) AS _5xx,
+ COALESCE(SUM(CASE WHEN type = 'js_exception' THEN 1 ELSE 0 END), 0) AS js,
+ COALESCE(SUM(CASE WHEN type != 'fetch' AND type != 'js_exception' THEN 1 ELSE 0 END), 0) AS integrations
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ((SELECT status, 'fetch' AS type
+ FROM events.resources
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ AND resources.timestamp >= %(startTimestamp)s - %(step_size)s
+ AND resources.timestamp < %(endTimestamp)s + %(step_size)s
+ AND resources.type = 'fetch'
+ AND resources.status > 200)
+ UNION ALL
+ (SELECT 0 AS status, m_errors.source::text AS type
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING (error_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ AND errors.timestamp >= %(startTimestamp)s - %(step_size)s
+ AND errors.timestamp < %(endTimestamp)s + %(step_size)s)
+ ) AS errors_partition ON (TRUE)
+ GROUP BY timestamp
+ ORDER BY timestamp;"""
+ params = {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ cur.execute(cur.mogrify(pg_query, params))
+ rows = cur.fetchall()
+ rows = helper.list_to_camel_case(rows)
+ return rows
+
+
+@dev.timed
+def resource_type_vs_response_end(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ params = {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COUNT(resources.session_id) AS total,
+ SUM(CASE WHEN resources.type='fetch' THEN 1 ELSE 0 END) AS xhr
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT resources.session_id, resources.type
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}) AS resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, params))
+ actions = cur.fetchall()
+ pg_sub_query_chart.append("pages.response_end IS NOT NULL")
+ pg_sub_query_chart.append("pages.response_end>0")
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(AVG(pages.response_end),0) AS avg_response_end
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT pages.response_end
+ FROM events.pages INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}) AS pages ON(TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, params))
+ response_end = cur.fetchall()
+ return helper.list_to_camel_case(__merge_charts(response_end, actions))
+
+
+@dev.timed
+def get_impacted_sessions_by_js_errors(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query = __get_constraints(project_id=project_id, data=args)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ pg_sub_query.append("m_errors.source = 'js_exception'")
+ pg_sub_query.append("m_errors.project_id = %(project_id)s")
+ pg_sub_query.append("errors.timestamp >= %(startTimestamp)s")
+ pg_sub_query.append("errors.timestamp < %(endTimestamp)s")
+ pg_sub_query_chart.append("m_errors.source = 'js_exception'")
+ pg_sub_query_chart.append("m_errors.project_id = %(project_id)s")
+ pg_sub_query_chart.append("errors.timestamp >= generated_timestamp")
+ pg_sub_query_chart.append("errors.timestamp < generated_timestamp+ %(step_size)s")
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT *
+ FROM (SELECT COUNT(DISTINCT errors.session_id) AS sessions_count
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING (error_id)
+ INNER JOIN public.sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query)}) AS counts
+ LEFT JOIN
+ (SELECT jsonb_agg(chart) AS chart
+ FROM(SELECT generated_timestamp AS timestamp,
+ COALESCE(COUNT(session_id), 0) AS sessions_count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT DISTINCT errors.session_id
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING (error_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sessions ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp) AS chart) AS chart ON(TRUE);"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}))
+ row_sessions = cur.fetchone()
+ pg_query = f"""SELECT *
+ FROM (SELECT COUNT(DISTINCT errors.error_id) AS errors_count
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING (error_id)
+ INNER JOIN public.sessions USING(session_id)
+ WHERE {" AND ".join(pg_sub_query)}) AS counts
+ LEFT JOIN
+ (SELECT jsonb_agg(chart) AS chart
+ FROM(SELECT generated_timestamp AS timestamp,
+ COALESCE(COUNT(error_id), 0) AS errors_count
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL ( SELECT DISTINCT errors.error_id
+ FROM events.errors
+ INNER JOIN public.errors AS m_errors USING (error_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS errors ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp) AS chart) AS chart ON(TRUE);"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp,
+ **__get_constraint_values(args)}))
+ row_errors = cur.fetchone()
+ chart = __merge_charts(row_sessions.pop("chart"), row_errors.pop("chart"))
+ row_sessions = helper.dict_to_camel_case(row_sessions)
+ row_errors = helper.dict_to_camel_case(row_errors)
+ return {**row_sessions, **row_errors, "chart": chart}
+
+
+@dev.timed
+def get_resources_vs_visually_complete(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(jsonb_agg(resources_avg_count_by_type)
+ FILTER ( WHERE resources_avg_count_by_type IS NOT NULL ), '[]'::jsonb) AS types,
+ COALESCE(AVG(total_count), 0) AS avg_count_resources,
+ COALESCE(AVG(avg_time_to_render), 0) AS avg_time_to_render
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT resources_count_by_session_by_type.type,
+ avg(resources_count_by_session_by_type.count) AS avg_count,
+ sum(resources_count_by_session_by_type.count) AS total_count
+ FROM (SELECT resources.type, COUNT(resources.url) AS count
+ FROM events.resources
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ GROUP BY resources.session_id, resources.type) AS resources_count_by_session_by_type
+ GROUP BY resources_count_by_session_by_type.type) AS resources_avg_count_by_type ON (TRUE)
+ LEFT JOIN LATERAL (SELECT AVG(visually_complete) AS avg_time_to_render
+ FROM events.pages
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ AND pages.visually_complete > 0) AS time_to_render ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ for r in rows:
+ r["types"] = {t["type"]: t["avg_count"] for t in r["types"]}
+
+ return helper.list_to_camel_case(rows)
+
+
+@dev.timed
+def get_resources_count_by_type(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True,
+ chart=True, data=args)
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ COALESCE(JSONB_AGG(t) FILTER (WHERE t IS NOT NULL), '[]'::JSONB) AS types
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT resources.type, COUNT(resources.session_id) AS count
+ FROM events.resources INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ GROUP BY resources.type
+ ) AS t ON(TRUE)
+ GROUP BY timestamp
+ ORDER BY timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ for r in rows:
+ for t in r["types"]:
+ r[t["type"]] = t["count"]
+ r.pop("types")
+ rows = __merge_rows_with_neutral(rows, {k: 0 for k in RESOURCS_TYPE_TO_DB_TYPE.keys()})
+ return rows
+
+
+@dev.timed
+def get_resources_by_party(project_id, startTimestamp=TimeUTC.now(delta_days=-1),
+ endTimestamp=TimeUTC.now(), density=7, **args):
+ step_size = __get_step_size(startTimestamp, endTimestamp, density, factor=1)
+ pg_sub_query_chart = __get_constraints(project_id=project_id, time_constraint=True, chart=True,
+ data=args)
+ pg_sub_query_chart.append("resources.success = FALSE")
+ pg_sub_query = ["sessions.project_id =%(project_id)s", "rs.type IN ('fetch','script')"]
+
+ with pg_client.PostgresClient() as cur:
+ pg_query = f"""SELECT generated_timestamp AS timestamp,
+ SUM(CASE WHEN first.url_host = sub_resources.url_host THEN 1 ELSE 0 END) AS first_party,
+ SUM(CASE WHEN first.url_host != sub_resources.url_host THEN 1 ELSE 0 END) AS third_party
+ FROM generate_series(%(startTimestamp)s, %(endTimestamp)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN (
+ SELECT resources.url_host,
+ COUNT(resources.session_id) AS count
+ FROM events.resources
+ INNER JOIN public.sessions USING (session_id)
+ WHERE sessions.project_id = '1'
+ AND resources.type IN ('fetch', 'script')
+ AND sessions.start_ts > (EXTRACT(EPOCH FROM now() - INTERVAL '31 days') * 1000)::BIGINT
+ AND resources.timestamp > (EXTRACT(EPOCH FROM now() - INTERVAL '31 days') * 1000)::BIGINT
+ GROUP BY resources.url_host
+ ORDER BY count DESC
+ LIMIT 1
+ ) AS first ON (TRUE)
+ LEFT JOIN LATERAL (
+ SELECT resources.url_host
+ FROM events.resources
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sub_resources ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp;"""
+ cur.execute(cur.mogrify(pg_query, {"step_size": step_size,
+ "project_id": project_id,
+ "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp, **__get_constraint_values(args)}))
+ rows = cur.fetchall()
+ return rows
diff --git a/api/chalicelib/core/errors.py b/api/chalicelib/core/errors.py
new file mode 100644
index 000000000..10ad52f59
--- /dev/null
+++ b/api/chalicelib/core/errors.py
@@ -0,0 +1,777 @@
+import json
+
+from chalicelib.utils import pg_client, helper, dev
+from chalicelib.core import sourcemaps, sessions
+from chalicelib.utils.TimeUTC import TimeUTC
+from chalicelib.utils.metrics_helper import __get_step_size
+
+
+def get(error_id, family=False):
+ if family:
+ return get_batch([error_id])
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ "SELECT * FROM events.errors AS e INNER JOIN public.errors AS re USING(error_id) WHERE error_id = %(error_id)s;",
+ {"error_id": error_id})
+ cur.execute(query=query)
+ result = cur.fetchone()
+ if result is not None:
+ result["stacktrace_parsed_at"] = TimeUTC.datetime_to_timestamp(result["stacktrace_parsed_at"])
+ return helper.dict_to_camel_case(result)
+
+
+def get_batch(error_ids):
+ if len(error_ids) == 0:
+ return []
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ """
+ WITH RECURSIVE error_family AS (
+ SELECT *
+ FROM public.errors
+ WHERE error_id IN %(error_ids)s
+ UNION
+ SELECT child_errors.*
+ FROM public.errors AS child_errors
+ INNER JOIN error_family ON error_family.error_id = child_errors.parent_error_id OR error_family.parent_error_id = child_errors.error_id
+ )
+ SELECT *
+ FROM error_family;""",
+ {"error_ids": tuple(error_ids)})
+ cur.execute(query=query)
+ return helper.list_to_camel_case(cur.fetchall())
+
+
+def __flatten_sort_key_count_version(data, merge_nested=False):
+ if data is None:
+ return []
+ return sorted(
+ [
+ {
+ "name": f'{o["name"]}@{v["version"]}',
+ "count": v["count"]
+ } for o in data for v in o["partition"]
+ ],
+ key=lambda o: o["count"], reverse=True) if merge_nested else \
+ [
+ {
+ "name": o["name"],
+ "count": o["count"],
+ } for o in data
+ ]
+
+
+def __process_tags(row):
+ return [
+ {"name": "browser", "partitions": __flatten_sort_key_count_version(data=row.get("browsers_partition"))},
+ {"name": "browser.ver",
+ "partitions": __flatten_sort_key_count_version(data=row.pop("browsers_partition"), merge_nested=True)},
+ {"name": "OS", "partitions": __flatten_sort_key_count_version(data=row.get("os_partition"))},
+ {"name": "OS.ver",
+ "partitions": __flatten_sort_key_count_version(data=row.pop("os_partition"), merge_nested=True)},
+ {"name": "device.family", "partitions": __flatten_sort_key_count_version(data=row.get("device_partition"))},
+ {"name": "device",
+ "partitions": __flatten_sort_key_count_version(data=row.pop("device_partition"), merge_nested=True)},
+ {"name": "country", "partitions": row.pop("country_partition")}
+ ]
+
+
+def get_details(project_id, error_id, user_id, **data):
+ pg_sub_query24 = __get_basic_constraints(time_constraint=False, chart=True, step_size_name="step_size24")
+ pg_sub_query24.append("error_id = %(error_id)s")
+ pg_sub_query30 = __get_basic_constraints(time_constraint=False, chart=True, step_size_name="step_size30")
+ pg_sub_query30.append("error_id = %(error_id)s")
+ pg_basic_query = __get_basic_constraints(time_constraint=False)
+ pg_basic_query.append("error_id = %(error_id)s")
+ with pg_client.PostgresClient() as cur:
+ data["startDate24"] = TimeUTC.now(-1)
+ data["endDate24"] = TimeUTC.now()
+ data["startDate30"] = TimeUTC.now(-30)
+ data["endDate30"] = TimeUTC.now()
+ density24 = int(data.get("density24", 24))
+ step_size24 = __get_step_size(data["startDate24"], data["endDate24"], density24, factor=1)
+ density30 = int(data.get("density30", 30))
+ step_size30 = __get_step_size(data["startDate30"], data["endDate30"], density30, factor=1)
+ params = {
+ "startDate24": data['startDate24'],
+ "endDate24": data['endDate24'],
+ "startDate30": data['startDate30'],
+ "endDate30": data['endDate30'],
+ "project_id": project_id,
+ "userId": user_id,
+ "step_size24": step_size24,
+ "step_size30": step_size30,
+ "error_id": error_id}
+
+ main_pg_query = f"""\
+ SELECT error_id,
+ name,
+ message,
+ users,
+ sessions,
+ last_occurrence,
+ first_occurrence,
+ last_session_id,
+ browsers_partition,
+ os_partition,
+ device_partition,
+ country_partition,
+ chart24,
+ chart30
+ FROM (SELECT error_id,
+ name,
+ message,
+ COUNT(DISTINCT user_uuid) AS users,
+ COUNT(DISTINCT session_id) AS sessions
+ FROM public.errors
+ INNER JOIN events.errors AS s_errors USING (error_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE error_id = %(error_id)s
+ GROUP BY error_id, name, message) AS details
+ INNER JOIN (SELECT error_id,
+ MAX(timestamp) AS last_occurrence,
+ MIN(timestamp) AS first_occurrence
+ FROM events.errors
+ WHERE error_id = %(error_id)s
+ GROUP BY error_id) AS time_details USING (error_id)
+ INNER JOIN (SELECT error_id,
+ session_id AS last_session_id,
+ user_os,
+ user_os_version,
+ user_browser,
+ user_browser_version,
+ user_device,
+ user_device_type,
+ user_uuid
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE error_id = %(error_id)s
+ ORDER BY errors.timestamp DESC
+ LIMIT 1) AS last_session_details USING (error_id)
+ INNER JOIN (SELECT jsonb_agg(browser_details) AS browsers_partition
+ FROM (SELECT *
+ FROM (SELECT user_browser AS name,
+ COUNT(session_id) AS count
+ FROM events.errors
+ INNER JOIN sessions USING (session_id)
+ WHERE {" AND ".join(pg_basic_query)}
+ GROUP BY user_browser
+ ORDER BY count DESC) AS count_per_browser_query
+ INNER JOIN LATERAL (SELECT JSONB_AGG(version_details) AS partition
+ FROM (SELECT user_browser_version AS version,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_basic_query)}
+ AND sessions.user_browser = count_per_browser_query.name
+ GROUP BY user_browser_version
+ ORDER BY count DESC) AS version_details
+ ) AS browser_version_details ON (TRUE)) AS browser_details) AS browser_details ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(os_details) AS os_partition
+ FROM (SELECT *
+ FROM (SELECT user_os AS name,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_basic_query)}
+ GROUP BY user_os
+ ORDER BY count DESC) AS count_per_os_details
+ INNER JOIN LATERAL (SELECT jsonb_agg(count_per_version_details) AS partition
+ FROM (SELECT COALESCE(user_os_version,'unknown') AS version, COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_basic_query)}
+ AND sessions.user_os = count_per_os_details.name
+ GROUP BY user_os_version
+ ORDER BY count DESC) AS count_per_version_details
+ GROUP BY count_per_os_details.name ) AS os_version_details
+ ON (TRUE)) AS os_details) AS os_details ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(device_details) AS device_partition
+ FROM (SELECT *
+ FROM (SELECT user_device_type AS name,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_basic_query)}
+ GROUP BY user_device_type
+ ORDER BY count DESC) AS count_per_device_details
+ INNER JOIN LATERAL (SELECT jsonb_agg(count_per_device_v_details) AS partition
+ FROM (SELECT CASE
+ WHEN user_device = '' OR user_device ISNULL
+ THEN 'unknown'
+ ELSE user_device END AS version,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_basic_query)}
+ AND sessions.user_device_type = count_per_device_details.name
+ GROUP BY user_device
+ ORDER BY count DESC) AS count_per_device_v_details
+ GROUP BY count_per_device_details.name ) AS device_version_details
+ ON (TRUE)) AS device_details) AS device_details ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(count_per_country_details) AS country_partition
+ FROM (SELECT user_country AS name,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_basic_query)}
+ GROUP BY user_country
+ ORDER BY count DESC) AS count_per_country_details) AS country_details ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(chart_details) AS chart24
+ FROM (SELECT generated_timestamp AS timestamp,
+ COUNT(session_id) AS count
+ FROM generate_series(%(startDate24)s, %(endDate24)s, %(step_size24)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT DISTINCT session_id
+ FROM events.errors
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query24)}
+ ) AS chart_details ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp) AS chart_details) AS chart_details24 ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(chart_details) AS chart30
+ FROM (SELECT generated_timestamp AS timestamp,
+ COUNT(session_id) AS count
+ FROM generate_series(%(startDate30)s, %(endDate30)s, %(step_size30)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT DISTINCT session_id
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query30)}) AS chart_details
+ ON (TRUE)
+ GROUP BY timestamp
+ ORDER BY timestamp) AS chart_details) AS chart_details30 ON (TRUE);
+ """
+
+ # print("--------------------")
+ # print(cur.mogrify(main_pg_query, params))
+ # print("--------------------")
+ cur.execute(cur.mogrify(main_pg_query, params))
+ row = cur.fetchone()
+ if row is None:
+ return {"errors": ["error doesn't exist"]}
+ row["tags"] = __process_tags(row)
+
+ query = cur.mogrify(
+ f"""SELECT error_id, status, session_id, start_ts,
+ parent_error_id,session_id, user_anonymous_id,
+ user_id, user_uuid, user_browser, user_browser_version,
+ user_os, user_os_version, user_device, payload,
+ COALESCE((SELECT TRUE
+ FROM public.user_favorite_errors AS fe
+ WHERE pe.error_id = fe.error_id
+ AND fe.user_id = %(user_id)s), FALSE) AS favorite,
+ True AS viewed
+ FROM public.errors AS pe
+ INNER JOIN events.errors AS ee USING (error_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE pe.project_id = %(project_id)s
+ AND error_id = %(error_id)s
+ ORDER BY start_ts DESC
+ LIMIT 1;""",
+ {"project_id": project_id, "error_id": error_id, "user_id": user_id})
+ cur.execute(query=query)
+ status = cur.fetchone()
+
+ if status is not None:
+ row["stack"] = format_first_stack_frame(status).pop("stack")
+ row["status"] = status.pop("status")
+ row["parent_error_id"] = status.pop("parent_error_id")
+ row["favorite"] = status.pop("favorite")
+ row["viewed"] = status.pop("viewed")
+ row["last_hydrated_session"] = status
+ else:
+ row["stack"] = []
+ row["last_hydrated_session"] = None
+ row["status"] = "untracked"
+ row["parent_error_id"] = None
+ row["favorite"] = False
+ row["viewed"] = False
+ return {"data": helper.dict_to_camel_case(row)}
+
+
+def get_details_chart(project_id, error_id, user_id, **data):
+ pg_sub_query = __get_basic_constraints()
+ pg_sub_query.append("error_id = %(error_id)s")
+ pg_sub_query_chart = __get_basic_constraints(time_constraint=False, chart=True)
+ pg_sub_query_chart.append("error_id = %(error_id)s")
+ with pg_client.PostgresClient() as cur:
+ if data.get("startDate") is None:
+ data["startDate"] = TimeUTC.now(-7)
+ else:
+ data["startDate"] = int(data["startDate"])
+ if data.get("endDate") is None:
+ data["endDate"] = TimeUTC.now()
+ else:
+ data["endDate"] = int(data["endDate"])
+ density = int(data.get("density", 7))
+ step_size = __get_step_size(data["startDate"], data["endDate"], density, factor=1)
+ params = {
+ "startDate": data['startDate'],
+ "endDate": data['endDate'],
+ "project_id": project_id,
+ "userId": user_id,
+ "step_size": step_size,
+ "error_id": error_id}
+
+ main_pg_query = f"""\
+ SELECT %(error_id)s AS error_id,
+ browsers_partition,
+ os_partition,
+ device_partition,
+ country_partition,
+ chart
+ FROM (SELECT jsonb_agg(browser_details) AS browsers_partition
+ FROM (SELECT *
+ FROM (SELECT user_browser AS name,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY user_browser
+ ORDER BY count DESC) AS count_per_browser_query
+ INNER JOIN LATERAL (SELECT jsonb_agg(count_per_version_details) AS partition
+ FROM (SELECT user_browser_version AS version,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ AND user_browser = count_per_browser_query.name
+ GROUP BY user_browser_version
+ ORDER BY count DESC) AS count_per_version_details) AS browesr_version_details
+ ON (TRUE)) AS browser_details) AS browser_details
+ INNER JOIN (SELECT jsonb_agg(os_details) AS os_partition
+ FROM (SELECT *
+ FROM (SELECT user_os AS name,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY user_os
+ ORDER BY count DESC) AS count_per_os_details
+ INNER JOIN LATERAL (SELECT jsonb_agg(count_per_version_query) AS partition
+ FROM (SELECT COALESCE(user_os_version, 'unknown') AS version,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ AND user_os = count_per_os_details.name
+ GROUP BY user_os_version
+ ORDER BY count DESC) AS count_per_version_query
+ ) AS os_version_query ON (TRUE)) AS os_details) AS os_details ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(device_details) AS device_partition
+ FROM (SELECT *
+ FROM (SELECT user_device_type AS name,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY user_device_type
+ ORDER BY count DESC) AS count_per_device_details
+ INNER JOIN LATERAL (SELECT jsonb_agg(count_per_device_details) AS partition
+ FROM (SELECT CASE
+ WHEN user_device = '' OR user_device ISNULL
+ THEN 'unknown'
+ ELSE user_device END AS version,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ AND user_device_type = count_per_device_details.name
+ GROUP BY user_device_type, user_device
+ ORDER BY count DESC) AS count_per_device_details
+ ) AS device_version_details ON (TRUE)) AS device_details) AS device_details ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(count_per_country_details) AS country_partition
+ FROM (SELECT user_country AS name,
+ COUNT(session_id) AS count
+ FROM events.errors INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY user_country
+ ORDER BY count DESC) AS count_per_country_details) AS country_details ON (TRUE)
+ INNER JOIN (SELECT jsonb_agg(chart_details) AS chart
+ FROM (SELECT generated_timestamp AS timestamp,
+ COUNT(session_id) AS count
+ FROM generate_series(%(startDate)s, %(endDate)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT DISTINCT session_id
+ FROM events.errors
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS chart_details ON (TRUE)
+ GROUP BY generated_timestamp
+ ORDER BY generated_timestamp) AS chart_details) AS chart_details ON (TRUE);"""
+
+ cur.execute(cur.mogrify(main_pg_query, params))
+ row = cur.fetchone()
+ if row is None:
+ return {"errors": ["error doesn't exist"]}
+ row["tags"] = __process_tags(row)
+ return {"data": helper.dict_to_camel_case(row)}
+
+
+def __get_basic_constraints(platform=None, time_constraint=True, startTime_arg_name="startDate",
+ endTime_arg_name="endDate", chart=False, step_size_name="step_size",
+ project_key="project_id"):
+ ch_sub_query = [f"{project_key} =%(project_id)s"]
+ if time_constraint:
+ ch_sub_query += [f"timestamp >= %({startTime_arg_name})s",
+ f"timestamp < %({endTime_arg_name})s"]
+ if chart:
+ ch_sub_query += [f"timestamp >= generated_timestamp",
+ f"timestamp < generated_timestamp + %({step_size_name})s"]
+ if platform == 'mobile':
+ ch_sub_query.append("user_device_type = 'mobile'")
+ elif platform == 'desktop':
+ ch_sub_query.append("user_device_type = 'desktop'")
+ return ch_sub_query
+
+
+def __get_sort_key(key):
+ return {
+ "datetime": "max_datetime",
+ "lastOccurrence": "max_datetime",
+ "firstOccurrence": "min_datetime"
+ }.get(key, 'max_datetime')
+
+
+@dev.timed
+def search(data, project_id, user_id, flows=False, status="ALL", favorite_only=False):
+ status = status.upper()
+ if status.lower() not in ['all', 'unresolved', 'resolved', 'ignored']:
+ return {"errors": ["invalid error status"]}
+ pg_sub_query = __get_basic_constraints(data.get('platform'), project_key="sessions.project_id")
+ pg_sub_query += ["sessions.start_ts>=%(startDate)s", "sessions.start_ts<%(endDate)s", "source ='js_exception'",
+ "pe.project_id=%(project_id)s"]
+ pg_sub_query_chart = __get_basic_constraints(data.get('platform'), time_constraint=False, chart=True)
+ pg_sub_query_chart.append("source ='js_exception'")
+ pg_sub_query_chart.append("errors.error_id =details.error_id")
+ statuses = []
+ error_ids = None
+ if data.get("startDate") is None:
+ data["startDate"] = TimeUTC.now(-30)
+ if data.get("endDate") is None:
+ data["endDate"] = TimeUTC.now(1)
+ if len(data.get("events", [])) > 0 or len(data.get("filters", [])) > 0 or status != "ALL" or favorite_only:
+ statuses = sessions.search2_pg(data=data, project_id=project_id, user_id=user_id, errors_only=True,
+ error_status=status, favorite_only=favorite_only)
+ if len(statuses) == 0:
+ return {"data": {
+ 'total': 0,
+ 'errors': []
+ }}
+ error_ids = [e["error_id"] for e in statuses]
+ with pg_client.PostgresClient() as cur:
+ if data.get("startDate") is None:
+ data["startDate"] = TimeUTC.now(-7)
+ if data.get("endDate") is None:
+ data["endDate"] = TimeUTC.now()
+ density = data.get("density", 7)
+ step_size = __get_step_size(data["startDate"], data["endDate"], density, factor=1)
+ sort = __get_sort_key('datetime')
+ if data.get("sort") is not None:
+ sort = __get_sort_key(data["sort"])
+ order = "DESC"
+ if data.get("order") is not None:
+ order = data["order"]
+
+ params = {
+ "startDate": data['startDate'],
+ "endDate": data['endDate'],
+ "project_id": project_id,
+ "userId": user_id,
+ "step_size": step_size}
+ if error_ids is not None:
+ params["error_ids"] = tuple(error_ids)
+ pg_sub_query.append("error_id IN %(error_ids)s")
+ main_pg_query = f"""\
+ SELECT error_id,
+ name,
+ message,
+ users,
+ sessions,
+ last_occurrence,
+ first_occurrence,
+ chart
+ FROM (SELECT error_id,
+ name,
+ message,
+ COUNT(DISTINCT user_uuid) AS users,
+ COUNT(DISTINCT session_id) AS sessions,
+ MAX(timestamp) AS max_datetime,
+ MIN(timestamp) AS min_datetime
+ FROM events.errors
+ INNER JOIN public.errors AS pe USING (error_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(pg_sub_query)}
+ GROUP BY error_id, name, message
+ ORDER BY {sort} {order}) AS details
+ INNER JOIN LATERAL (SELECT MAX(timestamp) AS last_occurrence,
+ MIN(timestamp) AS first_occurrence
+ FROM events.errors
+ WHERE errors.error_id = details.error_id) AS time_details ON (TRUE)
+ INNER JOIN LATERAL (SELECT jsonb_agg(chart_details) AS chart
+ FROM (SELECT generated_timestamp AS timestamp,
+ COUNT(session_id) AS count
+ FROM generate_series(%(startDate)s, %(endDate)s, %(step_size)s) AS generated_timestamp
+ LEFT JOIN LATERAL (SELECT DISTINCT session_id
+ FROM events.errors INNER JOIN public.errors AS m_errors USING (error_id)
+ WHERE {" AND ".join(pg_sub_query_chart)}
+ ) AS sessions ON (TRUE)
+ GROUP BY timestamp
+ ORDER BY timestamp) AS chart_details) AS chart_details ON (TRUE);"""
+
+ print("--------------------")
+ print(cur.mogrify(main_pg_query, params))
+ cur.execute(cur.mogrify(main_pg_query, params))
+ total = cur.rowcount
+ if flows:
+ return {"data": {"count": total}}
+ row = cur.fetchone()
+ rows = []
+ limit = 200
+ while row is not None and len(rows) < limit:
+ rows.append(row)
+ row = cur.fetchone()
+ if total == 0:
+ rows = []
+ else:
+ if len(statuses) == 0:
+ query = cur.mogrify(
+ """SELECT error_id, status, parent_error_id, payload,
+ COALESCE((SELECT TRUE
+ FROM public.user_favorite_errors AS fe
+ WHERE errors.error_id = fe.error_id
+ AND fe.user_id = %(user_id)s LIMIT 1), FALSE) AS favorite,
+ COALESCE((SELECT TRUE
+ FROM public.user_viewed_errors AS ve
+ WHERE errors.error_id = ve.error_id
+ AND ve.user_id = %(user_id)s LIMIT 1), FALSE) AS viewed
+ FROM public.errors
+ WHERE project_id = %(project_id)s AND error_id IN %(error_ids)s;""",
+ {"project_id": project_id, "error_ids": tuple([r["error_id"] for r in rows]),
+ "user_id": user_id})
+ cur.execute(query=query)
+ statuses = cur.fetchall()
+ statuses = {
+ s["error_id"]: s for s in statuses
+ }
+
+ for r in rows:
+ if r["error_id"] in statuses:
+ r["status"] = statuses[r["error_id"]]["status"]
+ r["parent_error_id"] = statuses[r["error_id"]]["parent_error_id"]
+ r["favorite"] = statuses[r["error_id"]]["favorite"]
+ r["viewed"] = statuses[r["error_id"]]["viewed"]
+ r["stack"] = format_first_stack_frame(statuses[r["error_id"]])["stack"]
+ else:
+ r["status"] = "untracked"
+ r["parent_error_id"] = None
+ r["favorite"] = False
+ r["viewed"] = False
+ r["stack"] = None
+
+ offset = len(rows)
+ rows = [r for r in rows if r["stack"] is None
+ or (len(r["stack"]) == 0 or len(r["stack"]) > 1
+ or len(r["stack"]) > 0
+ and (r["message"].lower() != "script error." or len(r["stack"][0]["absPath"]) > 0))]
+ offset -= len(rows)
+ return {
+ "data": {
+ 'total': total - offset,
+ 'errors': helper.list_to_camel_case(rows)
+ }
+ }
+
+
+def __save_stacktrace(error_id, data):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ """UPDATE public.errors
+ SET stacktrace=%(data)s::jsonb, stacktrace_parsed_at=timezone('utc'::text, now())
+ WHERE error_id = %(error_id)s;""",
+ {"error_id": error_id, "data": json.dumps(data)})
+ cur.execute(query=query)
+
+
+def get_trace(project_id, error_id):
+ error = get(error_id=error_id)
+ if error is None:
+ return {"errors": ["error not found"]}
+ if error.get("source", "") != "js_exception":
+ return {"errors": ["this source of errors doesn't have a sourcemap"]}
+ if error.get("payload") is None:
+ return {"errors": ["null payload"]}
+ if error.get("stacktrace") is not None:
+ return {"sourcemapUploaded": True,
+ "trace": error.get("stacktrace"),
+ "preparsed": True}
+ trace, all_exists = sourcemaps.get_traces_group(project_id=project_id, payload=error["payload"])
+ if all_exists:
+ __save_stacktrace(error_id=error_id, data=trace)
+ return {"sourcemapUploaded": all_exists,
+ "trace": trace,
+ "preparsed": False}
+
+
+def get_sessions(start_date, end_date, project_id, user_id, error_id):
+ extra_constraints = ["s.project_id = %(project_id)s",
+ "s.start_ts >= %(startDate)s",
+ "s.start_ts <= %(endDate)s",
+ "e.error_id = %(error_id)s"]
+ if start_date is None:
+ start_date = TimeUTC.now(-7)
+ if end_date is None:
+ end_date = TimeUTC.now()
+
+ params = {
+ "startDate": start_date,
+ "endDate": end_date,
+ "project_id": project_id,
+ "userId": user_id,
+ "error_id": error_id}
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ f"""SELECT s.project_id,
+ s.session_id::text AS session_id,
+ s.user_uuid,
+ s.user_id,
+ s.user_agent,
+ s.user_os,
+ s.user_browser,
+ s.user_device,
+ s.user_country,
+ s.start_ts,
+ s.duration,
+ s.events_count,
+ s.pages_count,
+ s.errors_count,
+ s.issue_types,
+ COALESCE((SELECT TRUE
+ FROM public.user_favorite_sessions AS fs
+ WHERE s.session_id = fs.session_id
+ AND fs.user_id = %(userId)s LIMIT 1), FALSE) AS favorite,
+ COALESCE((SELECT TRUE
+ FROM public.user_viewed_sessions AS fs
+ WHERE s.session_id = fs.session_id
+ AND fs.user_id = %(userId)s LIMIT 1), FALSE) AS viewed
+ FROM public.sessions AS s INNER JOIN events.errors AS e USING (session_id)
+ WHERE {" AND ".join(extra_constraints)}
+ ORDER BY s.start_ts DESC;""",
+ params)
+ cur.execute(query=query)
+ sessions_list = []
+ total = cur.rowcount
+ row = cur.fetchone()
+ while row is not None and len(sessions_list) < 100:
+ sessions_list.append(row)
+ row = cur.fetchone()
+
+ return {
+ 'total': total,
+ 'sessions': helper.list_to_camel_case(sessions_list)
+ }
+
+
+ACTION_STATE = {
+ "unsolve": 'unresolved',
+ "solve": 'resolved',
+ "ignore": 'ignored'
+}
+
+
+def change_state(project_id, user_id, error_id, action):
+ errors = get(error_id, family=True)
+ print(len(errors))
+ status = ACTION_STATE.get(action)
+ if errors is None or len(errors) == 0:
+ return {"errors": ["error not found"]}
+ if errors[0]["status"] == status:
+ return {"errors": [f"error is already {status}"]}
+
+ if errors[0]["status"] == ACTION_STATE["solve"] and status == ACTION_STATE["ignore"]:
+ return {"errors": [f"state transition not permitted {errors[0]['status']} -> {status}"]}
+
+ params = {
+ "userId": user_id,
+ "error_ids": tuple([e["errorId"] for e in errors]),
+ "status": status}
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ """UPDATE public.errors
+ SET status = %(status)s
+ WHERE error_id IN %(error_ids)s
+ RETURNING status""",
+ params)
+ cur.execute(query=query)
+ row = cur.fetchone()
+ if row is not None:
+ for e in errors:
+ e["status"] = row["status"]
+ return {"data": errors}
+
+
+MAX_RANK = 2
+
+
+def __status_rank(status):
+ return {
+ 'unresolved': MAX_RANK - 2,
+ 'ignored': MAX_RANK - 1,
+ 'resolved': MAX_RANK
+ }.get(status)
+
+
+def merge(error_ids):
+ error_ids = list(set(error_ids))
+ errors = get_batch(error_ids)
+ if len(error_ids) <= 1 or len(error_ids) > len(errors):
+ return {"errors": ["invalid list of ids"]}
+ error_ids = [e["errorId"] for e in errors]
+ parent_error_id = error_ids[0]
+ status = "unresolved"
+ for e in errors:
+ if __status_rank(status) < __status_rank(e["status"]):
+ status = e["status"]
+ if __status_rank(status) == MAX_RANK:
+ break
+ params = {
+ "error_ids": tuple(error_ids),
+ "parent_error_id": parent_error_id,
+ "status": status
+ }
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ """UPDATE public.errors
+ SET parent_error_id = %(parent_error_id)s, status = %(status)s
+ WHERE error_id IN %(error_ids)s OR parent_error_id IN %(error_ids)s;""",
+ params)
+ cur.execute(query=query)
+ # row = cur.fetchone()
+
+ return {"data": "success"}
+
+
+def format_first_stack_frame(error):
+ error["stack"] = sourcemaps.format_payload(error.pop("payload"), truncate_to_first=True)
+ for s in error["stack"]:
+ for c in s.get("context", []):
+ for sci, sc in enumerate(c):
+ if isinstance(sc, str) and len(sc) > 1000:
+ c[sci] = sc[:1000]
+ # convert bytes to string:
+ if isinstance(s["filename"], bytes):
+ s["filename"] = s["filename"].decode("utf-8")
+ return error
+
+
+def stats(project_id, user_id, startTimestamp=TimeUTC.now(delta_days=-7), endTimestamp=TimeUTC.now()):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ """
+ SELECT COUNT(errors.*) AS unresolved_and_unviewed
+ FROM public.errors
+ INNER JOIN (SELECT root_error.error_id
+ FROM events.errors
+ INNER JOIN public.errors AS root_error USING (error_id)
+ WHERE project_id = %(project_id)s
+ AND timestamp >= %(startTimestamp)s
+ AND timestamp <= %(endTimestamp)s
+ AND source = 'js_exception') AS timed_errors USING (error_id)
+ LEFT JOIN (SELECT error_id FROM public.user_viewed_errors WHERE user_id = %(user_id)s) AS user_viewed
+ USING (error_id)
+ WHERE user_viewed.error_id ISNULL
+ AND errors.project_id = %(project_id)s
+ AND errors.status = 'unresolved'
+ AND errors.source = 'js_exception';""",
+ {"project_id": project_id, "user_id": user_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp})
+ cur.execute(query=query)
+ row = cur.fetchone()
+
+ return {
+ "data": helper.dict_to_camel_case(row)
+ }
diff --git a/api/chalicelib/core/errors_favorite_viewed.py b/api/chalicelib/core/errors_favorite_viewed.py
new file mode 100644
index 000000000..0bbc10b68
--- /dev/null
+++ b/api/chalicelib/core/errors_favorite_viewed.py
@@ -0,0 +1,91 @@
+from chalicelib.utils import pg_client
+
+
+def add_favorite_error(project_id, user_id, error_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ INSERT INTO public.user_favorite_errors
+ (user_id, error_id)
+ VALUES
+ (%(userId)s,%(error_id)s);""",
+ {"userId": user_id, "error_id": error_id})
+ )
+ return {"errorId": error_id, "favorite": True}
+
+
+def remove_favorite_error(project_id, user_id, error_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ DELETE FROM public.user_favorite_errors
+ WHERE
+ user_id = %(userId)s
+ AND error_id = %(error_id)s;""",
+ {"userId": user_id, "error_id": error_id})
+ )
+ return {"errorId": error_id, "favorite": False}
+
+
+def favorite_error(project_id, user_id, error_id):
+ exists, favorite = error_exists_and_favorite(user_id=user_id, error_id=error_id)
+ if not exists:
+ return {"errors": ["cannot bookmark non-rehydrated errors"]}
+ if favorite:
+ return remove_favorite_error(project_id=project_id, user_id=user_id, error_id=error_id)
+ return add_favorite_error(project_id=project_id, user_id=user_id, error_id=error_id)
+
+
+def error_exists_and_favorite(user_id, error_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """SELECT errors.error_id AS exists, ufe.error_id AS favorite
+ FROM public.errors
+ LEFT JOIN (SELECT error_id FROM public.user_favorite_errors WHERE user_id = %(userId)s) AS ufe USING (error_id)
+ WHERE error_id = %(error_id)s;""",
+ {"userId": user_id, "error_id": error_id})
+ )
+ r = cur.fetchone()
+ if r is None:
+ return False, False
+ return True, r.get("favorite") is not None
+
+
+def add_viewed_error(project_id, user_id, error_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ INSERT INTO public.user_viewed_errors
+ (user_id, error_id)
+ VALUES
+ (%(userId)s,%(error_id)s);""",
+ {"userId": user_id, "error_id": error_id})
+ )
+
+
+def viewed_error_exists(user_id, error_id):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ """SELECT
+ errors.error_id AS hydrated,
+ COALESCE((SELECT TRUE
+ FROM public.user_viewed_errors AS ve
+ WHERE ve.error_id = %(error_id)s
+ AND ve.user_id = %(userId)s LIMIT 1), FALSE) AS viewed
+ FROM public.errors
+ WHERE error_id = %(error_id)s""",
+ {"userId": user_id, "error_id": error_id})
+ cur.execute(
+ query=query
+ )
+ r = cur.fetchone()
+ if r:
+ return r.get("viewed")
+ return True
+
+
+def viewed_error(project_id, user_id, error_id):
+ if viewed_error_exists(user_id=user_id, error_id=error_id):
+ return None
+ return add_viewed_error(project_id=project_id, user_id=user_id, error_id=error_id)
diff --git a/api/chalicelib/core/events.py b/api/chalicelib/core/events.py
new file mode 100644
index 000000000..65ade49ed
--- /dev/null
+++ b/api/chalicelib/core/events.py
@@ -0,0 +1,422 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.core import sessions_metas, metadata
+from chalicelib.core import issues
+from chalicelib.utils.TimeUTC import TimeUTC
+from chalicelib.utils.event_filter_definition import SupportedFilter, Event
+
+
+def get_customs_by_sessionId2_pg(session_id, project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify("""\
+ SELECT
+ c.*,
+ 'CUSTOM' AS type
+ FROM events_common.customs AS c
+ WHERE
+ c.session_id = %(session_id)s
+ ORDER BY c.timestamp;""",
+ {"project_id": project_id, "session_id": session_id})
+ )
+ rows = cur.fetchall()
+ return helper.dict_to_camel_case(rows)
+
+
+def __merge_cells(rows, start, count, replacement):
+ rows[start] = replacement
+ rows = rows[:start + 1] + rows[start + count:]
+ return rows
+
+
+def __get_grouped_clickrage(rows, session_id):
+ click_rage_issues = issues.get_by_session_id(session_id=session_id, issue_type="click_rage")
+ if len(click_rage_issues) == 0:
+ return rows
+
+ for c in click_rage_issues:
+ merge_count = c.get("payload")
+ if merge_count is not None:
+ merge_count = merge_count.get("count", 3)
+ else:
+ merge_count = 3
+ for i in range(len(rows)):
+ if rows[i]["timestamp"] == c["timestamp"]:
+ rows = __merge_cells(rows=rows,
+ start=i,
+ count=merge_count,
+ replacement={**rows[i], "type": "CLICKRAGE", "count": merge_count})
+ break
+ return rows
+
+
+def get_by_sessionId2_pg(session_id, project_id, group_clickrage=False):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify("""\
+ SELECT
+ c.*,
+ 'CLICK' AS type
+ FROM events.clicks AS c
+ WHERE
+ c.session_id = %(session_id)s
+ ORDER BY c.timestamp;""",
+ {"project_id": project_id, "session_id": session_id})
+ )
+ rows = cur.fetchall()
+ if group_clickrage:
+ rows = __get_grouped_clickrage(rows=rows, session_id=session_id)
+
+ cur.execute(cur.mogrify("""
+ SELECT
+ i.*,
+ 'INPUT' AS type
+ FROM events.inputs AS i
+ WHERE
+ i.session_id = %(session_id)s
+ ORDER BY i.timestamp;""",
+ {"project_id": project_id, "session_id": session_id})
+ )
+ rows += cur.fetchall()
+ cur.execute(cur.mogrify("""\
+ SELECT
+ l.*,
+ l.path AS value,
+ l.path AS url,
+ 'LOCATION' AS type
+ FROM events.pages AS l
+ WHERE
+ l.session_id = %(session_id)s
+ ORDER BY l.timestamp;""", {"project_id": project_id, "session_id": session_id}))
+ rows += cur.fetchall()
+ rows = helper.list_to_camel_case(rows)
+ rows = sorted(rows, key=lambda k: k["messageId"])
+ return rows
+
+
+def __get_data_for_extend(data):
+ if "errors" not in data:
+ return data["data"]
+
+
+def __pg_errors_query(source=None):
+ return f"""((SELECT DISTINCT ON(lg.message)
+ lg.message AS value,
+ source,
+ '{event_type.ERROR.ui_type}' AS type
+ FROM {event_type.ERROR.table} INNER JOIN public.errors AS lg USING (error_id) LEFT JOIN public.sessions AS s USING(session_id)
+ WHERE
+ s.project_id = %(project_id)s
+ AND lg.message ILIKE %(svalue)s
+ {"AND source = %(source)s" if source is not None else ""}
+ LIMIT 5)
+ UNION ALL
+ (SELECT DISTINCT ON(lg.name)
+ lg.name AS value,
+ source,
+ '{event_type.ERROR.ui_type}' AS type
+ FROM {event_type.ERROR.table} INNER JOIN public.errors AS lg USING (error_id) LEFT JOIN public.sessions AS s USING(session_id)
+ WHERE
+ s.project_id = %(project_id)s
+ AND lg.name ILIKE %(svalue)s
+ {"AND source = %(source)s" if source is not None else ""}
+ LIMIT 5)
+ UNION
+ (SELECT DISTINCT ON(lg.message)
+ lg.message AS value,
+ source,
+ '{event_type.ERROR.ui_type}' AS type
+ FROM {event_type.ERROR.table} INNER JOIN public.errors AS lg USING (error_id) LEFT JOIN public.sessions AS s USING(session_id)
+ WHERE
+ s.project_id = %(project_id)s
+ AND lg.message ILIKE %(value)s
+ {"AND source = %(source)s" if source is not None else ""}
+ LIMIT 5)
+ UNION ALL
+ (SELECT DISTINCT ON(lg.name)
+ lg.name AS value,
+ source,
+ '{event_type.ERROR.ui_type}' AS type
+ FROM {event_type.ERROR.table} INNER JOIN public.errors AS lg USING (error_id) LEFT JOIN public.sessions AS s USING(session_id)
+ WHERE
+ s.project_id = %(project_id)s
+ AND lg.name ILIKE %(value)s
+ {"AND source = %(source)s" if source is not None else ""}
+ LIMIT 5));"""
+
+
+def __search_pg_errors(project_id, value, key=None, source=None):
+ now = TimeUTC.now()
+
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(__pg_errors_query(source), {"project_id": project_id, "value": helper.string_to_sql_like(value),
+ "svalue": helper.string_to_sql_like("^" + value),
+ "source": source}))
+ results = helper.list_to_camel_case(cur.fetchall())
+ print(f"{TimeUTC.now() - now} : errors")
+ return results
+
+
+def __search_pg_errors_ios(project_id, value, key=None, source=None):
+ now = TimeUTC.now()
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""(SELECT DISTINCT ON(lg.reason)
+ lg.reason AS value,
+ '{event_type.ERROR_IOS.ui_type}' AS type
+ FROM {event_type.ERROR_IOS.table} INNER JOIN public.crashes_ios AS lg USING (crash_id) LEFT JOIN public.sessions AS s USING(session_id)
+ WHERE
+ s.project_id = %(project_id)s
+ AND lg.reason ILIKE %(value)s
+ LIMIT 5)
+ UNION ALL
+ (SELECT DISTINCT ON(lg.name)
+ lg.name AS value,
+ '{event_type.ERROR_IOS.ui_type}' AS type
+ FROM {event_type.ERROR_IOS.table} INNER JOIN public.crashes_ios AS lg USING (crash_id) LEFT JOIN public.sessions AS s USING(session_id)
+ WHERE
+ s.project_id = %(project_id)s
+ AND lg.name ILIKE %(value)s
+ LIMIT 5);""",
+ {"project_id": project_id, "value": helper.string_to_sql_like(value)}))
+ results = helper.list_to_camel_case(cur.fetchall())
+ print(f"{TimeUTC.now() - now} : errors")
+ return results
+
+
+def __search_pg_metadata(project_id, value, key=None, source=None):
+ meta_keys = metadata.get(project_id=project_id)
+ meta_keys = {m["key"]: m["index"] for m in meta_keys}
+ if len(meta_keys) == 0 or key is not None and key not in meta_keys.keys():
+ return []
+ sub_from = []
+ if key is not None:
+ meta_keys = {key: meta_keys[key]}
+
+ for k in meta_keys.keys():
+ colname = metadata.index_to_colname(meta_keys[k])
+ sub_from.append(
+ f"(SELECT DISTINCT ON ({colname}) {colname} AS value, '{k}' AS key FROM public.sessions WHERE project_id = %(project_id)s AND {colname} ILIKE %(value)s LIMIT 5)")
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify(f"""\
+ SELECT key, value, 'METADATA' AS TYPE
+ FROM({" UNION ALL ".join(sub_from)}) AS all_metas
+ LIMIT 5;""", {"project_id": project_id, "value": helper.string_to_sql_like(value)}))
+ results = helper.list_to_camel_case(cur.fetchall())
+ return results
+
+
+def __generic_query(typename):
+ return f"""\
+ (SELECT value, type
+ FROM public.autocomplete
+ WHERE
+ project_id = %(project_id)s
+ AND type='{typename}'
+ AND value ILIKE %(svalue)s
+ LIMIT 5)
+ UNION
+ (SELECT value, type
+ FROM public.autocomplete
+ WHERE
+ project_id = %(project_id)s
+ AND type='{typename}'
+ AND value ILIKE %(value)s
+ LIMIT 5)"""
+
+
+def __generic_autocomplete(event: Event):
+ def f(project_id, value, key=None, source=None):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify(__generic_query(event.ui_type),
+ {"project_id": project_id, "value": helper.string_to_sql_like(value),
+ "svalue": helper.string_to_sql_like("^" + value)}))
+ return helper.list_to_camel_case(cur.fetchall())
+
+ return f
+
+
+class event_type:
+ CLICK = Event(ui_type="CLICK", table="events.clicks", column="label")
+ INPUT = Event(ui_type="INPUT", table="events.inputs", column="label")
+ LOCATION = Event(ui_type="LOCATION", table="events.pages", column="base_path")
+ CUSTOM = Event(ui_type="CUSTOM", table="events_common.customs", column="name")
+ REQUEST = Event(ui_type="REQUEST", table="events_common.requests", column="url")
+ GRAPHQL = Event(ui_type="GRAPHQL", table="events.graphql", column="name")
+ STATEACTION = Event(ui_type="STATEACTION", table="events.state_actions", column="name")
+ ERROR = Event(ui_type="ERROR", table="events.errors",
+ column=None) # column=None because errors are searched by name or message
+ METADATA = Event(ui_type="METADATA", table="public.sessions", column=None)
+ # IOS
+ CLICK_IOS = Event(ui_type="CLICK_IOS", table="events_ios.clicks", column="label")
+ INPUT_IOS = Event(ui_type="INPUT_IOS", table="events_ios.inputs", column="label")
+ VIEW_IOS = Event(ui_type="VIEW_IOS", table="events_ios.views", column="name")
+ CUSTOM_IOS = Event(ui_type="CUSTOM_IOS", table="events_common.customs", column="name")
+ REQUEST_IOS = Event(ui_type="REQUEST_IOS", table="events_common.requests", column="url")
+ ERROR_IOS = Event(ui_type="ERROR_IOS", table="events_ios.crashes",
+ column=None) # column=None because errors are searched by name or message
+
+
+SUPPORTED_TYPES = {
+ event_type.CLICK.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.CLICK),
+ query=__generic_query(typename=event_type.CLICK.ui_type),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ event_type.INPUT.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.INPUT),
+ query=__generic_query(typename=event_type.INPUT.ui_type),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ event_type.LOCATION.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.LOCATION),
+ query=__generic_query(typename=event_type.LOCATION.ui_type),
+ value_limit=3,
+ starts_with="/",
+ starts_limit=3,
+ ignore_if_starts_with=[]),
+ event_type.CUSTOM.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.CUSTOM),
+ query=__generic_query(typename=event_type.CUSTOM.ui_type),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=[""]),
+ event_type.REQUEST.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.REQUEST),
+ query=__generic_query(typename=event_type.REQUEST.ui_type),
+ value_limit=3,
+ starts_with="/",
+ starts_limit=3,
+ ignore_if_starts_with=[""]),
+ event_type.GRAPHQL.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.GRAPHQL),
+ query=__generic_query(typename=event_type.GRAPHQL.ui_type),
+ value_limit=3,
+ starts_with="/",
+ starts_limit=4,
+ ignore_if_starts_with=[]),
+ event_type.STATEACTION.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.STATEACTION),
+ query=__generic_query(typename=event_type.STATEACTION.ui_type),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=[]),
+ event_type.ERROR.ui_type: SupportedFilter(get=__search_pg_errors,
+ query=None,
+ value_limit=4,
+ starts_with="",
+ starts_limit=4,
+ ignore_if_starts_with=["/"]),
+ event_type.METADATA.ui_type: SupportedFilter(get=__search_pg_metadata,
+ query=None,
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ # IOS
+ event_type.CLICK_IOS.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.CLICK_IOS),
+ query=__generic_query(typename=event_type.CLICK_IOS.ui_type),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ event_type.INPUT_IOS.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.INPUT_IOS),
+ query=__generic_query(typename=event_type.INPUT_IOS.ui_type),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ event_type.VIEW_IOS.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.VIEW_IOS),
+ query=__generic_query(typename=event_type.VIEW_IOS.ui_type),
+ value_limit=3,
+ starts_with="/",
+ starts_limit=3,
+ ignore_if_starts_with=[]),
+ event_type.CUSTOM_IOS.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.CUSTOM_IOS),
+ query=__generic_query(typename=event_type.CUSTOM_IOS.ui_type),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=[""]),
+ event_type.REQUEST_IOS.ui_type: SupportedFilter(get=__generic_autocomplete(event_type.REQUEST_IOS),
+ query=__generic_query(typename=event_type.REQUEST_IOS.ui_type),
+ value_limit=3,
+ starts_with="/",
+ starts_limit=3,
+ ignore_if_starts_with=[""]),
+ event_type.ERROR_IOS.ui_type: SupportedFilter(get=__search_pg_errors,
+ query=None,
+ value_limit=4,
+ starts_with="",
+ starts_limit=4,
+ ignore_if_starts_with=["/"]),
+}
+
+
+def __get_merged_queries(queries, value, project_id):
+ if len(queries) == 0:
+ return []
+ now = TimeUTC.now()
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify("(" + ")UNION ALL(".join(queries) + ")",
+ {"project_id": project_id, "value": helper.string_to_sql_like(value)}))
+ results = helper.list_to_camel_case(cur.fetchall())
+ print(f"{TimeUTC.now() - now} : merged-queries for len: {len(queries)}")
+ return results
+
+
+def __get_autocomplete_table(value, project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify("""SELECT DISTINCT ON(value,type) project_id, value, type
+ FROM (SELECT *
+ FROM (SELECT *,
+ ROW_NUMBER() OVER (PARTITION BY type ORDER BY value) AS Row_ID
+ FROM public.autocomplete
+ WHERE project_id = %(project_id)s
+ AND value ILIKE %(svalue)s
+ UNION
+ SELECT *,
+ ROW_NUMBER() OVER (PARTITION BY type ORDER BY value) AS Row_ID
+ FROM public.autocomplete
+ WHERE project_id = %(project_id)s
+ AND value ILIKE %(value)s) AS u
+ WHERE Row_ID <= 5) AS sfa
+ ORDER BY sfa.type;""",
+ {"project_id": project_id, "value": helper.string_to_sql_like(value),
+ "svalue": helper.string_to_sql_like("^" + value)}))
+ results = helper.list_to_camel_case(cur.fetchall())
+ return results
+
+
+def search_pg2(text, event_type, project_id, source, key):
+ if not event_type:
+ return {"data": __get_autocomplete_table(text, project_id)}
+
+ if event_type.upper() in SUPPORTED_TYPES.keys():
+ rows = SUPPORTED_TYPES[event_type.upper()].get(project_id=project_id, value=text, key=key, source=source)
+ if event_type.upper() + "_IOS" in SUPPORTED_TYPES.keys():
+ rows += SUPPORTED_TYPES[event_type.upper() + "_IOS"].get(project_id=project_id, value=text, key=key,
+ source=source)
+ elif event_type.upper() + "_IOS" in SUPPORTED_TYPES.keys():
+ rows = SUPPORTED_TYPES[event_type.upper() + "_IOS"].get(project_id=project_id, value=text, key=key,
+ source=source)
+ elif event_type.upper() in sessions_metas.SUPPORTED_TYPES.keys():
+ return sessions_metas.search(text, event_type, project_id)
+ elif event_type.upper().endswith("_IOS") \
+ and event_type.upper()[:-len("_IOS")] in sessions_metas.SUPPORTED_TYPES.keys():
+ return sessions_metas.search(text, event_type, project_id)
+ else:
+ return {"errors": ["unsupported event"]}
+
+ return {"data": rows}
+
+
+def get_errors_by_session_id(session_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify(f"""\
+ SELECT er.*,ur.*, er.timestamp - s.start_ts AS time
+ FROM {event_type.ERROR.table} AS er INNER JOIN public.errors AS ur USING (error_id) INNER JOIN public.sessions AS s USING (session_id)
+ WHERE
+ er.session_id = %(session_id)s
+ ORDER BY timestamp;""", {"session_id": session_id}))
+ errors = cur.fetchall()
+ for e in errors:
+ e["stacktrace_parsed_at"] = TimeUTC.datetime_to_timestamp(e["stacktrace_parsed_at"])
+ return helper.list_to_camel_case(errors)
diff --git a/api/chalicelib/core/events_ios.py b/api/chalicelib/core/events_ios.py
new file mode 100644
index 000000000..bae48599f
--- /dev/null
+++ b/api/chalicelib/core/events_ios.py
@@ -0,0 +1,69 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.core import events
+
+
+def get_customs_by_sessionId(session_id, project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify(f"""\
+ SELECT
+ c.*,
+ '{events.event_type.CUSTOM_IOS.ui_type}' AS type
+ FROM {events.event_type.CUSTOM_IOS.table} AS c
+ WHERE
+ c.session_id = %(session_id)s
+ ORDER BY c.timestamp;""",
+ {"project_id": project_id, "session_id": session_id})
+ )
+ rows = cur.fetchall()
+ return helper.dict_to_camel_case(rows)
+
+
+def get_by_sessionId(session_id, project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify(f"""
+ SELECT
+ c.*,
+ '{events.event_type.CLICK_IOS.ui_type}' AS type
+ FROM {events.event_type.CLICK_IOS.table} AS c
+ WHERE
+ c.session_id = %(session_id)s
+ ORDER BY c.timestamp;""",
+ {"project_id": project_id, "session_id": session_id})
+ )
+ rows = cur.fetchall()
+
+ cur.execute(cur.mogrify(f"""
+ SELECT
+ i.*,
+ '{events.event_type.INPUT_IOS.ui_type}' AS type
+ FROM {events.event_type.INPUT_IOS.table} AS i
+ WHERE
+ i.session_id = %(session_id)s
+ ORDER BY i.timestamp;""",
+ {"project_id": project_id, "session_id": session_id})
+ )
+ rows += cur.fetchall()
+ cur.execute(cur.mogrify(f"""
+ SELECT
+ v.*,
+ '{events.event_type.VIEW_IOS.ui_type}' AS type
+ FROM {events.event_type.VIEW_IOS.table} AS v
+ WHERE
+ v.session_id = %(session_id)s
+ ORDER BY v.timestamp;""", {"project_id": project_id, "session_id": session_id}))
+ rows += cur.fetchall()
+ rows = helper.list_to_camel_case(rows)
+ rows = sorted(rows, key=lambda k: k["timestamp"])
+ return rows
+
+
+def get_crashes_by_session_id(session_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify(f"""
+ SELECT cr.*,uc.*, cr.timestamp - s.start_ts AS time
+ FROM {events.event_type.ERROR_IOS.table} AS cr INNER JOIN public.crashes_ios AS uc USING (crash_id) INNER JOIN public.sessions AS s USING (session_id)
+ WHERE
+ cr.session_id = %(session_id)s
+ ORDER BY timestamp;""", {"session_id": session_id}))
+ errors = cur.fetchall()
+ return helper.list_to_camel_case(errors)
diff --git a/api/chalicelib/core/funnels.py b/api/chalicelib/core/funnels.py
new file mode 100644
index 000000000..0c3717038
--- /dev/null
+++ b/api/chalicelib/core/funnels.py
@@ -0,0 +1,269 @@
+import chalicelib.utils.helper
+from chalicelib.core import events, significance, sessions
+from chalicelib.utils.TimeUTC import TimeUTC
+
+from chalicelib.utils import helper, pg_client
+from chalicelib.utils import dev
+import json
+
+REMOVE_KEYS = ["key", "_key", "startDate", "endDate"]
+
+ALLOW_UPDATE_FOR = ["name", "filter"]
+
+
+def filter_stages(stages):
+ ALLOW_TYPES = [events.event_type.CLICK.ui_type, events.event_type.INPUT.ui_type,
+ events.event_type.LOCATION.ui_type, events.event_type.CUSTOM.ui_type,
+ events.event_type.CLICK_IOS.ui_type, events.event_type.INPUT_IOS.ui_type,
+ events.event_type.VIEW_IOS.ui_type, events.event_type.CUSTOM_IOS.ui_type, ]
+ return [s for s in stages if s["type"] in ALLOW_TYPES and s.get("value") is not None]
+
+
+def create(project_id, user_id, name, filter, is_public):
+ helper.delete_keys_from_dict(filter, REMOVE_KEYS)
+ filter["events"] = filter_stages(stages=filter.get("events", []))
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify("""\
+ INSERT INTO public.funnels (project_id, user_id, name, filter,is_public)
+ VALUES (%(project_id)s, %(user_id)s, %(name)s, %(filter)s::jsonb,%(is_public)s)
+ RETURNING *;""",
+ {"user_id": user_id, "project_id": project_id, "name": name, "filter": json.dumps(filter),
+ "is_public": is_public})
+
+ cur.execute(
+ query
+ )
+ r = cur.fetchone()
+ r["created_at"] = TimeUTC.datetime_to_timestamp(r["created_at"])
+ r = helper.dict_to_camel_case(r)
+ r["filter"]["startDate"], r["filter"]["endDate"] = TimeUTC.get_start_end_from_range(r["filter"]["rangeValue"])
+ return {"data": r}
+
+
+def update(funnel_id, user_id, name=None, filter=None, is_public=None):
+ s_query = []
+ if filter is not None:
+ helper.delete_keys_from_dict(filter, REMOVE_KEYS)
+ s_query.append("filter = %(filter)s::jsonb")
+ if name is not None and len(name) > 0:
+ s_query.append("name = %(name)s")
+ if is_public is not None:
+ s_query.append("is_public = %(is_public)s")
+ if len(s_query) == 0:
+ return {"errors": ["Nothing to update"]}
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ UPDATE public.funnels
+ SET {" , ".join(s_query)}
+ WHERE funnel_id=%(funnel_id)s
+ RETURNING *;""",
+ {"user_id": user_id, "funnel_id": funnel_id, "name": name,
+ "filter": json.dumps(filter) if filter is not None else None, "is_public": is_public})
+ # print("--------------------")
+ # print(query)
+ # print("--------------------")
+ cur.execute(
+ query
+ )
+ r = cur.fetchone()
+ r["created_at"] = TimeUTC.datetime_to_timestamp(r["created_at"])
+ r = helper.dict_to_camel_case(r)
+ r["filter"]["startDate"], r["filter"]["endDate"] = TimeUTC.get_start_end_from_range(r["filter"]["rangeValue"])
+ return {"data": r}
+
+
+def get_by_user(project_id, user_id, range_value=None, start_date=None, end_date=None, details=False):
+ with pg_client.PostgresClient() as cur:
+ team_query = ""
+ cur.execute(
+ cur.mogrify(
+ f"""\
+ SELECT DISTINCT ON (funnels.funnel_id) funnel_id,project_id, user_id, name, created_at, deleted_at, is_public
+ {",filter" if details else ""}
+ FROM public.funnels {team_query}
+ WHERE project_id = %(project_id)s
+ AND funnels.deleted_at IS NULL
+ AND (funnels.user_id = %(user_id)s OR funnels.is_public);""",
+ {"project_id": project_id, "user_id": user_id}
+ )
+ )
+
+ rows = cur.fetchall()
+ rows = helper.list_to_camel_case(rows)
+ for row in rows:
+ row["createdAt"] = TimeUTC.datetime_to_timestamp(row["createdAt"])
+ if details:
+ row["filter"]["events"] = filter_stages(row["filter"]["events"])
+ get_start_end_time(filter_d=row["filter"], range_value=range_value, start_date=start_date,
+ end_date=end_date)
+ counts = sessions.search2_pg(data=row["filter"], project_id=project_id, user_id=None, count_only=True)
+ row["sessionsCount"] = counts["countSessions"]
+ row["usersCount"] = counts["countUsers"]
+ overview = significance.get_overview(filter_d=row["filter"], project_id=project_id)
+ row["stages"] = overview["stages"]
+ row.pop("filter")
+ row["stagesCount"] = len(row["stages"])
+ # TODO: ask david to count it alone
+ row["criticalIssuesCount"] = overview["criticalIssuesCount"]
+ row["missedConversions"] = 0 if len(row["stages"]) < 2 \
+ else row["stages"][0]["sessionsCount"] - row["stages"][-1]["sessionsCount"]
+ return rows
+
+
+def get_possible_issue_types(project_id):
+ return [{"type": t, "title": chalicelib.utils.helper.get_issue_title(t)} for t in
+ ['click_rage', 'dead_click', 'excessive_scrolling',
+ 'bad_request', 'missing_resource', 'memory', 'cpu',
+ 'slow_resource', 'slow_page_load', 'crash', 'custom_event_error',
+ 'js_error']]
+
+
+def get_start_end_time(filter_d, range_value, start_date, end_date):
+ if start_date is not None and end_date is not None:
+ filter_d["startDate"], filter_d["endDate"] = start_date, end_date
+ elif range_value is not None and len(range_value) > 0:
+ filter_d["rangeValue"] = range_value
+ filter_d["startDate"], filter_d["endDate"] = TimeUTC.get_start_end_from_range(range_value)
+ else:
+ filter_d["startDate"], filter_d["endDate"] = TimeUTC.get_start_end_from_range(filter_d["rangeValue"])
+
+
+def delete(project_id, funnel_id, user_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.funnels
+ SET deleted_at = timezone('utc'::text, now())
+ WHERE project_id = %(project_id)s
+ AND funnel_id = %(funnel_id)s;""",
+ {"funnel_id": funnel_id, "project_id": project_id, "user_id": user_id})
+ )
+
+ return {"data": {"state": "success"}}
+
+
+def get_sessions(project_id, funnel_id, user_id, range_value=None, start_date=None, end_date=None):
+ f = get(funnel_id=funnel_id, project_id=project_id)
+ if f is None:
+ return {"errors": ["filter not found"]}
+ get_start_end_time(filter_d=f["filter"], range_value=range_value, start_date=start_date, end_date=end_date)
+ return sessions.search2_pg(data=f["filter"], project_id=project_id, user_id=user_id)
+
+
+def get_sessions_on_the_fly(funnel_id, project_id, user_id, data):
+ data["events"] = filter_stages(data.get("events", []))
+ if len(data["events"]) == 0:
+ f = get(funnel_id=funnel_id, project_id=project_id)
+ if f is None:
+ return {"errors": ["funnel not found"]}
+ get_start_end_time(filter_d=f["filter"], range_value=data.get("rangeValue", None),
+ start_date=data.get('startDate', None),
+ end_date=data.get('endDate', None))
+ data = f["filter"]
+ return sessions.search2_pg(data=data, project_id=project_id, user_id=user_id)
+
+
+def get_top_insights(project_id, funnel_id, range_value=None, start_date=None, end_date=None):
+ f = get(funnel_id=funnel_id, project_id=project_id)
+ if f is None:
+ return {"errors": ["filter not found"]}
+ get_start_end_time(filter_d=f["filter"], range_value=range_value, start_date=start_date, end_date=end_date)
+ insights, total_drop_due_to_issues = significance.get_top_insights(filter_d=f["filter"], project_id=project_id)
+ insights[-1]["dropDueToIssues"] = total_drop_due_to_issues
+ return {"stages": helper.list_to_camel_case(insights),
+ "totalDropDueToIssues": total_drop_due_to_issues}
+
+
+def get_top_insights_on_the_fly(funnel_id, project_id, data):
+ data["events"] = filter_stages(data.get("events", []))
+ if len(data["events"]) == 0:
+ f = get(funnel_id=funnel_id, project_id=project_id)
+ if f is None:
+ return {"errors": ["funnel not found"]}
+ get_start_end_time(filter_d=f["filter"], range_value=data.get("rangeValue", None),
+ start_date=data.get('startDate', None),
+ end_date=data.get('endDate', None))
+ data = f["filter"]
+ insights, total_drop_due_to_issues = significance.get_top_insights(filter_d=data, project_id=project_id)
+ if len(insights) > 0:
+ insights[-1]["dropDueToIssues"] = total_drop_due_to_issues
+ return {"stages": helper.list_to_camel_case(insights),
+ "totalDropDueToIssues": total_drop_due_to_issues}
+
+
+def get_issues(project_id, funnel_id, range_value=None, start_date=None, end_date=None):
+ f = get(funnel_id=funnel_id, project_id=project_id)
+ if f is None:
+ return {"errors": ["funnel not found"]}
+ get_start_end_time(filter_d=f["filter"], range_value=range_value, start_date=start_date, end_date=end_date)
+ return {"data": {
+ "issues": helper.dict_to_camel_case(significance.get_issues_list(filter_d=f["filter"], project_id=project_id))
+ }}
+
+
+@dev.timed
+def get_issues_on_the_fly(funnel_id, project_id, data):
+ first_stage = data.get("firstStage")
+ last_stage = data.get("lastStage")
+ data["events"] = filter_stages(data.get("events", []))
+ if len(data["events"]) == 0:
+ f = get(funnel_id=funnel_id, project_id=project_id)
+ if f is None:
+ return {"errors": ["funnel not found"]}
+ get_start_end_time(filter_d=f["filter"], range_value=data.get("rangeValue", None),
+ start_date=data.get('startDate', None),
+ end_date=data.get('endDate', None))
+ data = f["filter"]
+ return {
+ "issues": helper.dict_to_camel_case(
+ significance.get_issues_list(filter_d=data, project_id=project_id, first_stage=first_stage,
+ last_stage=last_stage))}
+
+
+def get(funnel_id, project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """\
+ SELECT
+ *
+ FROM public.funnels
+ WHERE project_id = %(project_id)s
+ AND deleted_at IS NULL
+ AND funnel_id = %(funnel_id)s;""",
+ {"funnel_id": funnel_id, "project_id": project_id}
+ )
+ )
+
+ f = helper.dict_to_camel_case(cur.fetchone())
+ if f is None:
+ return None
+
+ f["createdAt"] = TimeUTC.datetime_to_timestamp(f["createdAt"])
+ f["filter"]["events"] = filter_stages(stages=f["filter"]["events"])
+ return f
+
+
+@dev.timed
+def search_by_issue(user_id, project_id, funnel_id, issue_id, data, range_value=None, start_date=None, end_date=None):
+ if len(data.get("events", [])) == 0:
+ f = get(funnel_id=funnel_id, project_id=project_id)
+ if f is None:
+ return {"errors": ["funnel not found"]}
+ get_start_end_time(filter_d=f["filter"], range_value=range_value, start_date=data.get('startDate', start_date),
+ end_date=data.get('endDate', end_date))
+ data = f["filter"]
+
+ # insights, total_drop_due_to_issues = significance.get_top_insights(filter_d=data, project_id=project_id)
+ issues = get_issues_on_the_fly(funnel_id=funnel_id, project_id=project_id, data=data).get("issues", {})
+ issues = issues.get("significant", []) + issues.get("insignificant", [])
+ issue = None
+ for i in issues:
+ if i.get("issueId", "") == issue_id:
+ issue = i
+ break
+ return {"sessions": sessions.search2_pg(user_id=user_id, project_id=project_id, issue=issue,
+ data=data) if issue is not None else {"total": 0, "sessions": []},
+ # "stages": helper.list_to_camel_case(insights),
+ # "totalDropDueToIssues": total_drop_due_to_issues,
+ "issue": issue}
diff --git a/api/chalicelib/core/integration_base.py b/api/chalicelib/core/integration_base.py
new file mode 100644
index 000000000..45e1891a1
--- /dev/null
+++ b/api/chalicelib/core/integration_base.py
@@ -0,0 +1,53 @@
+from abc import ABC, abstractmethod
+from chalicelib.utils import pg_client, helper
+
+
+class BaseIntegration(ABC):
+
+ def __init__(self, user_id, ISSUE_CLASS):
+ self._user_id = user_id
+ self.issue_handler = ISSUE_CLASS(self.integration_token)
+
+ @property
+ @abstractmethod
+ def provider(self):
+ pass
+
+ @property
+ def integration_token(self):
+ integration = self.get()
+ if integration is None:
+ print("no token configured yet")
+ return None
+ return integration["token"]
+
+ def get(self):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """SELECT *
+ FROM public.oauth_authentication
+ WHERE user_id=%(user_id)s AND provider=%(provider)s;""",
+ {"user_id": self._user_id, "provider": self.provider.lower()})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+ @abstractmethod
+ def get_obfuscated(self):
+ pass
+
+ @abstractmethod
+ def update(self, changes):
+ pass
+
+ @abstractmethod
+ def _add(self, data):
+ pass
+
+ @abstractmethod
+ def delete(self):
+ pass
+
+ @abstractmethod
+ def add_edit(self, data):
+ pass
diff --git a/api/chalicelib/core/integration_base_issue.py b/api/chalicelib/core/integration_base_issue.py
new file mode 100644
index 000000000..deb5792e6
--- /dev/null
+++ b/api/chalicelib/core/integration_base_issue.py
@@ -0,0 +1,41 @@
+from abc import ABC, abstractmethod
+
+
+class RequestException(Exception):
+ pass
+
+
+def proxy_issues_handler(e):
+ print("=======__proxy_issues_handler=======")
+ print(str(e))
+ return {"errors": [str(e)]}
+
+
+class BaseIntegrationIssue(ABC):
+ def __init__(self, provider, integration_token):
+ self.provider = provider
+ self.integration_token = integration_token
+
+ @abstractmethod
+ def create_new_assignment(self, integration_project_id, title, description, assignee, issue_type):
+ pass
+
+ @abstractmethod
+ def get_by_ids(self, saved_issues):
+ pass
+
+ @abstractmethod
+ def get(self, integration_project_id, assignment_id):
+ pass
+
+ @abstractmethod
+ def comment(self, integration_project_id, assignment_id, comment):
+ pass
+
+ @abstractmethod
+ def get_metas(self, integration_project_id):
+ pass
+
+ @abstractmethod
+ def get_projects(self):
+ pass
diff --git a/api/chalicelib/core/integration_github.py b/api/chalicelib/core/integration_github.py
new file mode 100644
index 000000000..a13946e46
--- /dev/null
+++ b/api/chalicelib/core/integration_github.py
@@ -0,0 +1,78 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.core.integration_github_issue import GithubIntegrationIssue
+from chalicelib.core import integration_base
+
+PROVIDER = "GITHUB"
+
+
+class GitHubIntegration(integration_base.BaseIntegration):
+
+ def __init__(self, tenant_id, user_id):
+ self.__tenant_id = tenant_id
+ super(GitHubIntegration, self).__init__(user_id=user_id, ISSUE_CLASS=GithubIntegrationIssue)
+
+ @property
+ def provider(self):
+ return PROVIDER
+
+
+
+ def get_obfuscated(self):
+ integration = self.get()
+ if integration is None:
+ return None
+ token = "*" * (len(integration["token"]) - 4) + integration["token"][-4:]
+ return {"token": token, "provider": self.provider.lower()}
+
+ def update(self, changes):
+ with pg_client.PostgresClient() as cur:
+ sub_query = [f"{helper.key_to_snake_case(k)} = %({k})s" for k in changes.keys()]
+ cur.execute(
+ cur.mogrify(f"""\
+ UPDATE public.oauth_authentication
+ SET {','.join(sub_query)}
+ WHERE user_id=%(user_id)s
+ RETURNING token;""",
+ {"user_id": self._user_id,
+ **changes})
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ return w
+
+ def _add(self, data):
+ pass
+
+ def add(self, token):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ INSERT INTO public.oauth_authentication(user_id, provider, provider_user_id, token)
+ VALUES(%(user_id)s, 'github', '', %(token)s)
+ RETURNING token;""",
+ {"user_id": self._user_id,
+ "token": token})
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ return w
+
+ # TODO: make a revoke token call
+ def delete(self):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ DELETE FROM public.oauth_authentication
+ WHERE user_id=%(user_id)s AND provider=%(provider)s;""",
+ {"user_id": self._user_id, "provider": self.provider.lower()})
+ )
+ return {"state": "success"}
+
+ def add_edit(self, data):
+ s = self.get()
+ if s is not None:
+ return self.update(
+ changes={
+ "token": data["token"]
+ }
+ )
+ else:
+ return self.add(token=data["token"])
diff --git a/api/chalicelib/core/integration_github_issue.py b/api/chalicelib/core/integration_github_issue.py
new file mode 100644
index 000000000..8bac3c619
--- /dev/null
+++ b/api/chalicelib/core/integration_github_issue.py
@@ -0,0 +1,100 @@
+from chalicelib.core.integration_base_issue import BaseIntegrationIssue
+from chalicelib.utils import github_client_v3
+from chalicelib.utils.github_client_v3 import github_formatters as formatter
+
+
+class GithubIntegrationIssue(BaseIntegrationIssue):
+ def __init__(self, integration_token):
+ self.__client = github_client_v3.githubV3Request(integration_token)
+ super(GithubIntegrationIssue, self).__init__("GITHUB", integration_token)
+
+ def get_current_user(self):
+ return formatter.user(self.__client.get("/user"))
+
+ def get_meta(self, repoId):
+ current_user = self.get_current_user()
+ try:
+ users = self.__client.get(f"/repositories/{repoId}/collaborators")
+ except Exception as e:
+ users = []
+ users = [formatter.user(u) for u in users]
+ if current_user not in users:
+ users.insert(0, current_user)
+ meta = {
+ 'users': users,
+ 'issueTypes': [formatter.label(l) for l in
+ self.__client.get(f"/repositories/{repoId}/labels")]
+ }
+
+ return meta
+
+ def create_new_assignment(self, integration_project_id, title, description, assignee,
+ issue_type):
+ repoId = integration_project_id
+ assignees = [assignee]
+ labels = [str(issue_type)]
+
+ metas = self.get_meta(repoId)
+ real_assignees = []
+ for a in assignees:
+ for u in metas["users"]:
+ if a == str(u["id"]):
+ real_assignees.append(u["login"])
+ break
+ real_labels = ["Asayer"]
+ for l in labels:
+ found = False
+ for ll in metas["issueTypes"]:
+ if l == str(ll["id"]):
+ real_labels.append(ll["name"])
+ found = True
+ break
+ if not found:
+ real_labels.append(l)
+ issue = self.__client.post(f"/repositories/{repoId}/issues", body={"title": title, "body": description,
+ "assignees": real_assignees,
+ "labels": real_labels})
+ return formatter.issue(issue)
+
+ def get_by_ids(self, saved_issues):
+ results = []
+ for i in saved_issues:
+ results.append(self.get(integration_project_id=i["integrationProjectId"], assignment_id=i["id"]))
+ return {"issues": results}
+
+ def get(self, integration_project_id, assignment_id):
+ repoId = integration_project_id
+ issueNumber = assignment_id
+ issue = self.__client.get(f"/repositories/{repoId}/issues/{issueNumber}")
+ issue = formatter.issue(issue)
+ if issue["commentsCount"] > 0:
+ issue["comments"] = [formatter.comment(c) for c in
+ self.__client.get(f"/repositories/{repoId}/issues/{issueNumber}/comments")]
+ return issue
+
+ def comment(self, integration_project_id, assignment_id, comment):
+ repoId = integration_project_id
+ issueNumber = assignment_id
+ commentCreated = self.__client.post(f"/repositories/{repoId}/issues/{issueNumber}/comments",
+ body={"body": comment})
+ return formatter.comment(commentCreated)
+
+ def get_metas(self, integration_project_id):
+ current_user = self.get_current_user()
+ try:
+ users = self.__client.get(f"/repositories/{integration_project_id}/collaborators")
+ except Exception as e:
+ users = []
+ users = [formatter.user(u) for u in users]
+ if current_user not in users:
+ users.insert(0, current_user)
+
+ return {"provider": self.provider.lower(),
+ 'users': users,
+ 'issueTypes': [formatter.label(l) for l in
+ self.__client.get(f"/repositories/{integration_project_id}/labels")]
+ }
+
+ def get_projects(self):
+ repos = self.__client.get("/user/repos")
+ return [formatter.repo(r) for r in repos]
diff --git a/api/chalicelib/core/integration_jira_cloud.py b/api/chalicelib/core/integration_jira_cloud.py
new file mode 100644
index 000000000..65bad1e4a
--- /dev/null
+++ b/api/chalicelib/core/integration_jira_cloud.py
@@ -0,0 +1,101 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.core.integration_jira_cloud_issue import JIRACloudIntegrationIssue
+from chalicelib.core import integration_base
+
+PROVIDER = "JIRA"
+
+
+class JIRAIntegration(integration_base.BaseIntegration):
+ def __init__(self, tenant_id, user_id):
+ self.__tenant_id = tenant_id
+ # TODO: enable super-constructor when OAuth is done
+ # super(JIRAIntegration, self).__init__(jwt, user_id, JIRACloudIntegrationProxy)
+ self._user_id = user_id
+ i = self.get()
+ if i is None:
+ return
+ self.issue_handler = JIRACloudIntegrationIssue(token=i["token"], username=i["username"], url=i["url"])
+
+ @property
+ def provider(self):
+ return PROVIDER
+
+ # TODO: remove this once jira-oauth is done
+ def get(self):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """SELECT username, token, url
+ FROM public.jira_cloud
+ WHERE user_id=%(user_id)s;""",
+ {"user_id": self._user_id})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+ def get_obfuscated(self):
+ integration = self.get()
+ if integration is None:
+ return None
+ integration["token"] = "*" * (len(integration["token"]) - 4) + integration["token"][-4:]
+ integration["provider"] = self.provider.lower()
+ return integration
+
+ def update(self, changes):
+ with pg_client.PostgresClient() as cur:
+ sub_query = [f"{helper.key_to_snake_case(k)} = %({k})s" for k in changes.keys()]
+ cur.execute(
+ cur.mogrify(f"""\
+ UPDATE public.jira_cloud
+ SET {','.join(sub_query)}
+ WHERE user_id=%(user_id)s
+ RETURNING username, token, url;""",
+ {"user_id": self._user_id,
+ **changes})
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ return w
+
+ # TODO: make this generic for all issue tracking integrations
+ def _add(self, data):
+ print("a pretty defined abstract method")
+ return
+
+ def add(self, username, token, url):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ INSERT INTO public.jira_cloud(username, token, user_id,url)
+ VALUES (%(username)s, %(token)s, %(user_id)s,%(url)s)
+ RETURNING username, token, url;""",
+ {"user_id": self._user_id, "username": username,
+ "token": token, "url": url})
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ return w
+
+ def delete(self):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ DELETE FROM public.jira_cloud
+ WHERE user_id=%(user_id)s;""",
+ {"user_id": self._user_id})
+ )
+ return {"state": "success"}
+
+ def add_edit(self, data):
+ s = self.get()
+ if s is not None:
+ return self.update(
+ changes={
+ "username": data["username"],
+ "token": data["token"],
+ "url": data["url"]
+ }
+ )
+ else:
+ return self.add(
+ username=data["username"],
+ token=data["token"],
+ url=data["url"]
+ )
diff --git a/api/chalicelib/core/integration_jira_cloud_issue.py b/api/chalicelib/core/integration_jira_cloud_issue.py
new file mode 100644
index 000000000..b765903c2
--- /dev/null
+++ b/api/chalicelib/core/integration_jira_cloud_issue.py
@@ -0,0 +1,56 @@
+from chalicelib.utils import jira_client
+from chalicelib.core.integration_base_issue import BaseIntegrationIssue
+
+
+class JIRACloudIntegrationIssue(BaseIntegrationIssue):
+ def __init__(self, token, username, url):
+ self.username = username
+ self.url = url
+ self._client = jira_client.JiraManager(self.url, self.username, token, None)
+ super(JIRACloudIntegrationIssue, self).__init__("JIRA", token)
+
+ def create_new_assignment(self, integration_project_id, title, description, assignee, issue_type):
+ self._client.set_jira_project_id(integration_project_id)
+ data = {
+ 'summary': title,
+ 'description': description,
+ 'issuetype': {'id': issue_type},
+ 'assignee': {"id": assignee},
+ "labels": ["Asayer"]
+ }
+ return self._client.create_issue(data)
+
+ def get_by_ids(self, saved_issues):
+ projects_map = {}
+ for i in saved_issues:
+ if i["integrationProjectId"] not in projects_map.keys():
+ projects_map[i["integrationProjectId"]] = []
+ projects_map[i["integrationProjectId"]].append(i["id"])
+
+ results = []
+ for integration_project_id in projects_map:
+ self._client.set_jira_project_id(integration_project_id)
+ jql = 'labels = Asayer'
+ if len(projects_map[integration_project_id]) > 0:
+ jql += f" AND ID IN ({','.join(projects_map[integration_project_id])})"
+ issues = self._client.get_issues(jql, offset=0)
+ results += [issues]
+ return {"issues": results}
+
+ def get(self, integration_project_id, assignment_id):
+ self._client.set_jira_project_id(integration_project_id)
+ return self._client.get_issue_v3(assignment_id)
+
+ def comment(self, integration_project_id, assignment_id, comment):
+ self._client.set_jira_project_id(integration_project_id)
+ return self._client.add_comment_v3(assignment_id, comment)
+
+ def get_metas(self, integration_project_id):
+ meta = {}
+ self._client.set_jira_project_id(integration_project_id)
+ meta['issueTypes'] = self._client.get_issue_types()
+ meta['users'] = self._client.get_assignable_users()
+ return {"provider": self.provider.lower(), **meta}
+
+ def get_projects(self):
+ return self._client.get_projects()
diff --git a/api/chalicelib/core/integrations_manager.py b/api/chalicelib/core/integrations_manager.py
new file mode 100644
index 000000000..fca271870
--- /dev/null
+++ b/api/chalicelib/core/integrations_manager.py
@@ -0,0 +1,42 @@
+from chalicelib.core import integration_github, integration_jira_cloud
+from chalicelib.utils import pg_client
+
+SUPPORTED_TOOLS = [integration_github.PROVIDER, integration_jira_cloud.PROVIDER]
+
+
+def get_available_integrations(user_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ SELECT EXISTS((SELECT 1
+ FROM public.oauth_authentication
+ WHERE user_id = %(user_id)s
+ AND provider = 'github')) AS github,
+ EXISTS((SELECT 1
+ FROM public.jira_cloud
+ WHERE user_id = %(user_id)s)) AS jira;""",
+ {"user_id": user_id})
+ )
+ current_integrations = cur.fetchone()
+ return dict(current_integrations)
+
+
+def __get_default_integration(user_id):
+ current_integrations = get_available_integrations(user_id)
+ return integration_github.PROVIDER if current_integrations["github"] else integration_jira_cloud.PROVIDER if \
+ current_integrations["jira"] else None
+
+
+def get_integration(tenant_id, user_id, tool=None):
+ if tool is None:
+ tool = __get_default_integration(user_id=user_id)
+ if tool is None:
+ return {"errors": [f"no issue tracking tool found"]}, None
+ tool = tool.upper()
+ if tool not in SUPPORTED_TOOLS:
+ return {"errors": [f"issue tracking tool not supported yet, available: {SUPPORTED_TOOLS}"]}, None
+ if tool == integration_jira_cloud.PROVIDER:
+ return None, integration_jira_cloud.JIRAIntegration(tenant_id=tenant_id, user_id=user_id)
+ elif tool == integration_github.PROVIDER:
+ return None, integration_github.GitHubIntegration(tenant_id=tenant_id, user_id=user_id)
+ return {"errors": ["lost integration"]}, None
diff --git a/api/chalicelib/core/issues.py b/api/chalicelib/core/issues.py
new file mode 100644
index 000000000..61a6946da
--- /dev/null
+++ b/api/chalicelib/core/issues.py
@@ -0,0 +1,72 @@
+from chalicelib.utils import pg_client, helper
+
+ISSUE_TYPES = ['click_rage', 'dead_click', 'excessive_scrolling', 'bad_request', 'missing_resource', 'memory', 'cpu',
+ 'slow_resource', 'slow_page_load', 'crash', 'ml_cpu', 'ml_memory', 'ml_dead_click', 'ml_click_rage',
+ 'ml_mouse_thrashing', 'ml_excessive_scrolling', 'ml_slow_resources', 'custom', 'js_exception',
+ 'custom_event_error', 'js_error']
+ORDER_QUERY = """\
+(CASE WHEN type = 'js_exception' THEN 0
+ WHEN type = 'bad_request' THEN 1
+ WHEN type = 'missing_resource' THEN 2
+ WHEN type = 'click_rage' THEN 3
+ WHEN type = 'dead_click' THEN 4
+ WHEN type = 'memory' THEN 5
+ WHEN type = 'cpu' THEN 6
+ WHEN type = 'crash' THEN 7
+ ELSE -1 END)::INTEGER
+"""
+NAME_QUERY = """\
+(CASE WHEN type = 'js_exception' THEN 'Errors'
+ WHEN type = 'bad_request' THEN 'Bad Requests'
+ WHEN type = 'missing_resource' THEN 'Missing Images'
+ WHEN type = 'click_rage' THEN 'Click Rage'
+ WHEN type = 'dead_click' THEN 'Dead Clicks'
+ WHEN type = 'memory' THEN 'High Memory'
+ WHEN type = 'cpu' THEN 'High CPU'
+ WHEN type = 'crash' THEN 'Crashes'
+ ELSE type::text END)::text
+"""
+
+
+def get(project_id, issue_id):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ """\
+ SELECT
+ *
+ FROM public.issues
+ WHERE project_id = %(project_id)s
+ AND issue_id = %(issue_id)s;""",
+ {"project_id": project_id, "issue_id": issue_id}
+ )
+ cur.execute(query=query)
+ data = cur.fetchone()
+ return helper.dict_to_camel_case(data)
+
+
+def get_by_session_id(session_id, issue_type=None):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ SELECT *
+ FROM events_common.issues
+ INNER JOIN public.issues USING (issue_id)
+ WHERE session_id = %(session_id)s {"AND type = %(type)s" if issue_type is not None else ""}
+ ORDER BY timestamp;""",
+ {"session_id": session_id, "type": issue_type})
+ )
+ return helper.list_to_camel_case(cur.fetchall())
+
+
+def get_types(project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""SELECT type,
+ {ORDER_QUERY}>=0 AS visible,
+ {ORDER_QUERY} AS order,
+ {NAME_QUERY} AS name
+ FROM (SELECT DISTINCT type
+ FROM public.issues
+ WHERE project_id = %(project_id)s) AS types
+ ORDER BY "order";""", {"project_id": project_id}))
+ return helper.list_to_camel_case(cur.fetchall())
diff --git a/api/chalicelib/core/log_tool_bugsnag.py b/api/chalicelib/core/log_tool_bugsnag.py
new file mode 100644
index 000000000..8354142ab
--- /dev/null
+++ b/api/chalicelib/core/log_tool_bugsnag.py
@@ -0,0 +1,73 @@
+from chalicelib.core import log_tools
+import requests
+
+IN_TY = "bugsnag"
+
+
+def list_projects(auth_token):
+ r = requests.get(url="https://api.bugsnag.com/user/organizations",
+ params={"per_page": "100"},
+ headers={"Authorization": "token " + auth_token, "X-Version": "2"})
+ if r.status_code != 200:
+ print("=======> bugsnag get organizations: something went wrong")
+ print(r)
+ print(r.status_code)
+ print(r.text)
+ return []
+
+ orgs = []
+ for i in r.json():
+
+ pr = requests.get(url="https://api.bugsnag.com/organizations/%s/projects" % i["id"],
+ params={"per_page": "100"},
+ headers={"Authorization": "token " + auth_token, "X-Version": "2"})
+ if pr.status_code != 200:
+ print("=======> bugsnag get projects: something went wrong")
+ print(pr)
+ print(r.status_code)
+ print(r.text)
+ continue
+ orgs.append({"name": i["name"], "projects": [{"name": p["name"], "id": p["id"]} for p in pr.json()]})
+ return orgs
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+ if "authorizationToken" in changes:
+ options["authorizationToken"] = changes.pop("authorizationToken")
+ if "bugsnagProjectId" in changes:
+ options["bugsnagProjectId"] = changes.pop("bugsnagProjectId")
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
+
+
+def add(tenant_id, project_id, authorization_token, bugsnag_project_id):
+ options = {
+ "bugsnagProjectId": bugsnag_project_id,
+ "authorizationToken": authorization_token,
+ }
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"authorizationToken": data["authorizationToken"],
+ "bugsnagProjectId": data["bugsnagProjectId"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ authorization_token=data["authorizationToken"],
+ bugsnag_project_id=data["bugsnagProjectId"])
diff --git a/api/chalicelib/core/log_tool_cloudwatch.py b/api/chalicelib/core/log_tool_cloudwatch.py
new file mode 100644
index 000000000..bdd4a2644
--- /dev/null
+++ b/api/chalicelib/core/log_tool_cloudwatch.py
@@ -0,0 +1,119 @@
+import boto3
+from chalicelib.core import log_tools
+
+IN_TY = "cloudwatch"
+
+
+def __find_groups(client, token):
+ d_args = {
+ "limit": 50
+ }
+ if token is not None:
+ d_args["nextToken"] = token
+ response = client.describe_log_groups(**d_args)
+ response["logGroups"] = [i['logGroupName'] for i in response["logGroups"]]
+ if "nextToken" not in response:
+ return response["logGroups"]
+
+ return response["logGroups"] + __find_groups(client, response["nextToken"])
+
+
+def __make_stream_filter(start_time, end_time):
+ def __valid_stream(stream):
+ return "firstEventTimestamp" in stream and not (
+ stream['firstEventTimestamp'] <= start_time and stream["lastEventTimestamp"] <= start_time
+ or stream['firstEventTimestamp'] >= end_time and stream["lastEventTimestamp"] >= end_time
+ )
+
+ return __valid_stream
+
+
+def __find_streams(project_id, log_group, client, token, stream_filter):
+ d_args = {"logGroupName": log_group, "orderBy": 'LastEventTime', 'limit': 50}
+ if token is not None and len(token) > 0:
+ d_args["nextToken"] = token
+ data = client.describe_log_streams(**d_args)
+ streams = list(filter(stream_filter, data['logStreams']))
+ if 'nextToken' not in data:
+ save_new_token(project_id=project_id, token=token)
+ return streams
+ return streams + __find_streams(project_id, log_group, client, data['nextToken'], stream_filter)
+
+
+def __find_events(client, log_group, streams, last_token, start_time, end_time):
+ f_args = {
+ "logGroupName": log_group,
+ "logStreamNames": streams,
+ "startTime": start_time,
+ "endTime": end_time,
+ "limit": 10000,
+ "filterPattern": "asayer_session_id"
+ }
+ if last_token is not None:
+ f_args["nextToken"] = last_token
+ response = client.filter_log_events(
+ **f_args
+ )
+ if "nextToken" not in response:
+ return response["events"]
+
+ return response["events"] + __find_events(client, log_group, streams, response["nextToken"], start_time, end_time)
+
+
+def list_log_groups(aws_access_key_id, aws_secret_access_key, region):
+ logs = boto3.client('logs', aws_access_key_id=aws_access_key_id,
+ aws_secret_access_key=aws_secret_access_key,
+ region_name=region
+ )
+ return __find_groups(logs, None)
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+ if "authorization_token" in changes:
+ options["authorization_token"] = changes.pop("authorization_token")
+ if "project_id" in changes:
+ options["project_id"] = changes.pop("project_id")
+ if len(options.keys()) > 0:
+ changes["options"] = options
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=changes)
+
+
+def add(tenant_id, project_id, aws_access_key_id, aws_secret_access_key, log_group_name, region):
+ return log_tools.add(project_id=project_id, integration=IN_TY,
+ options={"awsAccessKeyId": aws_access_key_id,
+ "awsSecretAccessKey": aws_secret_access_key,
+ "logGroupName": log_group_name, "region": region})
+
+
+def save_new_token(project_id, token):
+ update(tenant_id=None, project_id=project_id, changes={"last_token": token})
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"awsAccessKeyId": data["awsAccessKeyId"],
+ "awsSecretAccessKey": data["awsSecretAccessKey"],
+ "logGroupName": data["logGroupName"],
+ "region": data["region"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ aws_access_key_id=data["awsAccessKeyId"],
+ aws_secret_access_key=data["awsSecretAccessKey"],
+ log_group_name=data["logGroupName"],
+ region=data["region"])
diff --git a/api/chalicelib/core/log_tool_datadog.py b/api/chalicelib/core/log_tool_datadog.py
new file mode 100644
index 000000000..68735f833
--- /dev/null
+++ b/api/chalicelib/core/log_tool_datadog.py
@@ -0,0 +1,43 @@
+from chalicelib.core import log_tools
+
+IN_TY = "datadog"
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+ if "apiKey" in changes:
+ options["apiKey"] = changes["apiKey"]
+ if "applicationKey" in changes:
+ options["applicationKey"] = changes["applicationKey"]
+
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
+
+
+def add(tenant_id, project_id, api_key, application_key):
+ options = {"apiKey": api_key, "applicationKey": application_key}
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"apiKey": data["apiKey"],
+ "applicationKey": data["applicationKey"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ api_key=data["apiKey"],
+ application_key=data["applicationKey"])
diff --git a/api/chalicelib/core/log_tool_elasticsearch.py b/api/chalicelib/core/log_tool_elasticsearch.py
new file mode 100644
index 000000000..5fdfccf24
--- /dev/null
+++ b/api/chalicelib/core/log_tool_elasticsearch.py
@@ -0,0 +1,94 @@
+from elasticsearch import Elasticsearch, RequestsHttpConnection
+from chalicelib.core import log_tools
+import base64
+import logging
+
+logging.getLogger('elasticsearch').level = logging.ERROR
+
+IN_TY = "elasticsearch"
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+
+ if "host" in changes:
+ options["host"] = changes["host"]
+ if "apiKeyId" in changes:
+ options["apiKeyId"] = changes["apiKeyId"]
+ if "apiKey" in changes:
+ options["apiKey"] = changes["apiKey"]
+ if "indexes" in changes:
+ options["indexes"] = changes["indexes"]
+ if "port" in changes:
+ options["port"] = changes["port"]
+
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
+
+
+def add(tenant_id, project_id, host, api_key_id, api_key, indexes, port):
+ options = {
+ "host": host, "apiKeyId": api_key_id, "apiKey": api_key, "indexes": indexes, "port": port
+ }
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"host": data["host"], "apiKeyId": data["apiKeyId"], "apiKey": data["apiKey"],
+ "indexes": data["indexes"], "port": data["port"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ host=data["host"], api_key=data["apiKeyId"], api_key_id=data["apiKey"], indexes=data["indexes"],
+ port=data["port"])
+
+
+def __get_es_client(host, port, api_key_id, api_key, use_ssl=False, timeout=29):
+ host = host.replace("http://", "").replace("https://", "")
+ try:
+ args = {
+ "hosts": [{"host": host, "port": port}],
+ "use_ssl": use_ssl,
+ "verify_certs": False,
+ "ca_certs": False,
+ "connection_class": RequestsHttpConnection,
+ "timeout": timeout
+ }
+ if api_key_id is not None and len(api_key_id) > 0:
+ # args["http_auth"] = (username, password)
+ token = "ApiKey " + base64.b64encode(f"{api_key_id}:{api_key}".encode("utf-8")).decode("utf-8")
+ args["headers"] = {"Authorization": token}
+ es = Elasticsearch(
+ **args
+ )
+ r = es.ping()
+ if not r and not use_ssl:
+ return __get_es_client(host, port, api_key_id, api_key, use_ssl=True, timeout=timeout)
+ if not r:
+ return None
+ except Exception as err:
+ print("================exception connecting to ES host:")
+ print(err)
+ return None
+ return es
+
+
+def ping(tenant_id, host, port, apiKeyId, apiKey):
+ es = __get_es_client(host, port, apiKeyId, apiKey, timeout=3)
+ if es is None:
+ return {"state": False}
+ return {"state": es.ping()}
diff --git a/api/chalicelib/core/log_tool_newrelic.py b/api/chalicelib/core/log_tool_newrelic.py
new file mode 100644
index 000000000..14b0d4e57
--- /dev/null
+++ b/api/chalicelib/core/log_tool_newrelic.py
@@ -0,0 +1,50 @@
+from chalicelib.core import log_tools
+
+IN_TY = "newrelic"
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+ if "region" in changes and len(changes["region"]) == 0:
+ options["region"] = "US"
+ if "applicationId" in changes:
+ options["applicationId"] = changes["applicationId"]
+ if "xQueryKey" in changes:
+ options["xQueryKey"] = changes["xQueryKey"]
+
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
+
+
+def add(tenant_id, project_id, application_id, x_query_key, region):
+ if region is None or len(region) == 0:
+ region = "US"
+ options = {"applicationId": application_id, "xQueryKey": x_query_key, "region": region}
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"applicationId": data["applicationId"],
+ "xQueryKey": data["xQueryKey"],
+ "region": data["region"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ application_id=data["applicationId"],
+ x_query_key=data["xQueryKey"],
+ region=data["region"]
+ )
diff --git a/api/chalicelib/core/log_tool_rollbar.py b/api/chalicelib/core/log_tool_rollbar.py
new file mode 100644
index 000000000..34f6c6114
--- /dev/null
+++ b/api/chalicelib/core/log_tool_rollbar.py
@@ -0,0 +1,38 @@
+from chalicelib.core import log_tools
+
+IN_TY = "rollbar"
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+ if "accessToken" in changes:
+ options["accessToken"] = changes["accessToken"]
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
+
+
+def add(tenant_id, project_id, access_token):
+ options = {"accessToken": access_token}
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"accessToken": data["accessToken"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ access_token=data["accessToken"])
diff --git a/api/chalicelib/core/log_tool_sentry.py b/api/chalicelib/core/log_tool_sentry.py
new file mode 100644
index 000000000..1f51f1556
--- /dev/null
+++ b/api/chalicelib/core/log_tool_sentry.py
@@ -0,0 +1,65 @@
+import requests
+from chalicelib.core import log_tools
+
+IN_TY = "sentry"
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+ if "organizationSlug" in changes:
+ options["organizationSlug"] = changes["organizationSlug"]
+ if "projectSlug" in changes:
+ options["projectSlug"] = changes["projectSlug"]
+ if "token" in changes:
+ options["token"] = changes["token"]
+
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=changes)
+
+
+def add(tenant_id, project_id, project_slug, organization_slug, token):
+ options = {
+ "organizationSlug": organization_slug, "projectSlug": project_slug, "token": token
+ }
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"projectSlug": data["projectSlug"],
+ "organizationSlug": data["organizationSlug"],
+ "token": data["token"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ project_slug=data["projectSlug"],
+ organization_slug=data["organizationSlug"], token=data["token"])
+
+
+def proxy_get(tenant_id, project_id, event_id):
+ i = get(project_id)
+ if i is None:
+ return {}
+ r = requests.get(
+ url="https://sentry.io/api/0/projects/%(organization_slug)s/%(project_slug)s/events/%(event_id)s/" % {
+ "organization_slug": i["organizationSlug"], "project_slug": i["projectSlug"], "event_id": event_id},
+ headers={"Authorization": "Bearer " + i["token"]})
+ if r.status_code != 200:
+ print("=======> sentry get: something went wrong")
+ print(r)
+ print(r.status_code)
+ print(r.text)
+ return r.json()
diff --git a/api/chalicelib/core/log_tool_stackdriver.py b/api/chalicelib/core/log_tool_stackdriver.py
new file mode 100644
index 000000000..611a7c637
--- /dev/null
+++ b/api/chalicelib/core/log_tool_stackdriver.py
@@ -0,0 +1,42 @@
+from chalicelib.core import log_tools
+
+IN_TY = "stackdriver"
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+ if "serviceAccountCredentials" in changes:
+ options["serviceAccountCredentials"] = changes["serviceAccountCredentials"]
+ if "logName" in changes:
+ options["logName"] = changes["logName"]
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
+
+
+def add(tenant_id, project_id, service_account_credentials, log_name):
+ options = {"serviceAccountCredentials": service_account_credentials, "logName": log_name}
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"serviceAccountCredentials": data["serviceAccountCredentials"],
+ "logName": data["logName"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ service_account_credentials=data["serviceAccountCredentials"],
+ log_name=data["logName"])
diff --git a/api/chalicelib/core/log_tool_sumologic.py b/api/chalicelib/core/log_tool_sumologic.py
new file mode 100644
index 000000000..8e34ea70a
--- /dev/null
+++ b/api/chalicelib/core/log_tool_sumologic.py
@@ -0,0 +1,53 @@
+from chalicelib.core import log_tools
+
+IN_TY = "sumologic"
+
+
+def get_all(tenant_id):
+ return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
+
+
+def get(project_id):
+ return log_tools.get(project_id=project_id, integration=IN_TY)
+
+
+def update(tenant_id, project_id, changes):
+ options = {}
+
+ if "region" in changes:
+ options["region"] = changes["region"]
+
+ if "accessId" in changes:
+ options["accessId"] = changes["accessId"]
+
+ if "accessKey" in changes:
+ options["accessKey"] = changes["accessKey"]
+ return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
+
+
+def add(tenant_id, project_id, access_id, access_key, region):
+ options = {
+ "accessId": access_id,
+ "accessKey": access_key,
+ "region": region
+ }
+ return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
+
+
+def delete(tenant_id, project_id):
+ return log_tools.delete(project_id=project_id, integration=IN_TY)
+
+
+def add_edit(tenant_id, project_id, data):
+ s = get(project_id)
+ if s is not None:
+ return update(tenant_id=tenant_id, project_id=project_id,
+ changes={"accessId": data["accessId"],
+ "accessKey": data["accessKey"],
+ "region": data["region"]})
+ else:
+ return add(tenant_id=tenant_id,
+ project_id=project_id,
+ access_id=data["accessId"],
+ access_key=data["accessKey"],
+ region=data["region"])
diff --git a/api/chalicelib/core/log_tools.py b/api/chalicelib/core/log_tools.py
new file mode 100644
index 000000000..31d7e8abc
--- /dev/null
+++ b/api/chalicelib/core/log_tools.py
@@ -0,0 +1,118 @@
+from chalicelib.utils import pg_client, helper
+import json
+
+EXCEPT = ["jira_server", "jira_cloud"]
+
+
+def search(project_id):
+ result = []
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """\
+ SELECT supported_integrations.name,
+ (SELECT COUNT(*)
+ FROM public.integrations
+ INNER JOIN public.projects USING (project_id)
+ WHERE provider = supported_integrations.name
+ AND project_id = %(project_id)s
+ AND projects.deleted_at ISNULL
+ LIMIT 1) AS count
+ FROM unnest(enum_range(NULL::integration_provider)) AS supported_integrations(name);""",
+ {"project_id": project_id})
+ )
+ r = cur.fetchall()
+ for k in r:
+ if k["count"] > 0 and k["name"] not in EXCEPT:
+ result.append({"value": helper.key_to_camel_case(k["name"]), "type": "logTool"})
+ return {"data": result}
+
+
+def add(project_id, integration, options):
+ options = json.dumps(options)
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """\
+ INSERT INTO public.integrations(project_id, provider, options)
+ VALUES (%(project_id)s, %(provider)s, %(options)s::jsonb)
+ RETURNING *;""",
+ {"project_id": project_id, "provider": integration, "options": options})
+ )
+ r = cur.fetchone()
+ return helper.dict_to_camel_case(helper.flatten_nested_dicts(r))
+
+
+def get(project_id, integration):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """\
+ SELECT integrations.*
+ FROM public.integrations INNER JOIN public.projects USING(project_id)
+ WHERE provider = %(provider)s
+ AND project_id = %(project_id)s
+ AND projects.deleted_at ISNULL
+ LIMIT 1;""",
+ {"project_id": project_id, "provider": integration})
+ )
+ r = cur.fetchone()
+ return helper.dict_to_camel_case(helper.flatten_nested_dicts(r))
+
+
+def get_all_by_type(integration):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """\
+ SELECT integrations.*
+ FROM public.integrations INNER JOIN public.projects USING(project_id)
+ WHERE provider = %(provider)s AND projects.deleted_at ISNULL;""",
+ {"provider": integration})
+ )
+ r = cur.fetchall()
+ return helper.list_to_camel_case(r, flatten=True)
+
+
+def edit(project_id, integration, changes):
+ if "projectId" in changes:
+ changes.pop("project_id")
+ if "integration" in changes:
+ changes.pop("integration")
+ if len(changes.keys()) == 0:
+ return None
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.integrations
+ SET options=options||%(changes)s
+ WHERE project_id =%(project_id)s AND provider = %(provider)s
+ RETURNING *;""",
+ {"project_id": project_id, "provider": integration, "changes": json.dumps(changes)})
+ )
+ return helper.dict_to_camel_case(helper.flatten_nested_dicts(cur.fetchone()))
+
+
+def delete(project_id, integration):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ DELETE FROM public.integrations
+ WHERE project_id=%(project_id)s AND provider=%(provider)s;""",
+ {"project_id": project_id, "provider": integration})
+ )
+ return {"state": "success"}
+
+
+def get_all_by_tenant(tenant_id, integration):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """SELECT integrations.*
+ FROM public.integrations INNER JOIN public.projects USING(project_id)
+ WHERE provider = %(provider)s
+ AND projects.deleted_at ISNULL;""",
+ {"provider": integration})
+ )
+ r = cur.fetchall()
+ return helper.list_to_camel_case(r, flatten=True)
diff --git a/api/chalicelib/core/metadata.py b/api/chalicelib/core/metadata.py
new file mode 100644
index 000000000..ed983f235
--- /dev/null
+++ b/api/chalicelib/core/metadata.py
@@ -0,0 +1,262 @@
+from chalicelib.utils import pg_client, helper, dev
+
+
+from chalicelib.core import projects
+import re
+
+MAX_INDEXES = 10
+
+
+def _get_column_names():
+ return [f"metadata_{i}" for i in range(1, MAX_INDEXES + 1)]
+
+
+def get(project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""\
+ SELECT
+ {",".join(_get_column_names())}
+ FROM public.projects
+ WHERE project_id = %(project_id)s AND deleted_at ISNULL
+ LIMIT 1;""", {"project_id": project_id})
+ )
+ metas = cur.fetchone()
+ results = []
+ for i, k in enumerate(metas.keys()):
+ if metas[k] is not None:
+ results.append({"key": metas[k], "index": i + 1})
+ return results
+
+
+regex = re.compile(r'^[a-z0-9_-]+$', re.IGNORECASE)
+
+
+def index_to_colname(index):
+ if index <= 0 or index > MAX_INDEXES:
+ raise Exception("metadata index out or bound")
+ return f"metadata_{index}"
+
+
+def __get_available_index(project_id):
+ used_indexs = get(project_id)
+ used_indexs = [i["index"] for i in used_indexs]
+ if len(used_indexs) >= MAX_INDEXES:
+ return -1
+ i = 1
+ while i in used_indexs:
+ i += 1
+ return i
+
+
+def __edit(project_id, col_index, colname, new_name):
+ if new_name is None or len(new_name) == 0:
+ return {"errors": ["key value invalid"]}
+ old_metas = get(project_id)
+ old_metas = {k["index"]: k for k in old_metas}
+ if col_index not in list(old_metas.keys()):
+ return {"errors": ["custom field doesn't exist"]}
+
+ with pg_client.PostgresClient() as cur:
+ if old_metas[col_index]["key"].lower() != new_name:
+ cur.execute(cur.mogrify(f"""UPDATE public.projects
+ SET {colname} = %(value)s
+ WHERE project_id = %(project_id)s AND deleted_at ISNULL
+ RETURNING {colname};""",
+ {"project_id": project_id, "value": new_name}))
+ new_name = cur.fetchone()[colname]
+ old_metas[col_index]["key"] = new_name
+ return {"data": old_metas[col_index]}
+
+
+def edit(tenant_id, project_id, index: int, new_name: str):
+ return __edit(project_id=project_id, col_index=index, colname=index_to_colname(index), new_name=new_name)
+
+
+def delete(tenant_id, project_id, index: int):
+ index = int(index)
+ old_segments = get(project_id)
+ old_segments = [k["index"] for k in old_segments]
+ if index not in old_segments:
+ return {"errors": ["custom field doesn't exist"]}
+
+ with pg_client.PostgresClient() as cur:
+ colname = index_to_colname(index)
+ query = cur.mogrify(f"""UPDATE public.projects
+ SET {colname}= NULL
+ WHERE project_id = %(project_id)s AND deleted_at ISNULL;""",
+ {"project_id": project_id})
+ cur.execute(query=query)
+ query = cur.mogrify(f"""UPDATE public.sessions
+ SET {colname}= NULL
+ WHERE project_id = %(project_id)s""",
+ {"project_id": project_id})
+ cur.execute(query=query)
+
+ return {"data": get(project_id)}
+
+
+def add(tenant_id, project_id, new_name):
+ index = __get_available_index(project_id=project_id)
+ if index < 1:
+ return {"errors": ["maximum allowed metadata reached"]}
+ with pg_client.PostgresClient() as cur:
+ colname = index_to_colname(index)
+ cur.execute(
+ cur.mogrify(
+ f"""UPDATE public.projects SET {colname}= %(key)s WHERE project_id =%(project_id)s RETURNING {colname};""",
+ {"key": new_name, "project_id": project_id}))
+ col_val = cur.fetchone()[colname]
+ return {"data": {"key": col_val, "index": index}}
+
+
+def search(tenant_id, project_id, key, value):
+ value = value + "%"
+ s_query = []
+ for f in _get_column_names():
+ s_query.append(f"CASE WHEN {f}=%(key)s THEN TRUE ELSE FALSE END AS {f}")
+
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""\
+ SELECT
+ {",".join(s_query)}
+ FROM public.projects
+ WHERE
+ project_id = %(project_id)s AND deleted_at ISNULL
+ LIMIT 1;""",
+ {"key": key, "project_id": project_id})
+ )
+ all_metas = cur.fetchone()
+ key = None
+ for c in all_metas:
+ if all_metas[c]:
+ key = c
+ break
+ if key is None:
+ return {"errors": ["key does not exist"]}
+ cur.execute(
+ cur.mogrify(
+ f"""\
+ SELECT
+ DISTINCT "{key}" AS "{key}"
+ FROM public.sessions
+ {f'WHERE "{key}"::text ILIKE %(value)s' if value is not None and len(value) > 0 else ""}
+ ORDER BY "{key}"
+ LIMIT 20;""",
+ {"value": value, "project_id": project_id})
+ )
+ value = cur.fetchall()
+ return {"data": [k[key] for k in value]}
+
+
+def get_available_keys(project_id):
+ all_metas = get(project_id=project_id)
+ return [k["key"] for k in all_metas]
+
+
+def get_by_session_id(project_id, session_id):
+ all_metas = get(project_id=project_id)
+ if len(all_metas) == 0:
+ return []
+ keys = {index_to_colname(k["index"]): k["key"] for k in all_metas}
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""\
+ select {",".join(keys.keys())}
+ FROM public.sessions
+ WHERE project_id= %(project_id)s AND session_id=%(session_id)s;""",
+ {"session_id": session_id, "project_id": project_id})
+ )
+ session_metas = cur.fetchall()
+ results = []
+ for m in session_metas:
+ r = {}
+ for k in m.keys():
+ r[keys[k]] = m[k]
+ results.append(r)
+ return results
+
+
+def get_keys_by_projects(project_ids):
+ if project_ids is None or len(project_ids) == 0:
+ return {}
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ f"""\
+ SELECT
+ project_id,
+ {",".join(_get_column_names())}
+ FROM public.projects
+ WHERE project_id IN %(project_ids)s AND deleted_at ISNULL;""",
+ {"project_ids": tuple(project_ids)})
+
+ cur.execute(query)
+ rows = cur.fetchall()
+ results = {}
+ for r in rows:
+ project_id = r.pop("project_id")
+ results[project_id] = {}
+ for m in r:
+ if r[m] is not None:
+ results[project_id][m] = r[m]
+ return results
+
+
+def add_edit_delete(tenant_id, project_id, new_metas):
+ old_metas = get(project_id)
+ old_indexes = [k["index"] for k in old_metas]
+ new_indexes = [k["index"] for k in new_metas if "index" in k]
+ new_keys = [k["key"] for k in new_metas]
+
+ add_metas = [k["key"] for k in new_metas
+ if "index" not in k]
+ new_metas = {k["index"]: {"key": k["key"]} for
+ k in new_metas if
+ "index" in k}
+ old_metas = {k["index"]: {"key": k["key"]} for k in old_metas}
+
+ if len(new_keys) > 20:
+ return {"errors": ["you cannot add more than 20 key"]}
+ for k in new_metas.keys():
+ if re.match(regex, new_metas[k]["key"]) is None:
+ return {"errors": [f"invalid key {k}"]}
+ for k in add_metas:
+ if re.match(regex, k) is None:
+ return {"errors": [f"invalid key {k}"]}
+ if len(new_indexes) > len(set(new_indexes)):
+ return {"errors": ["duplicate indexes"]}
+ if len(new_keys) > len(set(new_keys)):
+ return {"errors": ["duplicate keys"]}
+ to_delete = list(set(old_indexes) - set(new_indexes))
+
+ with pg_client.PostgresClient() as cur:
+ for d in to_delete:
+ delete(tenant_id=tenant_id, project_id=project_id, index=d)
+
+ for k in add_metas:
+ add(tenant_id=tenant_id, project_id=project_id, new_name=k)
+
+ for k in new_metas.keys():
+ if new_metas[k]["key"].lower() != old_metas[k]["key"]:
+ edit(tenant_id=tenant_id, project_id=project_id, index=k, new_name=new_metas[k]["key"])
+
+ return {"data": get(project_id)}
+
+
+@dev.timed
+def get_remaining_metadata_with_count(tenant_id):
+ all_projects = projects.get_projects(tenant_id=tenant_id)
+ results = []
+ for p in all_projects:
+ used_metas = get(p["projectId"])
+ if MAX_INDEXES < 0:
+ remaining = -1
+ else:
+ remaining = MAX_INDEXES - len(used_metas)
+ results.append({**p, "limit": MAX_INDEXES, "remaining": remaining, "count": len(used_metas)})
+
+ return results
diff --git a/api/chalicelib/core/notifications.py b/api/chalicelib/core/notifications.py
new file mode 100644
index 000000000..0d9b5be20
--- /dev/null
+++ b/api/chalicelib/core/notifications.py
@@ -0,0 +1,80 @@
+import json
+
+from chalicelib.utils import pg_client, helper
+from chalicelib.utils.TimeUTC import TimeUTC
+
+
+def get_all(tenant_id, user_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT notifications.*,
+ user_viewed_notifications.notification_id NOTNULL AS viewed
+ FROM public.notifications
+ LEFT JOIN (SELECT notification_id
+ FROM public.user_viewed_notifications
+ WHERE user_viewed_notifications.user_id = %(user_id)s) AS user_viewed_notifications USING (notification_id)
+ WHERE notifications.user_id IS NULL OR notifications.user_id =%(user_id)s
+ ORDER BY created_at DESC
+ LIMIT 100;""",
+ {"user_id": user_id})
+ )
+ rows = helper.list_to_camel_case(cur.fetchall())
+ for r in rows:
+ r["createdAt"] = TimeUTC.datetime_to_timestamp(r["createdAt"])
+ return rows
+
+
+def view_notification(user_id, notification_ids=[], tenant_id=None, startTimestamp=None, endTimestamp=None):
+ if (notification_ids is None or len(notification_ids) == 0) and endTimestamp is None:
+ return False
+ if startTimestamp is None:
+ startTimestamp = 0
+ notification_ids = [(user_id, id) for id in notification_ids]
+ with pg_client.PostgresClient() as cur:
+ if len(notification_ids) > 0:
+ cur.executemany(
+ "INSERT INTO public.user_viewed_notifications(user_id, notification_id) VALUES (%s,%s) ON CONFLICT DO NOTHING;",
+ notification_ids)
+ else:
+ query = """INSERT INTO public.user_viewed_notifications(user_id, notification_id)
+ SELECT %(user_id)s AS user_id, notification_id
+ FROM public.notifications
+ WHERE (user_id IS NULL OR user_id =%(user_id)s)
+ AND EXTRACT(EPOCH FROM created_at)*1000>=(%(startTimestamp)s)
+ AND EXTRACT(EPOCH FROM created_at)*1000<=(%(endTimestamp)s+1000)
+ ON CONFLICT DO NOTHING;"""
+ params = {"user_id": user_id, "startTimestamp": startTimestamp,
+ "endTimestamp": endTimestamp}
+ # print('-------------------')
+ # print(cur.mogrify(query, params))
+ cur.execute(cur.mogrify(query, params))
+ return True
+
+
+def create(notifications):
+ if len(notifications) == 0:
+ return []
+ with pg_client.PostgresClient() as cur:
+ values = []
+ for n in notifications:
+ clone = dict(n)
+ if "userId" not in clone:
+ clone["userId"] = None
+ if "options" not in clone:
+ clone["options"] = '{}'
+ else:
+ clone["options"] = json.dumps(clone["options"])
+ values.append(
+ cur.mogrify(
+ "(%(userId)s, %(title)s, %(description)s, %(buttonText)s, %(buttonUrl)s, %(imageUrl)s,%(options)s)",
+ clone).decode('UTF-8')
+ )
+ cur.execute(
+ f"""INSERT INTO public.notifications(user_id, title, description, button_text, button_url, image_url, options)
+ VALUES {",".join(values)} RETURNING *;""")
+ rows = helper.list_to_camel_case(cur.fetchall())
+ for r in rows:
+ r["createdAt"] = TimeUTC.datetime_to_timestamp(r["createdAt"])
+ r["viewed"] = False
+ return rows
diff --git a/api/chalicelib/core/projects.py b/api/chalicelib/core/projects.py
new file mode 100644
index 000000000..62f74961b
--- /dev/null
+++ b/api/chalicelib/core/projects.py
@@ -0,0 +1,229 @@
+import json
+
+from chalicelib.core import users
+from chalicelib.utils import pg_client, helper, dev
+from chalicelib.utils.TimeUTC import TimeUTC
+
+
+def __update(tenant_id, project_id, changes):
+ if len(changes.keys()) == 0:
+ return None
+
+ sub_query = []
+ for key in changes.keys():
+ sub_query.append(f"{helper.key_to_snake_case(key)} = %({key})s")
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ UPDATE public.projects
+ SET
+ {" ,".join(sub_query)}
+ WHERE
+ project_id = %(project_id)s
+ AND deleted_at ISNULL
+ RETURNING project_id,name,gdpr;""",
+ {"project_id": project_id, **changes})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def __create(tenant_id, name):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ INSERT INTO public.projects (name, active)
+ VALUES (%(name)s,TRUE)
+ RETURNING project_id;""",
+ {"name": name})
+ )
+ project_id = cur.fetchone()["project_id"]
+ return get_project(tenant_id=tenant_id, project_id=project_id, include_gdpr=True)
+
+
+@dev.timed
+def get_projects(tenant_id, recording_state=False, gdpr=None, recorded=False, stack_integrations=False):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(f"""\
+ SELECT
+ s.project_id, s.name, s.project_key
+ {',s.gdpr' if gdpr else ''}
+ {',COALESCE((SELECT TRUE FROM public.sessions WHERE sessions.project_id = s.project_id LIMIT 1), FALSE) AS recorded' if recorded else ''}
+ {',stack_integrations.count>0 AS stack_integrations' if stack_integrations else ''}
+ FROM public.projects AS s
+ {'LEFT JOIN LATERAL (SELECT COUNT(*) AS count FROM public.integrations WHERE s.project_id = integrations.project_id LIMIT 1) AS stack_integrations ON TRUE' if stack_integrations else ''}
+ where s.deleted_at IS NULL
+ ORDER BY s.project_id;"""
+ )
+ rows = cur.fetchall()
+ if recording_state:
+ for r in rows:
+ query = cur.mogrify(
+ "select COALESCE(MAX(start_ts),0) AS last from public.sessions where project_id=%(project_id)s;",
+ {"project_id": r["project_id"]})
+ cur.execute(
+ query=query
+ )
+ status = cur.fetchone()
+ if status["last"] < TimeUTC.now(-2):
+ r["status"] = "red"
+ elif status["last"] < TimeUTC.now(-1):
+ r["status"] = "yellow"
+ else:
+ r["status"] = "green"
+
+ return helper.list_to_camel_case(rows)
+
+
+def get_project(tenant_id, project_id, include_last_session=False, include_gdpr=None):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ SELECT
+ s.project_id,
+ s.project_key,
+ s.name
+ {",(SELECT max(ss.start_ts) FROM public.sessions AS ss WHERE ss.project_id = %(project_id)s) AS last_recorded_session_at" if include_last_session else ""}
+ {',s.gdpr' if include_gdpr else ''}
+ FROM public.projects AS s
+ where s.project_id =%(project_id)s
+ AND s.deleted_at IS NULL
+ LIMIT 1;""",
+ {"project_id": project_id})
+
+ cur.execute(
+ query=query
+ )
+ row = cur.fetchone()
+ return helper.dict_to_camel_case(row)
+
+
+def create(tenant_id, user_id, data):
+ admin = users.get(user_id=user_id, tenant_id=tenant_id)
+ if not admin["admin"] and not admin["superAdmin"]:
+ return {"errors": ["unauthorized"]}
+ return {"data": __create(tenant_id=tenant_id, name=data.get("name", "my first project"))}
+
+
+def edit(tenant_id, user_id, project_id, data):
+ admin = users.get(user_id=user_id, tenant_id=tenant_id)
+ if not admin["admin"] and not admin["superAdmin"]:
+ return {"errors": ["unauthorized"]}
+ return {"data": __update(tenant_id=tenant_id, project_id=project_id,
+ changes={"name": data.get("name", "my first project")})}
+
+
+def delete(tenant_id, user_id, project_id):
+ admin = users.get(user_id=user_id, tenant_id=tenant_id)
+
+ if not admin["admin"] and not admin["superAdmin"]:
+ return {"errors": ["unauthorized"]}
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.projects
+ SET
+ deleted_at = timezone('utc'::text, now()),
+ active = FALSE
+ WHERE
+ project_id = %(project_id)s;""",
+ {"project_id": project_id})
+ )
+ return {"data": {"state": "success"}}
+
+
+def count_by_tenant(tenant_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute("""\
+ SELECT
+ count(s.project_id)
+ FROM public.projects AS s
+ where s.deleted_at IS NULL;""")
+ return cur.fetchone()["count"]
+
+
+def get_gdpr(project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT
+ gdpr
+ FROM public.projects AS s
+ where s.project_id =%(project_id)s
+ AND s.deleted_at IS NULL;""",
+ {"project_id": project_id})
+ )
+ return cur.fetchone()["gdpr"]
+
+
+def edit_gdpr(project_id, gdpr):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.projects
+ SET
+ gdpr = gdpr|| %(gdpr)s
+ WHERE
+ project_id = %(project_id)s
+ AND deleted_at ISNULL
+ RETURNING gdpr;""",
+ {"project_id": project_id, "gdpr": json.dumps(gdpr)})
+ )
+ return cur.fetchone()["gdpr"]
+
+
+def get_internal_project_id(project_key):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT project_id
+ FROM public.projects
+ where project_key =%(project_key)s AND deleted_at ISNULL;""",
+ {"project_key": project_key})
+ )
+ return cur.fetchone()["project_id"]
+
+
+def get_project_key(project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT project_key
+ FROM public.projects
+ where project_id =%(project_id)s AND deleted_at ISNULL;""",
+ {"project_id": project_id})
+ )
+ return cur.fetchone()["project_key"]
+
+
+def get_capture_status(project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT
+ sample_rate AS rate, sample_rate=100 AS capture_all
+ FROM public.projects
+ where project_id =%(project_id)s AND deleted_at ISNULL;""",
+ {"project_id": project_id})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def update_capture_status(project_id, changes):
+ if "rate" not in changes and "captureAll" not in changes:
+ return {"errors": ["please provide 'rate' and/or 'captureAll' attributes to update."]}
+ if int(changes["rate"]) < 0 or int(changes["rate"]) > 100:
+ return {"errors": ["'rate' must be between 0..100."]}
+ sample_rate = 0
+ if "rate" in changes:
+ sample_rate = int(changes["rate"])
+ if changes.get("captureAll"):
+ sample_rate = 100
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.projects
+ SET sample_rate= %(sample_rate)s
+ WHERE project_id =%(project_id)s AND deleted_at ISNULL;""",
+ {"project_id": project_id, "sample_rate": sample_rate})
+ )
+
+ return changes
diff --git a/api/chalicelib/core/reset_password.py b/api/chalicelib/core/reset_password.py
new file mode 100644
index 000000000..a792bfbc1
--- /dev/null
+++ b/api/chalicelib/core/reset_password.py
@@ -0,0 +1,66 @@
+import chalicelib.utils.TimeUTC
+from chalicelib.utils import email_helper, captcha, helper
+import secrets
+from chalicelib.utils import pg_client
+
+from chalicelib.core import users
+
+
+def step1(data):
+ print("====================== reset password 1 ===============")
+ print(data)
+ if helper.allow_captcha() and not captcha.is_valid(data["g-recaptcha-response"]):
+ print("error: Invalid captcha.")
+ return {"errors": ["Invalid captcha."]}
+ if "email" not in data:
+ return {"errors": ["email not found in body"]}
+
+ a_users = users.get_by_email_only(data["email"])
+ if len(a_users) > 1:
+ print(f"multiple users found for [{data['email']}] please contact our support")
+ return {"errors": ["please contact our support"]}
+ elif len(a_users) == 1:
+ a_users = a_users[0]
+ reset_token = secrets.token_urlsafe(6)
+ users.update(tenant_id=a_users["tenantId"], user_id=a_users["id"],
+ changes={"token": reset_token})
+ email_helper.send_reset_code(recipient=data["email"], reset_code=reset_token)
+ else:
+ print(f"invalid email address [{data['email']}]")
+ return {"errors": ["invalid email address"]}
+ return {"data": {"state": "success"}}
+
+
+def step2(data):
+ print("====================== change password 2 ===============")
+ user = users.get_by_email_reset(data["email"], data["code"])
+ if not user:
+ print("error: wrong email or reset code")
+ return {"errors": ["wrong email or reset code"]}
+ users.update(tenant_id=user["tenantId"], user_id=user["id"],
+ changes={"token": None, "password": data["password"], "generatedPassword": False,
+ "verifiedEmail": True})
+ return {"data": {"state": "success"}}
+
+
+def cron():
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT user_id
+ FROM public.basic_authentication
+ WHERE token notnull
+ AND (token_requested_at isnull or (EXTRACT(EPOCH FROM token_requested_at)*1000)::BIGINT < %(time)s);""",
+ {"time": chalicelib.utils.TimeUTC.TimeUTC.now(delta_days=-1)})
+ )
+ results = cur.fetchall()
+ if len(results) == 0:
+ return
+ results = tuple([r["user_id"] for r in results])
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.basic_authentication
+ SET token = NULL, token_requested_at = NULL
+ WHERE user_id in %(ids)s;""",
+ {"ids": results})
+ )
diff --git a/api/chalicelib/core/resources.py b/api/chalicelib/core/resources.py
new file mode 100644
index 000000000..6b9ba9170
--- /dev/null
+++ b/api/chalicelib/core/resources.py
@@ -0,0 +1,22 @@
+from chalicelib.utils import helper, pg_client
+
+
+def get_by_session_id(session_id):
+ with pg_client.PostgresClient() as cur:
+ ch_query = """\
+ SELECT
+ timestamp AS datetime,
+ url,
+ type,
+ duration,
+ ttfb,
+ header_size,
+ encoded_body_size,
+ decoded_body_size,
+ success
+ FROM events.resources
+ WHERE session_id = %(session_id)s;"""
+ params = {"session_id": session_id}
+ cur.execute(cur.mogrify(ch_query, params))
+ rows = cur.fetchall()
+ return helper.list_to_camel_case(rows)
diff --git a/api/chalicelib/core/sessions.py b/api/chalicelib/core/sessions.py
new file mode 100644
index 000000000..480877468
--- /dev/null
+++ b/api/chalicelib/core/sessions.py
@@ -0,0 +1,620 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.utils import dev
+from chalicelib.core import events, sessions_metas, socket_ios, metadata, events_ios, sessions_mobs
+
+if helper.is_free_open_source_edition():
+ from chalicelib.core import projects, errors
+else:
+ from chalicelib.ee import projects, errors
+
+from chalicelib.core import resources
+
+SESSION_PROJECTION_COLS = """s.project_id,
+ s.session_id::text AS session_id,
+ s.user_uuid,
+ s.user_id,
+ s.user_agent,
+ s.user_os,
+ s.user_browser,
+ s.user_device,
+ s.user_device_type,
+ s.user_country,
+ s.start_ts,
+ s.duration,
+ s.events_count,
+ s.pages_count,
+ s.errors_count,
+ s.user_anonymous_id,
+ s.platform,
+ s.issue_score,
+ s.issue_types::text[] AS issue_types,
+ favorite_sessions.session_id NOTNULL AS favorite,
+ COALESCE((SELECT TRUE
+ FROM public.user_viewed_sessions AS fs
+ WHERE s.session_id = fs.session_id
+ AND fs.user_id = %(userId)s LIMIT 1), FALSE) AS viewed
+ """
+
+
+def __group_metadata(session, project_metadata):
+ meta = []
+ for m in project_metadata.keys():
+ if project_metadata[m] is not None and session.get(m) is not None:
+ meta.append({project_metadata[m]: session[m]})
+ session.pop(m)
+ return meta
+
+
+def get_by_id2_pg(project_id, session_id, user_id, full_data=False, include_fav_viewed=False, group_metadata=False):
+ with pg_client.PostgresClient() as cur:
+ extra_query = []
+ if include_fav_viewed:
+ extra_query.append("""COALESCE((SELECT TRUE
+ FROM public.user_favorite_sessions AS fs
+ WHERE s.session_id = fs.session_id
+ AND fs.user_id = %(userId)s), FALSE) AS favorite""")
+ extra_query.append("""COALESCE((SELECT TRUE
+ FROM public.user_viewed_sessions AS fs
+ WHERE s.session_id = fs.session_id
+ AND fs.user_id = %(userId)s), FALSE) AS viewed""")
+ query = cur.mogrify(
+ f"""\
+ SELECT
+ s.*,
+ s.session_id::text AS session_id
+ {"," if len(extra_query) > 0 else ""}{",".join(extra_query)}
+ {(",json_build_object(" + ",".join([f"'{m}',p.{m}" for m in metadata._get_column_names()]) + ") AS project_metadata") if group_metadata else ''}
+ FROM public.sessions AS s {"INNER JOIN public.projects AS p USING (project_id)" if group_metadata else ""}
+ WHERE s.project_id = %(project_id)s
+ AND s.session_id = %(session_id)s;""",
+ {"project_id": project_id, "session_id": session_id, "userId": user_id}
+ )
+ # print("===============")
+ # print(query)
+ cur.execute(query=query)
+
+ data = cur.fetchone()
+ if data is not None:
+ data = helper.dict_to_camel_case(data)
+ if full_data:
+ if data["platform"] == 'ios':
+ data['events'] = events_ios.get_by_sessionId(project_id=project_id, session_id=session_id)
+ for e in data['events']:
+ if e["type"].endswith("_IOS"):
+ e["type"] = e["type"][:-len("_IOS")]
+ data['crashes'] = events_ios.get_crashes_by_session_id(session_id=session_id)
+ data['userEvents'] = events_ios.get_customs_by_sessionId(project_id=project_id,
+ session_id=session_id)
+ data['mobsUrl'] = sessions_mobs.get_ios(sessionId=session_id)
+ data['metadata'] = __group_metadata(project_metadata=data.pop("projectMetadata"), session=data)
+ data["socket"] = socket_ios.start_replay(project_id=project_id, session_id=session_id,
+ device=data["userDevice"],
+ os_version=data["userOsVersion"],
+ mob_url=data["mobsUrl"])
+ else:
+ data['events'] = events.get_by_sessionId2_pg(project_id=project_id, session_id=session_id,
+ group_clickrage=True)
+ all_errors = events.get_errors_by_session_id(session_id=session_id)
+ data['stackEvents'] = [e for e in all_errors if e['source'] != "js_exception"]
+ # to keep only the first stack
+ data['errors'] = [errors.format_first_stack_frame(e) for e in all_errors if
+ e['source'] == "js_exception"][
+ :500] # limit the number of errors to reduce the response-body size
+ data['userEvents'] = events.get_customs_by_sessionId2_pg(project_id=project_id,
+ session_id=session_id)
+ data['mobsUrl'] = sessions_mobs.get_web(sessionId=session_id)
+ data['metadata'] = __group_metadata(project_metadata=data.pop("projectMetadata"), session=data)
+ data['resources'] = resources.get_by_session_id(session_id=session_id)
+
+ return data
+ return None
+
+
+def sessions_args(args, params):
+ if params is not None:
+ for key in ['userOs', 'userBrowser', 'userCountry', 'path', 'path_in_order', 'after', 'minDuration',
+ 'maxDuration', 'sortSessions', 'eventsCount', 'consoleLogCount', 'startDate', 'endDate',
+ 'consoleLog', 'location']:
+ args[key] = params.get(key)
+
+
+new_line = "\n"
+
+
+def __get_sql_operator(op):
+ op = op.lower()
+ return "=" if op == "is" or op == "on" else "!=" if op == "isnot" else "ILIKE" if op == "contains" else "NOT ILIKE" if op == "notcontains" else "="
+
+
+def __is_negation_operator(op):
+ return op in ("!=", "NOT ILIKE")
+
+
+def __reverse_sql_operator(op):
+ return "=" if op == "!=" else "!=" if op == "=" else "ILIKE" if op == "NOT ILIKE" else "NOT ILIKE"
+
+
+def __get_sql_operator_multiple(op):
+ op = op.lower()
+ return " IN " if op == "is" else " NOT IN "
+
+
+def __get_sql_operator_boolean(op):
+ op = op.lower()
+ return True if op == "true" else False
+
+
+def __get_sql_value_multiple(values):
+ if isinstance(values, tuple):
+ return values
+ return tuple([v for v in values])
+
+
+@dev.timed
+def search2_pg(data, project_id, user_id, favorite_only=False, errors_only=False, error_status="ALL",
+ count_only=False, issue=None):
+ sessions = []
+ generic_args = {"startDate": data['startDate'], "endDate": data['endDate'],
+ "projectId": project_id,
+ "userId": user_id}
+ with pg_client.PostgresClient() as cur:
+ extra_constraints = [
+ cur.mogrify("s.project_id = %(project_id)s", {"project_id": project_id}),
+ cur.mogrify("s.duration IS NOT NULL", {})
+ ]
+ extra_from = ""
+ fav_only_join = ""
+ if favorite_only and not errors_only:
+ fav_only_join = "LEFT JOIN public.user_favorite_sessions AS fs ON fs.session_id = s.session_id"
+ extra_constraints.append(cur.mogrify("fs.user_id = %(userId)s", {"userId": user_id}))
+ events_query_part = ""
+ strict = True
+
+ if len(data.get("events", [])) > 0:
+ events_query_from = []
+ event_index = 0
+
+ for event in data["events"]:
+ # TODO: remove this when message_id is removed
+ seq_id = False
+ event_type = event["type"].upper()
+ if event.get("operator") is None:
+ event["operator"] = "is"
+ op = __get_sql_operator(event["operator"])
+ is_not = False
+ if __is_negation_operator(op) and event_index > 0:
+ is_not = True
+ op = __reverse_sql_operator(op)
+ event_from = "%s INNER JOIN public.sessions AS ms USING (session_id)"
+ event_where = ["ms.project_id = %(projectId)s", "main.timestamp >= %(startDate)s",
+ "main.timestamp <= %(endDate)s", "ms.start_ts >= %(startDate)s",
+ "ms.start_ts <= %(endDate)s"]
+ event_args = {"value": helper.string_to_sql_like_with_op(event['value'], op)}
+ if event_type not in list(events.SUPPORTED_TYPES.keys()) \
+ or event.get("value") in [None, "", "*"] \
+ and (event_type != events.event_type.ERROR.ui_type \
+ or event_type != events.event_type.ERROR_IOS.ui_type):
+ continue
+ if event_type == events.event_type.CLICK.ui_type:
+ event_from = event_from % f"{events.event_type.CLICK.table} AS main "
+ event_where.append(f"main.{events.event_type.CLICK.column} {op} %(value)s")
+
+ elif event_type == events.event_type.INPUT.ui_type:
+ event_from = event_from % f"{events.event_type.INPUT.table} AS main "
+ event_where.append(f"main.{events.event_type.INPUT.column} {op} %(value)s")
+ if len(event.get("custom", "")) > 0:
+ event_where.append("main.value ILIKE %(custom)s")
+ event_args["custom"] = helper.string_to_sql_like_with_op(event['custom'], "ILIKE")
+ elif event_type == events.event_type.LOCATION.ui_type:
+ event_from = event_from % f"{events.event_type.LOCATION.table} AS main "
+ event_where.append(f"main.{events.event_type.LOCATION.column} {op} %(value)s")
+ elif event_type == events.event_type.CUSTOM.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.CUSTOM.table} AS main "
+ event_where.append(f"main.{events.event_type.CUSTOM.column} {op} %(value)s")
+ elif event_type == events.event_type.REQUEST.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.REQUEST.table} AS main "
+ event_where.append(f"main.{events.event_type.REQUEST.column} {op} %(value)s")
+ elif event_type == events.event_type.GRAPHQL.ui_type:
+ event_from = event_from % f"{events.event_type.GRAPHQL.table} AS main "
+ event_where.append(f"main.{events.event_type.GRAPHQL.column} {op} %(value)s")
+ elif event_type == events.event_type.STATEACTION.ui_type:
+ event_from = event_from % f"{events.event_type.STATEACTION.table} AS main "
+ event_where.append(f"main.{events.event_type.STATEACTION.column} {op} %(value)s")
+ elif event_type == events.event_type.ERROR.ui_type:
+ if event.get("source") in [None, "*", ""]:
+ event["source"] = "js_exception"
+ event_from = event_from % f"{events.event_type.ERROR.table} AS main INNER JOIN public.errors AS main1 USING(error_id)"
+ if event.get("value") not in [None, "*", ""]:
+ event_where.append(f"(main1.message {op} %(value)s OR main1.name {op} %(value)s)")
+ if event.get("source") not in [None, "*", ""]:
+ event_where.append(f"main1.source = %(source)s")
+ event_args["source"] = event["source"]
+ elif event.get("source") not in [None, "*", ""]:
+ event_where.append(f"main1.source = %(source)s")
+ event_args["source"] = event["source"]
+
+ # ----- IOS
+ elif event_type == events.event_type.CLICK_IOS.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.CLICK_IOS.table} AS main "
+ event_where.append(f"main.{events.event_type.CLICK_IOS.column} {op} %(value)s")
+
+ elif event_type == events.event_type.INPUT_IOS.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.INPUT_IOS.table} AS main "
+ event_where.append(f"main.{events.event_type.INPUT_IOS.column} {op} %(value)s")
+
+ if len(event.get("custom", "")) > 0:
+ event_where.append("main.value ILIKE %(custom)s")
+ event_args["custom"] = helper.string_to_sql_like_with_op(event['custom'], "ILIKE")
+ elif event_type == events.event_type.VIEW_IOS.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.VIEW_IOS.table} AS main "
+ event_where.append(f"main.{events.event_type.VIEW_IOS.column} {op} %(value)s")
+ elif event_type == events.event_type.CUSTOM_IOS.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.CUSTOM_IOS.table} AS main "
+ event_where.append(f"main.{events.event_type.CUSTOM_IOS.column} {op} %(value)s")
+ elif event_type == events.event_type.REQUEST_IOS.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.REQUEST_IOS.table} AS main "
+ event_where.append(f"main.{events.event_type.REQUEST_IOS.column} {op} %(value)s")
+ elif event_type == events.event_type.ERROR_IOS.ui_type:
+ seq_id = True
+ event_from = event_from % f"{events.event_type.ERROR_IOS.table} AS main INNER JOIN public.crashes_ios AS main1 USING(crash_id)"
+ if event.get("value") not in [None, "*", ""]:
+ event_where.append(f"(main1.reason {op} %(value)s OR main1.name {op} %(value)s)")
+
+ else:
+ continue
+
+ event_index += 1
+ if is_not:
+ event_from += f""" LEFT JOIN (SELECT session_id FROM {event_from} WHERE {" AND ".join(event_where)}) AS left_not USING (session_id)"""
+ event_where[-1] = "left_not.session_id ISNULL"
+ events_query_from.append(cur.mogrify(f"""\
+ (SELECT
+ main.session_id, {'seq_index' if seq_id else 'message_id %%%% 2147483647 AS seq_index'}, timestamp, {event_index} AS funnel_step
+ FROM {event_from}
+ WHERE {" AND ".join(event_where)}
+ )\
+ """, {**generic_args, **event_args}).decode('UTF-8'))
+
+ if len(events_query_from) > 0:
+ events_query_part = f"""\
+ SELECT
+ session_id, MIN(timestamp) AS first_event_ts, MAX(timestamp) AS last_event_ts
+ FROM
+ ({(" UNION ALL ").join(events_query_from)}) AS f_query
+ GROUP BY 1
+ {"" if event_index < 2 else f"HAVING events.funnel(array_agg(funnel_step ORDER BY timestamp,seq_index ASC), {event_index})" if strict
+ else f"HAVING array_length(array_agg(DISTINCT funnel_step), 1) = {len(data['events'])}"}
+ {fav_only_join}
+ """
+ else:
+ data["events"] = []
+
+ # ---------------------------------------------------------------------------
+ if "filters" in data:
+ meta_keys = metadata.get(project_id=project_id)
+ meta_keys = {m["key"]: m["index"] for m in meta_keys}
+ for f in data["filters"]:
+ if not isinstance(f.get("value"), list):
+ f["value"] = [f.get("value")]
+ if len(f["value"]) == 0 or f["value"][0] is None:
+ continue
+ filter_type = f["type"].upper()
+ f["value"] = __get_sql_value_multiple(f["value"])
+ if filter_type == sessions_metas.meta_type.USERBROWSER:
+ op = __get_sql_operator_multiple(f["operator"])
+ extra_constraints.append(
+ cur.mogrify(f's.user_browser {op} %(value)s', {"value": f["value"]}))
+
+ elif filter_type in [sessions_metas.meta_type.USEROS, sessions_metas.meta_type.USEROS_IOS]:
+ op = __get_sql_operator_multiple(f["operator"])
+ extra_constraints.append(cur.mogrify(f's.user_os {op} %(value)s', {"value": f["value"]}))
+
+ elif filter_type in [sessions_metas.meta_type.USERDEVICE, sessions_metas.meta_type.USERDEVICE_IOS]:
+ op = __get_sql_operator_multiple(f["operator"])
+ extra_constraints.append(cur.mogrify(f's.user_device {op} %(value)s', {"value": f["value"]}))
+
+ elif filter_type in [sessions_metas.meta_type.USERCOUNTRY, sessions_metas.meta_type.USERCOUNTRY_IOS]:
+ op = __get_sql_operator_multiple(f["operator"])
+ extra_constraints.append(cur.mogrify(f's.user_country {op} %(value)s', {"value": f["value"]}))
+ elif filter_type == "duration".upper():
+ if len(f["value"]) > 0 and f["value"][0] is not None:
+ extra_constraints.append(
+ cur.mogrify("s.duration >= %(minDuration)s", {"minDuration": f["value"][0]}))
+ if len(f["value"]) > 1 and f["value"][1] is not None and f["value"][1] > 0:
+ extra_constraints.append(
+ cur.mogrify("s.duration <= %(maxDuration)s", {"maxDuration": f["value"][1]}))
+ elif filter_type == sessions_metas.meta_type.REFERRER:
+ # events_query_part = events_query_part + f"INNER JOIN events.pages AS p USING(session_id)"
+ extra_from += f"INNER JOIN {events.event_type.LOCATION.table} AS p USING(session_id)"
+ op = __get_sql_operator_multiple(f["operator"])
+ extra_constraints.append(
+ cur.mogrify(f"p.base_referrer {op} %(referrer)s", {"referrer": f["value"]}))
+ elif filter_type == events.event_type.METADATA.ui_type:
+ op = __get_sql_operator(f["operator"])
+ if f.get("key") in meta_keys.keys():
+ extra_constraints.append(
+ cur.mogrify(f"s.{metadata.index_to_colname(meta_keys[f['key']])} {op} %(value)s",
+ {"value": helper.string_to_sql_like_with_op(f["value"][0], op)})
+ )
+ elif filter_type in [sessions_metas.meta_type.USERID, sessions_metas.meta_type.USERID_IOS]:
+ op = __get_sql_operator(f["operator"])
+ extra_constraints.append(
+ cur.mogrify(f"s.user_id {op} %(value)s",
+ {"value": helper.string_to_sql_like_with_op(f["value"][0], op)})
+ )
+ elif filter_type in [sessions_metas.meta_type.USERANONYMOUSID,
+ sessions_metas.meta_type.USERANONYMOUSID_IOS]:
+ op = __get_sql_operator(f["operator"])
+ extra_constraints.append(
+ cur.mogrify(f"s.user_anonymous_id {op} %(value)s",
+ {"value": helper.string_to_sql_like_with_op(f["value"][0], op)})
+ )
+ elif filter_type in [sessions_metas.meta_type.REVID, sessions_metas.meta_type.REVID_IOS]:
+ op = __get_sql_operator(f["operator"])
+ extra_constraints.append(
+ cur.mogrify(f"s.rev_id {op} %(value)s",
+ {"value": helper.string_to_sql_like_with_op(f["value"][0], op)})
+ )
+
+ # ---------------------------------------------------------------------------
+
+ if data.get("startDate") is not None:
+ extra_constraints.append(cur.mogrify("s.start_ts >= %(startDate)s", {"startDate": data['startDate']}))
+ else:
+ data['startDate'] = None
+ if data.get("endDate") is not None:
+ extra_constraints.append(cur.mogrify("s.start_ts <= %(endDate)s", {"endDate": data['endDate']}))
+ else:
+ data['endDate'] = None
+
+ if data.get('platform') is not None:
+ if data['platform'] == 'mobile':
+ extra_constraints.append(b"s.user_os in ('Android','BlackBerry OS','iOS','Tizen','Windows Phone')")
+ elif data['platform'] == 'desktop':
+ extra_constraints.append(
+ b"s.user_os in ('Chrome OS','Fedora','Firefox OS','Linux','Mac OS X','Ubuntu','Windows')")
+
+ order = "DESC"
+ if data.get("order") is not None:
+ order = data["order"]
+ sort = 'session_id'
+ if data.get("sort") is not None and data["sort"] != "session_id":
+ sort += " " + order + "," + helper.key_to_snake_case(data["sort"])
+ else:
+ sort = 'session_id'
+
+ if errors_only:
+ extra_from += f" INNER JOIN {events.event_type.ERROR.table} AS er USING (session_id) INNER JOIN public.errors AS ser USING (error_id)"
+ extra_constraints.append(b"ser.source = 'js_exception'")
+ if error_status != "ALL":
+ extra_constraints.append(cur.mogrify("ser.status = %(status)s", {"status": error_status.lower()}))
+ if favorite_only:
+ extra_from += " INNER JOIN public.user_favorite_errors AS ufe USING (error_id)"
+ extra_constraints.append(cur.mogrify("ufe.user_id = %(user_id)s", {"user_id": user_id}))
+
+ extra_constraints = [extra.decode('UTF-8') + "\n" for extra in extra_constraints]
+ if not favorite_only and not errors_only:
+ extra_from += """LEFT JOIN (SELECT user_id, session_id
+ FROM public.user_favorite_sessions
+ WHERE user_id = %(userId)s) AS favorite_sessions
+ USING (session_id)"""
+ extra_join = ""
+ if issue is not None:
+ extra_join = cur.mogrify("""
+ INNER JOIN LATERAL(SELECT TRUE FROM events_common.issues INNER JOIN public.issues AS p_issues USING (issue_id)
+ WHERE issues.session_id=f.session_id
+ AND p_issues.type=%(type)s
+ AND p_issues.context_string=%(contextString)s
+ AND timestamp >= f.first_event_ts
+ AND timestamp <= f.last_event_ts) AS issues ON(TRUE)
+ """, {"contextString": issue["contextString"], "type": issue["type"]}).decode('UTF-8')
+
+ query_part = f"""\
+ FROM {f"({events_query_part}) AS f" if len(events_query_part) > 0 else "public.sessions AS s"}
+ {extra_join}
+ {"INNER JOIN public.sessions AS s USING(session_id)" if len(events_query_part) > 0 else ""}
+ {extra_from}
+ WHERE
+
+ {" AND ".join(extra_constraints)}"""
+
+ if errors_only:
+ main_query = cur.mogrify(f"""\
+ SELECT DISTINCT er.error_id, ser.status, ser.parent_error_id, ser.payload,
+ COALESCE((SELECT TRUE
+ FROM public.user_favorite_sessions AS fs
+ WHERE s.session_id = fs.session_id
+ AND fs.user_id = %(userId)s), FALSE) AS favorite,
+ COALESCE((SELECT TRUE
+ FROM public.user_viewed_errors AS ve
+ WHERE er.error_id = ve.error_id
+ AND ve.user_id = %(userId)s LIMIT 1), FALSE) AS viewed
+ {query_part};""",
+ generic_args)
+
+ elif count_only:
+ main_query = cur.mogrify(f"""\
+ SELECT COUNT(DISTINCT s.session_id) AS count_sessions, COUNT(DISTINCT s.user_uuid) AS count_users
+ {query_part};""",
+ generic_args)
+ else:
+ main_query = cur.mogrify(f"""\
+ SELECT * FROM
+ (SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS}
+ {query_part}
+ ORDER BY s.session_id desc) AS filtred_sessions
+ ORDER BY favorite DESC, issue_score DESC, {sort} {order};""",
+ generic_args)
+
+ # print("--------------------")
+ # print(main_query)
+
+ cur.execute(main_query)
+
+ if count_only:
+ return helper.dict_to_camel_case(cur.fetchone())
+ sessions = []
+ total = cur.rowcount
+ row = cur.fetchone()
+ limit = 200
+ while row is not None and len(sessions) < limit:
+ if row.get("favorite"):
+ limit += 1
+ sessions.append(row)
+ row = cur.fetchone()
+
+ if errors_only:
+ return sessions
+ if data.get("sort") is not None and data["sort"] != "session_id":
+ sessions = sorted(sessions, key=lambda s: s[helper.key_to_snake_case(data["sort"])],
+ reverse=data.get("order", "DESC").upper() == "DESC")
+ return {
+ 'total': total,
+ 'sessions': helper.list_to_camel_case(sessions)
+ }
+
+
+def search_by_metadata(tenant_id, user_id, m_key, m_value, project_id=None):
+ if project_id is None:
+ all_projects = projects.get_projects(tenant_id=tenant_id, recording_state=False)
+ else:
+ all_projects = [
+ projects.get_project(tenant_id=tenant_id, project_id=int(project_id), include_last_session=False,
+ include_gdpr=False)]
+
+ all_projects = {int(p["projectId"]): p["name"] for p in all_projects}
+ project_ids = list(all_projects.keys())
+
+ available_keys = metadata.get_keys_by_projects(project_ids)
+ for i in available_keys:
+ available_keys[i]["user_id"] = sessions_metas.meta_type.USERID
+ available_keys[i]["user_anonymous_id"] = sessions_metas.meta_type.USERANONYMOUSID
+ results = {}
+ for i in project_ids:
+ if m_key not in available_keys[i].values():
+ available_keys.pop(i)
+ results[i] = {"total": 0, "sessions": [], "missingMetadata": True}
+ project_ids = list(available_keys.keys())
+ if len(project_ids) > 0:
+ with pg_client.PostgresClient() as cur:
+ sub_queries = []
+ for i in project_ids:
+ col_name = list(available_keys[i].keys())[list(available_keys[i].values()).index(m_key)]
+ sub_queries.append(cur.mogrify(
+ f"(SELECT COALESCE(COUNT(s.*)) AS count FROM public.sessions AS s WHERE s.project_id = %(id)s AND s.{col_name} = %(value)s) AS \"{i}\"",
+ {"id": i, "value": m_value}).decode('UTF-8'))
+ query = f"""SELECT {", ".join(sub_queries)};"""
+ cur.execute(query=query)
+
+ rows = cur.fetchone()
+
+ sub_queries = []
+ for i in rows.keys():
+ results[i] = {"total": rows[i], "sessions": [], "missingMetadata": False, "name": all_projects[int(i)]}
+ if rows[i] > 0:
+ col_name = list(available_keys[int(i)].keys())[list(available_keys[int(i)].values()).index(m_key)]
+ sub_queries.append(
+ cur.mogrify(
+ f"""(
+ SELECT *
+ FROM (
+ SELECT DISTINCT ON(favorite_sessions.session_id, s.session_id) {SESSION_PROJECTION_COLS}
+ FROM public.sessions AS s LEFT JOIN (SELECT session_id
+ FROM public.user_favorite_sessions
+ WHERE user_favorite_sessions.user_id = %(userId)s
+ ) AS favorite_sessions USING (session_id)
+ WHERE s.project_id = %(id)s AND s.duration IS NOT NULL AND s.{col_name} = %(value)s
+ ) AS full_sessions
+ ORDER BY favorite DESC, issue_score DESC
+ LIMIT 10
+ )""",
+ {"id": i, "value": m_value, "userId": user_id}).decode('UTF-8'))
+ if len(sub_queries) > 0:
+ cur.execute("\nUNION\n".join(sub_queries))
+ rows = cur.fetchall()
+ for i in rows:
+ results[str(i["project_id"])]["sessions"].append(helper.dict_to_camel_case(i))
+ return results
+
+
+def search_by_issue(user_id, issue, project_id, start_date, end_date):
+ constraints = ["s.project_id = %(projectId)s",
+ "p_issues.context_string = %(issueContextString)s",
+ "p_issues.type = %(issueType)s"]
+ if start_date is not None:
+ constraints.append("start_ts >= %(startDate)s")
+ if end_date is not None:
+ constraints.append("start_ts <= %(endDate)s")
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT DISTINCT ON(favorite_sessions.session_id, s.session_id) {SESSION_PROJECTION_COLS}
+ FROM public.sessions AS s
+ INNER JOIN events_common.issues USING (session_id)
+ INNER JOIN public.issues AS p_issues USING (issue_id)
+ LEFT JOIN (SELECT user_id, session_id
+ FROM public.user_favorite_sessions
+ WHERE user_id = %(userId)s) AS favorite_sessions
+ USING (session_id)
+ WHERE {" AND ".join(constraints)}
+ ORDER BY s.session_id DESC;""",
+ {
+ "issueContextString": issue["contextString"],
+ "issueType": issue["type"], "userId": user_id,
+ "projectId": project_id,
+ "startDate": start_date,
+ "endDate": end_date
+ }))
+
+ rows = cur.fetchall()
+ return helper.list_to_camel_case(rows)
+
+
+def get_favorite_sessions(project_id, user_id, include_viewed=False):
+ with pg_client.PostgresClient() as cur:
+ query_part = cur.mogrify(f"""\
+ FROM public.sessions AS s
+ LEFT JOIN public.user_favorite_sessions AS fs ON fs.session_id = s.session_id
+ WHERE fs.user_id = %(userId)s""",
+ {"projectId": project_id, "userId": user_id}
+ )
+
+ extra_query = b""
+ if include_viewed:
+ extra_query = cur.mogrify(""",\
+ COALESCE((SELECT TRUE
+ FROM public.user_viewed_sessions AS fs
+ WHERE s.session_id = fs.session_id
+ AND fs.user_id = %(userId)s), FALSE) AS viewed""",
+ {"projectId": project_id, "userId": user_id})
+
+ cur.execute(f"""\
+ SELECT s.project_id,
+ s.session_id::text AS session_id,
+ s.user_uuid,
+ s.user_id,
+ s.user_agent,
+ s.user_os,
+ s.user_browser,
+ s.user_device,
+ s.user_country,
+ s.start_ts,
+ s.duration,
+ s.events_count,
+ s.pages_count,
+ s.errors_count,
+ TRUE AS favorite
+ {extra_query.decode('UTF-8')}
+ {query_part.decode('UTF-8')}
+ ORDER BY s.session_id
+ LIMIT 50;""")
+
+ sessions = cur.fetchall()
+ return helper.list_to_camel_case(sessions)
diff --git a/api/chalicelib/core/sessions_assignments.py b/api/chalicelib/core/sessions_assignments.py
new file mode 100644
index 000000000..2b9c28d8f
--- /dev/null
+++ b/api/chalicelib/core/sessions_assignments.py
@@ -0,0 +1,158 @@
+from chalicelib.utils.helper import environ as env
+from chalicelib.utils import helper
+from chalicelib.utils.TimeUTC import TimeUTC
+from chalicelib.utils import pg_client
+from chalicelib.core import integrations_manager, integration_base_issue
+import json
+
+
+def __get_saved_data(project_id, session_id, issue_id, tool):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ SELECT *
+ FROM public.assigned_sessions
+ WHERE
+ session_id = %(session_id)s
+ AND issue_id = %(issue_id)s
+ AND provider = %(provider)s;\
+ """,
+ {"session_id": session_id, "issue_id": issue_id, "provider": tool.lower()})
+ cur.execute(
+ query
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def create_new_assignment(tenant_id, project_id, session_id, creator_id, assignee, description, title, issue_type, integration_project_id):
+ error, integration = integrations_manager.get_integration(tenant_id=tenant_id, user_id=creator_id)
+ if error is not None:
+ return error
+
+ i = integration.get()
+
+ if i is None:
+ return {"errors": [f"integration not found"]}
+ link = env["SITE_URL"] + f"/{project_id}/session/{session_id}"
+ description += f"\n> {link}"
+ try:
+ issue = integration.issue_handler.create_new_assignment(title=title, assignee=assignee, description=description,
+ issue_type=issue_type,
+ integration_project_id=integration_project_id)
+ except integration_base_issue.RequestException as e:
+ return integration_base_issue.proxy_issues_handler(e)
+ if issue is not None and "id" not in issue:
+ return {"errors": ["something went wrong while creating the issue"]}
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify("""\
+ INSERT INTO public.assigned_sessions(session_id, issue_id, created_by, provider,provider_data)
+ VALUES (%(session_id)s, %(issue_id)s, %(creator_id)s, %(provider)s,%(provider_data)s);\
+ """,
+ {"session_id": session_id, "creator_id": creator_id,
+ "issue_id": issue["id"], "provider": integration.provider.lower(),
+ "provider_data": json.dumps({"integrationProjectId": integration_project_id})})
+ cur.execute(
+ query
+ )
+ issue["provider"] = integration.provider.lower()
+ return issue
+
+
+def get_all(project_id, user_id):
+ available_integrations = integrations_manager.get_available_integrations(user_id=user_id)
+ no_integration = not any(available_integrations.values())
+ if no_integration:
+ return []
+ all_integrations = all(available_integrations.values())
+ extra_query = ["sessions.project_id = %(project_id)s"]
+ if not all_integrations:
+ extra_query.append("provider IN %(providers)s")
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ SELECT assigned_sessions.*
+ FROM public.assigned_sessions
+ INNER JOIN public.sessions USING (session_id)
+ WHERE {" AND ".join(extra_query)};\
+""",
+ {"project_id": project_id,
+ "providers": tuple(d for d in available_integrations if available_integrations[d])})
+ cur.execute(
+ query
+ )
+ assignments = helper.list_to_camel_case(cur.fetchall())
+ for a in assignments:
+ a["createdAt"] = TimeUTC.datetime_to_timestamp(a["createdAt"])
+ return assignments
+
+
+def get_by_session(tenant_id, user_id, project_id, session_id):
+ available_integrations = integrations_manager.get_available_integrations(user_id=user_id)
+ if not any(available_integrations.values()):
+ return []
+ extra_query = ["session_id = %(session_id)s", "provider IN %(providers)s"]
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ SELECT *
+ FROM public.assigned_sessions
+ WHERE {" AND ".join(extra_query)};""",
+ {"session_id": session_id,
+ "providers": tuple([k for k in available_integrations if available_integrations[k]])})
+ cur.execute(
+ query
+ )
+ results = cur.fetchall()
+ issues = {}
+ for i in results:
+ if i["provider"] not in issues.keys():
+ issues[i["provider"]] = []
+
+ issues[i["provider"]].append({"integrationProjectId": i["provider_data"]["integrationProjectId"],
+ "id": i["issue_id"]})
+ results = []
+ for tool in issues.keys():
+ error, integration = integrations_manager.get_integration(tool=tool, tenant_id=tenant_id, user_id=user_id)
+ if error is not None:
+ return error
+
+ i = integration.get()
+ if i is None:
+ print("integration not found")
+ continue
+
+ r = integration.issue_handler.get_by_ids(saved_issues=issues[tool])
+ print(r)
+ for i in r["issues"]:
+ i["provider"] = tool
+ results += r["issues"]
+ return results
+
+
+def get(tenant_id, user_id, project_id, session_id, assignment_id):
+ error, integration = integrations_manager.get_integration(tenant_id=tenant_id, user_id=user_id)
+ if error is not None:
+ return error
+ l = __get_saved_data(project_id, session_id, assignment_id, tool=integration.provider)
+ if l is None:
+ return {"errors": ["issue not found"]}
+ i = integration.get()
+ if i is None:
+ return {"errors": ["integration not found"]}
+ r = integration.issue_handler.get(integration_project_id=l["providerData"]["integrationProjectId"],
+ assignment_id=assignment_id)
+
+ r["provider"] = integration.provider.lower()
+ return r
+
+
+def comment(tenant_id, user_id, project_id, session_id, assignment_id, message):
+ error, integration = integrations_manager.get_integration(tenant_id=tenant_id, user_id=user_id)
+ if error is not None:
+ return error
+ i = integration.get()
+
+ if i is None:
+ return {"errors": [f"integration not found"]}
+ l = __get_saved_data(project_id, session_id, assignment_id, tool=integration.provider)
+
+ return integration.issue_handler.comment(integration_project_id=l["providerData"]["integrationProjectId"],
+ assignment_id=assignment_id,
+ comment=message)
diff --git a/api/chalicelib/core/sessions_favorite_viewed.py b/api/chalicelib/core/sessions_favorite_viewed.py
new file mode 100644
index 000000000..1239156ab
--- /dev/null
+++ b/api/chalicelib/core/sessions_favorite_viewed.py
@@ -0,0 +1,89 @@
+from chalicelib.utils import pg_client
+from chalicelib.core import sessions
+
+
+def add_favorite_session(project_id, user_id, session_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ INSERT INTO public.user_favorite_sessions
+ (user_id, session_id)
+ VALUES
+ (%(userId)s,%(sessionId)s);""",
+ {"userId": user_id, "sessionId": session_id})
+ )
+ return sessions.get_by_id2_pg(project_id=project_id, session_id=session_id, user_id=user_id, full_data=False,
+ include_fav_viewed=True)
+
+
+def remove_favorite_session(project_id, user_id, session_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ DELETE FROM public.user_favorite_sessions
+ WHERE
+ user_id = %(userId)s
+ AND session_id = %(sessionId)s;""",
+ {"userId": user_id, "sessionId": session_id})
+ )
+ return sessions.get_by_id2_pg(project_id=project_id, session_id=session_id, user_id=user_id, full_data=False,
+ include_fav_viewed=True)
+
+
+def add_viewed_session(project_id, user_id, session_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ INSERT INTO public.user_viewed_sessions
+ (user_id, session_id)
+ VALUES
+ (%(userId)s,%(sessionId)s);""",
+ {"userId": user_id, "sessionId": session_id})
+ )
+
+
+def favorite_session(project_id, user_id, session_id):
+ if favorite_session_exists(user_id=user_id, session_id=session_id):
+ return remove_favorite_session(project_id=project_id, user_id=user_id, session_id=session_id)
+
+ return add_favorite_session(project_id=project_id, user_id=user_id, session_id=session_id)
+
+
+def view_session(project_id, user_id, session_id):
+ if viewed_session_exists(user_id=user_id, session_id=session_id):
+ return None
+ return add_viewed_session(project_id=project_id, user_id=user_id, session_id=session_id)
+
+
+def favorite_session_exists(user_id, session_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """SELECT
+ session_id
+ FROM public.user_favorite_sessions
+ WHERE
+ user_id = %(userId)s
+ AND session_id = %(sessionId)s""",
+ {"userId": user_id, "sessionId": session_id})
+ )
+ r = cur.fetchone()
+ return r is not None
+
+
+def viewed_session_exists(user_id, session_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ """SELECT
+ session_id
+ FROM public.user_viewed_sessions
+ WHERE
+ user_id = %(userId)s
+ AND session_id = %(sessionId)s""",
+ {"userId": user_id, "sessionId": session_id})
+ )
+ r = cur.fetchone()
+ if r:
+ return True
+ return False
diff --git a/api/chalicelib/core/sessions_metas.py b/api/chalicelib/core/sessions_metas.py
new file mode 100644
index 000000000..a21b78783
--- /dev/null
+++ b/api/chalicelib/core/sessions_metas.py
@@ -0,0 +1,226 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.utils.event_filter_definition import SupportedFilter
+
+
+def get_key_values(project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""\
+ SELECT ARRAY_AGG(DISTINCT s.user_os
+ ORDER BY s.user_os) FILTER ( WHERE s.user_os IS NOT NULL AND s.platform='web') AS {meta_type.USEROS},
+ ARRAY_AGG(DISTINCT s.user_browser
+ ORDER BY s.user_browser)
+ FILTER ( WHERE s.user_browser IS NOT NULL AND s.platform='web') AS {meta_type.USERBROWSER},
+ ARRAY_AGG(DISTINCT s.user_device
+ ORDER BY s.user_device)
+ FILTER ( WHERE s.user_device IS NOT NULL AND s.user_device != '' AND s.platform='web') AS {meta_type.USERDEVICE},
+ ARRAY_AGG(DISTINCT s.user_country
+ ORDER BY s.user_country)
+ FILTER ( WHERE s.user_country IS NOT NULL AND s.platform='web')::text[] AS {meta_type.USERCOUNTRY},
+ ARRAY_AGG(DISTINCT s.user_id
+ ORDER BY s.user_id) FILTER ( WHERE s.user_id IS NOT NULL AND s.user_id != 'none' AND s.user_id != '' AND s.platform='web') AS {meta_type.USERID},
+ ARRAY_AGG(DISTINCT s.user_anonymous_id
+ ORDER BY s.user_anonymous_id) FILTER ( WHERE s.user_anonymous_id IS NOT NULL AND s.user_anonymous_id != 'none' AND s.user_anonymous_id != '' AND s.platform='web') AS {meta_type.USERANONYMOUSID},
+ ARRAY_AGG(DISTINCT s.rev_id
+ ORDER BY s.rev_id) FILTER ( WHERE s.rev_id IS NOT NULL AND s.platform='web') AS {meta_type.REVID},
+ ARRAY_AGG(DISTINCT p.referrer
+ ORDER BY p.referrer)
+ FILTER ( WHERE p.referrer != '' ) AS {meta_type.REFERRER},
+
+ ARRAY_AGG(DISTINCT s.user_os
+ ORDER BY s.user_os) FILTER ( WHERE s.user_os IS NOT NULL AND s.platform='ios' ) AS {meta_type.USEROS_IOS},
+ ARRAY_AGG(DISTINCT s.user_device
+ ORDER BY s.user_device)
+ FILTER ( WHERE s.user_device IS NOT NULL AND s.user_device != '' AND s.platform='ios') AS {meta_type.USERDEVICE},
+ ARRAY_AGG(DISTINCT s.user_country
+ ORDER BY s.user_country)
+ FILTER ( WHERE s.user_country IS NOT NULL AND s.platform='ios')::text[] AS {meta_type.USERCOUNTRY_IOS},
+ ARRAY_AGG(DISTINCT s.user_id
+ ORDER BY s.user_id) FILTER ( WHERE s.user_id IS NOT NULL AND s.user_id != 'none' AND s.user_id != '' AND s.platform='ios') AS {meta_type.USERID_IOS},
+ ARRAY_AGG(DISTINCT s.user_anonymous_id
+ ORDER BY s.user_anonymous_id) FILTER ( WHERE s.user_anonymous_id IS NOT NULL AND s.user_anonymous_id != 'none' AND s.user_anonymous_id != '' AND s.platform='ios') AS {meta_type.USERANONYMOUSID_IOS},
+ ARRAY_AGG(DISTINCT s.rev_id
+ ORDER BY s.rev_id) FILTER ( WHERE s.rev_id IS NOT NULL AND s.platform='ios') AS {meta_type.REVID_IOS}
+ FROM public.sessions AS s
+ LEFT JOIN events.pages AS p USING (session_id)
+ WHERE s.project_id = %(site_id)s;""",
+ {"site_id": project_id}
+ )
+ )
+
+ row = cur.fetchone()
+ for k in row.keys():
+ if row[k] is None:
+ row[k] = []
+ elif len(row[k]) > 500:
+ row[k] = row[k][:500]
+ return helper.dict_to_CAPITAL_keys(row)
+
+
+def get_top_key_values(project_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""\
+ SELECT {",".join([f"ARRAY((SELECT value FROM public.autocomplete WHERE project_id = %(site_id)s AND type='{k}' GROUP BY value ORDER BY COUNT(*) DESC LIMIT %(limit)s)) AS {k}" for k in SUPPORTED_TYPES.keys()])};""",
+ {"site_id": project_id, "limit": 5}
+ )
+ )
+
+ row = cur.fetchone()
+ return helper.dict_to_CAPITAL_keys(row)
+
+
+def __generic_query(typename):
+ return f"""\
+ SELECT value, type
+ FROM ((SELECT value, type
+ FROM public.autocomplete
+ WHERE
+ project_id = %(project_id)s
+ AND type ='{typename}'
+ AND value ILIKE %(svalue)s
+ ORDER BY value
+ LIMIT 5)
+ UNION
+ (SELECT value, type
+ FROM public.autocomplete
+ WHERE
+ project_id = %(project_id)s
+ AND type ='{typename}'
+ AND value ILIKE %(value)s
+ ORDER BY value
+ LIMIT 5)) AS met"""
+
+
+def __generic_autocomplete(typename):
+ def f(project_id, text):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(__generic_query(typename),
+ {"project_id": project_id, "value": helper.string_to_sql_like(text),
+ "svalue": helper.string_to_sql_like("^" + text)})
+
+ cur.execute(query)
+ rows = cur.fetchall()
+ return rows
+
+ return f
+
+
+class meta_type:
+ USEROS = "USEROS"
+ USERBROWSER = "USERBROWSER"
+ USERDEVICE = "USERDEVICE"
+ USERCOUNTRY = "USERCOUNTRY"
+ USERID = "USERID"
+ USERANONYMOUSID = "USERANONYMOUSID"
+ REFERRER = "REFERRER"
+ REVID = "REVID"
+ # IOS
+ USEROS_IOS = "USEROS_IOS"
+ USERDEVICE_IOS = "USERDEVICE_IOS"
+ USERCOUNTRY_IOS = "USERCOUNTRY_IOS"
+ USERID_IOS = "USERID_IOS"
+ USERANONYMOUSID_IOS = "USERANONYMOUSID_IOS"
+ REVID_IOS = "REVID_IOS"
+
+
+SUPPORTED_TYPES = {
+ meta_type.USEROS: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USEROS),
+ query=__generic_query(typename=meta_type.USEROS),
+ value_limit=0,
+ starts_with="",
+ starts_limit=0,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERBROWSER: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERBROWSER),
+ query=__generic_query(typename=meta_type.USERBROWSER),
+ value_limit=0,
+ starts_with="",
+ starts_limit=0,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERDEVICE: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERDEVICE),
+ query=__generic_query(typename=meta_type.USERDEVICE),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERCOUNTRY: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERCOUNTRY),
+ query=__generic_query(typename=meta_type.USERCOUNTRY),
+ value_limit=2,
+ starts_with="",
+ starts_limit=2,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERID: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERID),
+ query=__generic_query(typename=meta_type.USERID),
+ value_limit=2,
+ starts_with="",
+ starts_limit=2,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERANONYMOUSID: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERANONYMOUSID),
+ query=__generic_query(typename=meta_type.USERANONYMOUSID),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ meta_type.REVID: SupportedFilter(get=__generic_autocomplete(typename=meta_type.REVID),
+ query=__generic_query(typename=meta_type.REVID),
+ value_limit=0,
+ starts_with="",
+ starts_limit=0,
+ ignore_if_starts_with=["/"]),
+ meta_type.REFERRER: SupportedFilter(get=__generic_autocomplete(typename=meta_type.REFERRER),
+ query=__generic_query(typename=meta_type.REFERRER),
+ value_limit=5,
+ starts_with="/",
+ starts_limit=5,
+ ignore_if_starts_with=[]),
+ # IOS
+ meta_type.USEROS_IOS: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USEROS_IOS),
+ query=__generic_query(typename=meta_type.USEROS_IOS),
+ value_limit=0,
+ starts_with="",
+ starts_limit=0,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERDEVICE_IOS: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERDEVICE_IOS),
+ query=__generic_query(typename=meta_type.USERDEVICE_IOS),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERCOUNTRY_IOS: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERCOUNTRY_IOS),
+ query=__generic_query(typename=meta_type.USERCOUNTRY_IOS),
+ value_limit=2,
+ starts_with="",
+ starts_limit=2,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERID_IOS: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERID_IOS),
+ query=__generic_query(typename=meta_type.USERID_IOS),
+ value_limit=2,
+ starts_with="",
+ starts_limit=2,
+ ignore_if_starts_with=["/"]),
+ meta_type.USERANONYMOUSID_IOS: SupportedFilter(get=__generic_autocomplete(typename=meta_type.USERANONYMOUSID_IOS),
+ query=__generic_query(typename=meta_type.USERANONYMOUSID_IOS),
+ value_limit=3,
+ starts_with="",
+ starts_limit=3,
+ ignore_if_starts_with=["/"]),
+ meta_type.REVID_IOS: SupportedFilter(get=__generic_autocomplete(typename=meta_type.REVID_IOS),
+ query=__generic_query(typename=meta_type.REVID_IOS),
+ value_limit=0,
+ starts_with="",
+ starts_limit=0,
+ ignore_if_starts_with=["/"]),
+
+}
+
+
+def search(text, meta_type, project_id):
+ rows = []
+ if meta_type.upper() not in list(SUPPORTED_TYPES.keys()):
+ return {"errors": ["unsupported type"]}
+ rows += SUPPORTED_TYPES[meta_type.upper()].get(project_id=project_id, text=text)
+ if meta_type.upper() + "_IOS" in list(SUPPORTED_TYPES.keys()):
+ rows += SUPPORTED_TYPES[meta_type.upper() + "_IOS"].get(project_id=project_id, text=text)
+ return {"data": rows}
diff --git a/api/chalicelib/core/sessions_mobs.py b/api/chalicelib/core/sessions_mobs.py
new file mode 100644
index 000000000..7c3e7fd0a
--- /dev/null
+++ b/api/chalicelib/core/sessions_mobs.py
@@ -0,0 +1,25 @@
+from chalicelib.utils.helper import environ
+
+import boto3
+
+
+def get_web(sessionId):
+ return boto3.client('s3', region_name=environ["sessions_region"]).generate_presigned_url(
+ 'get_object',
+ Params={
+ 'Bucket': environ["sessions_bucket"],
+ 'Key': sessionId
+ },
+ ExpiresIn=100000
+ )
+
+
+def get_ios(sessionId):
+ return boto3.client('s3', region_name=environ["ios_region"]).generate_presigned_url(
+ 'get_object',
+ Params={
+ 'Bucket': environ["ios_bucket"],
+ 'Key': sessionId
+ },
+ ExpiresIn=100000
+ )
diff --git a/api/chalicelib/core/significance.py b/api/chalicelib/core/significance.py
new file mode 100644
index 000000000..8bcda04a7
--- /dev/null
+++ b/api/chalicelib/core/significance.py
@@ -0,0 +1,627 @@
+__author__ = "AZNAUROV David"
+__maintainer__ = "KRAIEM Taha Yassine"
+
+from chalicelib.core import events, sessions_metas, metadata, sessions
+from chalicelib.utils import dev
+
+"""
+todo: remove LIMIT from the query
+"""
+
+from typing import List
+import math
+import warnings
+from collections import defaultdict
+
+from psycopg2.extras import RealDictRow
+from chalicelib.utils import pg_client, helper
+
+SIGNIFICANCE_THRSH = 0.4
+
+T_VALUES = {1: 12.706, 2: 4.303, 3: 3.182, 4: 2.776, 5: 2.571, 6: 2.447, 7: 2.365, 8: 2.306, 9: 2.262, 10: 2.228,
+ 11: 2.201, 12: 2.179, 13: 2.160, 14: 2.145, 15: 2.13, 16: 2.120, 17: 2.110, 18: 2.101, 19: 2.093, 20: 2.086,
+ 21: 2.080, 22: 2.074, 23: 2.069, 25: 2.064, 26: 2.060, 27: 2.056, 28: 2.052, 29: 2.045, 30: 2.042}
+
+
+@dev.timed
+def get_stages_and_events(filter_d, project_id) -> List[RealDictRow]:
+ """
+ Add minimal timestamp
+ :param filter_d: dict contains events&filters&...
+ :return:
+ """
+ stages = filter_d["events"]
+ filters = filter_d.get("filters", [])
+ filter_issues = filter_d.get("issueTypes")
+ if filter_issues is None or len(filter_issues) == 0:
+ filter_issues = []
+ stage_constraints = ["main.timestamp <= %(endTimestamp)s"]
+ first_stage_extra_constraints = ["s.project_id=%(project_id)s", "s.start_ts >= %(startTimestamp)s",
+ "s.start_ts <= %(endTimestamp)s"]
+ extra_from = ""
+ n_stages_query = []
+ values = {}
+ if len(filters) > 0:
+ meta_keys = metadata.get(project_id=project_id)
+ meta_keys = {m["key"]: m["index"] for m in meta_keys}
+ for i, f in enumerate(filters):
+ if not isinstance(f.get("value"), list):
+ if isinstance(f.get("value"), tuple):
+ f["value"] = list(f.get("value"))
+ else:
+ f["value"] = [f.get("value")]
+ if len(f["value"]) == 0 or f["value"][0] is None:
+ continue
+ filter_type = f["type"].upper()
+ values[f"f_value_{i}"] = sessions.__get_sql_value_multiple(f["value"])
+ if filter_type == sessions_metas.meta_type.USERBROWSER:
+ op = sessions.__get_sql_operator_multiple(f["operator"])
+ first_stage_extra_constraints.append(f's.user_browser {op} %({f"f_value_{i}"})s')
+
+ elif filter_type in [sessions_metas.meta_type.USEROS, sessions_metas.meta_type.USEROS_IOS]:
+ op = sessions.__get_sql_operator_multiple(f["operator"])
+ first_stage_extra_constraints.append(f's.user_os {op} %({f"f_value_{i}"})s')
+
+ elif filter_type in [sessions_metas.meta_type.USERDEVICE, sessions_metas.meta_type.USERDEVICE_IOS]:
+ op = sessions.__get_sql_operator_multiple(f["operator"])
+ first_stage_extra_constraints.append(f's.user_device {op} %({f"f_value_{i}"})s')
+
+ elif filter_type in [sessions_metas.meta_type.USERCOUNTRY, sessions_metas.meta_type.USERCOUNTRY_IOS]:
+ op = sessions.__get_sql_operator_multiple(f["operator"])
+ first_stage_extra_constraints.append(f's.user_country {op} %({f"f_value_{i}"})s')
+ elif filter_type == "duration".upper():
+ if len(f["value"]) > 0 and f["value"][0] is not None:
+ first_stage_extra_constraints.append(f's.duration >= %({f"f_value_{i}"})s')
+ values[f"f_value_{i}"] = f["value"][0]
+ if len(f["value"]) > 1 and f["value"][1] is not None and f["value"][1] > 0:
+ first_stage_extra_constraints.append('s.duration <= %({f"f_value_{i}"})s')
+ values[f"f_value_{i}"] = f["value"][1]
+ elif filter_type == sessions_metas.meta_type.REFERRER:
+ # events_query_part = events_query_part + f"INNER JOIN events.pages AS p USING(session_id)"
+ extra_from += f"INNER JOIN {events.event_type.LOCATION.table} AS p USING(session_id)"
+ op = sessions.__get_sql_operator_multiple(f["operator"])
+ first_stage_extra_constraints.append(f"p.base_referrer {op} %(referrer)s")
+ elif filter_type == events.event_type.METADATA.ui_type:
+ op = sessions.__get_sql_operator(f["operator"])
+ if f.get("key") in meta_keys.keys():
+ first_stage_extra_constraints.append(
+ f's.{metadata.index_to_colname(meta_keys[f["key"]])} {op} %({f"f_value_{i}"})s')
+ values[f"f_value_{i}"] = helper.string_to_sql_like_with_op(f["value"][0], op)
+ elif filter_type in [sessions_metas.meta_type.USERID, sessions_metas.meta_type.USERID_IOS]:
+ op = sessions.__get_sql_operator(f["operator"])
+ first_stage_extra_constraints.append(f's.user_id {op} %({f"f_value_{i}"})s')
+ values[f"f_value_{i}"] = helper.string_to_sql_like_with_op(f["value"][0], op)
+ elif filter_type in [sessions_metas.meta_type.USERANONYMOUSID,
+ sessions_metas.meta_type.USERANONYMOUSID_IOS]:
+ op = sessions.__get_sql_operator(f["operator"])
+ first_stage_extra_constraints.append(f's.user_anonymous_id {op} %({f"f_value_{i}"})s')
+ values[f"f_value_{i}"] = helper.string_to_sql_like_with_op(f["value"][0], op)
+ elif filter_type in [sessions_metas.meta_type.REVID, sessions_metas.meta_type.REVID_IOS]:
+ op = sessions.__get_sql_operator(f["operator"])
+ first_stage_extra_constraints.append(f's.rev_id {op} %({f"f_value_{i}"})s')
+ values[f"f_value_{i}"] = helper.string_to_sql_like_with_op(f["value"][0], op)
+
+ for i, s in enumerate(stages):
+ if i == 0:
+ extra_from = ["INNER JOIN public.sessions AS s USING (session_id)"]
+ else:
+ extra_from = []
+ if s.get("operator") is None:
+ s["operator"] = "is"
+ op = sessions.__get_sql_operator(s["operator"])
+ event_type = s["type"].upper()
+ next_label = s["value"]
+ if event_type == events.event_type.CLICK.ui_type:
+ next_table = events.event_type.CLICK.table
+ next_col_name = events.event_type.CLICK.column
+ elif event_type == events.event_type.INPUT.ui_type:
+ next_table = events.event_type.INPUT.table
+ next_col_name = events.event_type.INPUT.column
+ elif event_type == events.event_type.LOCATION.ui_type:
+ next_table = events.event_type.LOCATION.table
+ next_col_name = events.event_type.LOCATION.column
+ elif event_type == events.event_type.CUSTOM.ui_type:
+ next_table = events.event_type.CUSTOM.table
+ next_col_name = events.event_type.CUSTOM.column
+ # IOS --------------
+ elif event_type == events.event_type.CLICK_IOS.ui_type:
+ next_table = events.event_type.CLICK_IOS.table
+ next_col_name = events.event_type.CLICK_IOS.column
+ elif event_type == events.event_type.INPUT_IOS.ui_type:
+ next_table = events.event_type.INPUT_IOS.table
+ next_col_name = events.event_type.INPUT_IOS.column
+ elif event_type == events.event_type.VIEW_IOS.ui_type:
+ next_table = events.event_type.VIEW_IOS.table
+ next_col_name = events.event_type.VIEW_IOS.column
+ elif event_type == events.event_type.CUSTOM_IOS.ui_type:
+ next_table = events.event_type.CUSTOM_IOS.table
+ next_col_name = events.event_type.CUSTOM_IOS.column
+ else:
+ print("=================UNDEFINED")
+ continue
+
+ values[f"value{i + 1}"] = helper.string_to_sql_like_with_op(next_label, op)
+ if sessions.__is_negation_operator(op) and i > 0:
+ op = sessions.__reverse_sql_operator(op)
+ main_condition = "left_not.session_id ISNULL"
+ extra_from.append(f"""LEFT JOIN LATERAL (SELECT session_id
+ FROM {next_table} AS s_main
+ WHERE s_main.{next_col_name} {op} %(value{i + 1})s
+ AND s_main.timestamp >= T{i}.stage{i}_timestamp
+ AND s_main.session_id = T1.session_id) AS left_not ON (TRUE)""")
+ else:
+ main_condition = f"""main.{next_col_name} {op} %(value{i + 1})s"""
+ n_stages_query.append(f"""
+ (SELECT main.session_id,
+ {"MIN(main.timestamp)" if i + 1 < len(stages) else "MAX(main.timestamp)"} AS stage{i + 1}_timestamp,
+ '{event_type}' AS type,
+ '{s["operator"]}' AS operator
+ FROM {next_table} AS main {" ".join(extra_from)}
+ WHERE main.timestamp >= {f"T{i}.stage{i}_timestamp" if i > 0 else "%(startTimestamp)s"}
+ {f"AND main.session_id=T1.session_id" if i > 0 else ""}
+ AND {main_condition}
+ {(" AND " + " AND ".join(stage_constraints)) if len(stage_constraints) > 0 else ""}
+ {(" AND " + " AND ".join(first_stage_extra_constraints)) if len(first_stage_extra_constraints) > 0 and i == 0 else ""}
+ GROUP BY main.session_id)
+ AS T{i + 1} {"USING (session_id)" if i > 0 else ""}
+ """)
+ if len(n_stages_query) == 0:
+ return []
+ n_stages_query = " LEFT JOIN LATERAL ".join(n_stages_query)
+ n_stages_query += ") AS stages_t"
+
+ n_stages_query = f"""
+ SELECT stages_and_issues_t.*,sessions.session_id, sessions.user_uuid FROM (
+ SELECT * FROM (
+ SELECT * FROM
+ {n_stages_query}
+ LEFT JOIN LATERAL
+ (
+ SELECT * FROM
+ (SELECT ISE.session_id,
+ ISS.type as issue_type,
+ ISE.timestamp AS issue_timestamp,
+ ISS.context_string as issue_context,
+ ISS.issue_id as issue_id
+ FROM events_common.issues AS ISE INNER JOIN issues AS ISS USING (issue_id)
+ WHERE ISE.timestamp >= stages_t.stage1_timestamp
+ AND ISE.timestamp <= stages_t.stage{len(stages)}_timestamp
+ AND ISS.project_id=%(project_id)s
+ {"AND ISS.type IN %(issueTypes)s" if len(filter_issues) > 0 else ""}) AS base_t
+ ) AS issues_t
+ USING (session_id)) AS stages_and_issues_t
+ inner join sessions USING(session_id);
+ """
+
+ # LIMIT 10000
+ params = {"project_id": project_id, "startTimestamp": filter_d["startDate"], "endTimestamp": filter_d["endDate"],
+ "issueTypes": tuple(filter_issues), **values}
+ with pg_client.PostgresClient() as cur:
+ # print("---------------------------------------------------")
+ # print(cur.mogrify(n_stages_query, params))
+ # print("---------------------------------------------------")
+ cur.execute(cur.mogrify(n_stages_query, params))
+ rows = cur.fetchall()
+ return rows
+
+
+def pearson_corr(x: list, y: list):
+ n = len(x)
+ if n != len(y):
+ raise ValueError(f'x and y must have the same length. Got {len(x)} and {len(y)} instead')
+
+ if n < 2:
+ warnings.warn(f'x and y must have length at least 2. Got {n} instead')
+ return None, None, False
+
+ # If an input is constant, the correlation coefficient is not defined.
+ if all(t == x[0] for t in x) or all(t == y[0] for t in y):
+ warnings.warn("An input array is constant; the correlation coefficent is not defined.")
+ return None, None, False
+
+ if n == 2:
+ return math.copysign(1, x[1] - x[0]) * math.copysign(1, y[1] - y[0]), 1.0
+
+ xmean = sum(x) / len(x)
+ ymean = sum(y) / len(y)
+
+ xm = [el - xmean for el in x]
+ ym = [el - ymean for el in y]
+
+ normxm = math.sqrt((sum([xm[i] * xm[i] for i in range(len(xm))])))
+ normym = math.sqrt((sum([ym[i] * ym[i] for i in range(len(ym))])))
+
+ threshold = 1e-8
+ if normxm < threshold * abs(xmean) or normym < threshold * abs(ymean):
+ # If all the values in x (likewise y) are very close to the mean,
+ # the loss of precision that occurs in the subtraction xm = x - xmean
+ # might result in large errors in r.
+ warnings.warn("An input array is constant; the correlation coefficent is not defined.")
+
+ r = sum(
+ i[0] * i[1] for i in zip([xm[i] / normxm for i in range(len(xm))], [ym[i] / normym for i in range(len(ym))]))
+
+ # Presumably, if abs(r) > 1, then it is only some small artifact of floating point arithmetic.
+ # However, if r < 0, we don't care, as our problem is to find only positive correlations
+ r = max(min(r, 1.0), 0.0)
+
+ # approximated confidence
+ if n < 31:
+ t_c = T_VALUES[n]
+ elif n < 50:
+ t_c = 2.02
+ else:
+ t_c = 2
+ if r >= 0.999:
+ confidence = 1
+ else:
+ confidence = r * math.sqrt(n - 2) / math.sqrt(1 - r ** 2)
+
+ if confidence > SIGNIFICANCE_THRSH:
+ return r, confidence, True
+ else:
+ return r, confidence, False
+
+
+@dev.timed
+def get_transitions_and_issues_of_each_type(rows: List[RealDictRow], all_issues_with_context, first_stage, last_stage):
+ """
+ Returns two lists with binary values 0/1:
+
+ transitions ::: if transited from the first stage to the last - 1
+ else - 0
+ errors ::: a dictionary where the keys are all unique issues (currently context-wise)
+ the values are lists
+ if an issue happened between the first stage to the last - 1
+ else - 0
+
+ For a small task of calculating a total drop due to issues,
+ we need to disregard the issue type when creating the `errors`-like array.
+ The `all_errors` array can be obtained by logical OR statement applied to all errors by issue
+ The `transitions` array stays the same
+ """
+ transitions = []
+ n_sess_affected = 0
+ errors = {}
+ for issue in all_issues_with_context:
+ split = issue.split('__^__')
+ errors[issue] = {
+ "errors": [],
+ "issue_type": split[0],
+ "context": split[1]}
+
+ for row in rows:
+ t = 0
+ first_ts = row[f'stage{first_stage}_timestamp']
+ last_ts = row[f'stage{last_stage}_timestamp']
+ if first_ts is None:
+ continue
+ elif first_ts is not None and last_ts is not None:
+ t = 1
+ transitions.append(t)
+
+ ic_present = False
+ for issue_type_with_context in errors:
+ ic = 0
+ issue_type = errors[issue_type_with_context]["issue_type"]
+ context = errors[issue_type_with_context]["context"]
+ if row['issue_type'] is not None:
+ if last_ts is None or (first_ts < row['issue_timestamp'] < last_ts):
+ context_in_row = row['issue_context'] if row['issue_context'] is not None else ''
+ if issue_type == row['issue_type'] and context == context_in_row:
+ ic = 1
+ ic_present = True
+ errors[issue_type_with_context]["errors"].append(ic)
+
+ if ic_present and t:
+ n_sess_affected += 1
+
+ # def tuple_or(t: tuple):
+ # x = 0
+ # for el in t:
+ # x |= el
+ # return x
+ def tuple_or(t: tuple):
+ for el in t:
+ if el > 0:
+ return 1
+ return 0
+
+ errors = {key: errors[key]["errors"] for key in errors}
+ all_errors = [tuple_or(t) for t in zip(*errors.values())]
+
+ return transitions, errors, all_errors, n_sess_affected
+
+
+@dev.timed
+def get_affected_users_for_all_issues(rows, first_stage, last_stage):
+ """
+
+ :param rows:
+ :param first_stage:
+ :param last_stage:
+ :return:
+ """
+ affected_users = defaultdict(lambda: set())
+ affected_sessions = defaultdict(lambda: set())
+ contexts = defaultdict(lambda: None)
+ n_affected_users_dict = defaultdict(lambda: None)
+ n_affected_sessions_dict = defaultdict(lambda: None)
+ all_issues_with_context = set()
+ n_issues_dict = defaultdict(lambda: 0)
+ issues_by_session = defaultdict(lambda: 0)
+
+ for row in rows:
+
+ # check that the session has reached the first stage of subfunnel:
+ if row[f'stage{first_stage}_timestamp'] is None:
+ continue
+
+ iss = row['issue_type']
+ iss_ts = row['issue_timestamp']
+
+ # check that the issue exists and belongs to subfunnel:
+ if iss is not None and (row[f'stage{last_stage}_timestamp'] is None or
+ (row[f'stage{first_stage}_timestamp'] < iss_ts < row[f'stage{last_stage}_timestamp'])):
+ context_string = row['issue_context'] if row['issue_context'] is not None else ''
+ issue_with_context = iss + '__^__' + context_string
+ contexts[issue_with_context] = {"context": context_string, "id": row["issue_id"]}
+ all_issues_with_context.add(issue_with_context)
+ n_issues_dict[issue_with_context] += 1
+ if row['user_uuid'] is not None:
+ affected_users[issue_with_context].add(row['user_uuid'])
+
+ affected_sessions[issue_with_context].add(row['session_id'])
+ issues_by_session[row[f'session_id']] += 1
+
+ if len(affected_users) > 0:
+ n_affected_users_dict.update({
+ iss: len(affected_users[iss]) for iss in affected_users
+ })
+ if len(affected_sessions) > 0:
+ n_affected_sessions_dict.update({
+ iss: len(affected_sessions[iss]) for iss in affected_sessions
+ })
+ return all_issues_with_context, n_issues_dict, n_affected_users_dict, n_affected_sessions_dict, contexts
+
+
+@dev.timed
+def count_sessions(rows, n_stages):
+ session_counts = {i: set() for i in range(1, n_stages + 1)}
+ for ind, row in enumerate(rows):
+ for i in range(1, n_stages + 1):
+ if row[f"stage{i}_timestamp"] is not None:
+ session_counts[i].add(row[f"session_id"])
+ session_counts = {i: len(session_counts[i]) for i in session_counts}
+ return session_counts
+
+
+def count_users(rows, n_stages):
+ users_in_stages = defaultdict(lambda: set())
+
+ for ind, row in enumerate(rows):
+ for i in range(1, n_stages + 1):
+ if row[f"stage{i}_timestamp"] is not None:
+ users_in_stages[i].add(row["user_uuid"])
+
+ users_count = {i: len(users_in_stages[i]) for i in range(1, n_stages + 1)}
+
+ return users_count
+
+
+def get_stages(stages, rows):
+ n_stages = len(stages)
+ session_counts = count_sessions(rows, n_stages)
+ users_counts = count_users(rows, n_stages)
+
+ stages_list = []
+ for i, stage in enumerate(stages):
+
+ drop = None
+ if i != 0:
+ if session_counts[i] == 0:
+ drop = 0
+ elif session_counts[i] > 0:
+ drop = int(100 * (session_counts[i] - session_counts[i + 1]) / session_counts[i])
+
+ stages_list.append(
+ {"value": stage["value"],
+ "type": stage["type"],
+ "operator": stage["operator"],
+ "sessionsCount": session_counts[i + 1],
+ "drop_pct": drop,
+ "usersCount": users_counts[i + 1],
+ "dropDueToIssues": 0
+ }
+ )
+ return stages_list
+
+
+@dev.timed
+def get_issues(stages, rows, first_stage=None, last_stage=None, drop_only=False):
+ """
+
+ :param stages:
+ :param rows:
+ :param first_stage: If it's a part of the initial funnel, provide a number of the first stage (starting from 1)
+ :param last_stage: If it's a part of the initial funnel, provide a number of the last stage (starting from 1)
+ :return:
+ """
+
+ n_stages = len(stages)
+
+ if first_stage is None:
+ first_stage = 1
+ if last_stage is None:
+ last_stage = n_stages
+ if last_stage > n_stages:
+ print("The number of the last stage provided is greater than the number of stages. Using n_stages instead")
+ last_stage = n_stages
+
+ n_critical_issues = 0
+ issues_dict = dict({"significant": [],
+ "insignificant": []})
+ session_counts = count_sessions(rows, n_stages)
+ drop = session_counts[first_stage] - session_counts[last_stage]
+
+ all_issues_with_context, n_issues_dict, affected_users_dict, affected_sessions, contexts = get_affected_users_for_all_issues(
+ rows, first_stage, last_stage)
+ transitions, errors, all_errors, n_sess_affected = get_transitions_and_issues_of_each_type(rows,
+ all_issues_with_context,
+ first_stage, last_stage)
+
+ print("len(transitions) =", len(transitions))
+
+ if any(all_errors):
+ total_drop_corr, conf, is_sign = pearson_corr(transitions, all_errors)
+ if total_drop_corr is not None and drop is not None:
+ total_drop_due_to_issues = int(total_drop_corr * n_sess_affected)
+ else:
+ total_drop_due_to_issues = 0
+ else:
+ total_drop_due_to_issues = 0
+
+ if drop_only:
+ return total_drop_due_to_issues
+ for issue in all_issues_with_context:
+
+ if not any(errors[issue]):
+ continue
+ r, confidence, is_sign = pearson_corr(transitions, errors[issue])
+
+ if r is not None and drop is not None and is_sign:
+ lost_conversions = int(r * affected_sessions[issue])
+ else:
+ lost_conversions = None
+ if r is None:
+ r = 0
+ split = issue.split('__^__')
+ issues_dict['significant' if is_sign else 'insignificant'].append({
+ "type": split[0],
+ "title": get_issue_title(split[0]),
+ "affected_sessions": affected_sessions[issue],
+ "unaffected_sessions": session_counts[1] - affected_sessions[issue],
+ "lost_conversions": lost_conversions,
+ "affected_users": affected_users_dict[issue],
+ "conversion_impact": round(r * 100),
+ "context_string": contexts[issue]["context"],
+ "issue_id": contexts[issue]["id"]
+ })
+
+ if is_sign:
+ n_critical_issues += n_issues_dict[issue]
+
+ return n_critical_issues, issues_dict, total_drop_due_to_issues
+
+
+@dev.timed
+def get_top_insights(filter_d, project_id):
+ output = []
+ stages = filter_d["events"]
+ # TODO: handle 1 stage alone
+ if len(stages) == 0:
+ print("no stages found")
+ return output, 0
+ elif len(stages) == 1:
+ # TODO: count sessions, and users for single stage
+ output = [{
+ "type": stages[0]["type"],
+ "value": stages[0]["value"],
+ "dropPercentage": None,
+ "operator": stages[0]["operator"],
+ "sessionsCount": 0,
+ "dropPct": 0,
+ "usersCount": 0,
+ "dropDueToIssues": 0
+
+ }]
+ counts = sessions.search2_pg(data=filter_d, project_id=project_id, user_id=None, count_only=True)
+ output[0]["sessionsCount"] = counts["countSessions"]
+ output[0]["usersCount"] = counts["countUsers"]
+ return output, 0
+ # The result of the multi-stage query
+ rows = get_stages_and_events(filter_d=filter_d, project_id=project_id)
+ if len(rows) == 0:
+ return get_stages(stages, []), 0
+ # Obtain the first part of the output
+ stages_list = get_stages(stages, rows)
+ # Obtain the second part of the output
+ total_drop_due_to_issues = get_issues(stages, rows, first_stage=filter_d.get("firstStage"),
+ last_stage=filter_d.get("lastStage"), drop_only=True)
+ return stages_list, total_drop_due_to_issues
+
+
+@dev.timed
+def get_issues_list(filter_d, project_id, first_stage=None, last_stage=None):
+ output = dict({'critical_issues_count': 0})
+ stages = filter_d["events"]
+ # The result of the multi-stage query
+ rows = get_stages_and_events(filter_d=filter_d, project_id=project_id)
+ # print(json.dumps(rows[0],indent=4))
+ # return
+ if len(rows) == 0:
+ return output
+ # Obtain the second part of the output
+ n_critical_issues, issues_dict, total_drop_due_to_issues = get_issues(stages, rows, first_stage=first_stage,
+ last_stage=last_stage)
+ output['total_drop_due_to_issues'] = total_drop_due_to_issues
+ # output['critical_issues_count'] = n_critical_issues
+ output = {**output, **issues_dict}
+ return output
+
+
+def get_overview(filter_d, project_id, first_stage=None, last_stage=None):
+ output = dict()
+ stages = filter_d["events"]
+ # TODO: handle 1 stage alone
+ if len(stages) == 0:
+ return {"stages": [],
+ "criticalIssuesCount": 0}
+ elif len(stages) == 1:
+ # TODO: count sessions, and users for single stage
+ output["stages"] = [{
+ "type": stages[0]["type"],
+ "value": stages[0]["value"],
+ "sessionsCount": None,
+ "dropPercentage": None,
+ "usersCount": None
+ }]
+ return output
+ # The result of the multi-stage query
+ rows = get_stages_and_events(filter_d=filter_d, project_id=project_id)
+ if len(rows) == 0:
+ return output
+ # Obtain the first part of the output
+ stages_list = get_stages(stages, rows)
+
+ # Obtain the second part of the output
+ n_critical_issues, issues_dict, total_drop_due_to_issues = get_issues(stages, rows, first_stage=first_stage,
+ last_stage=last_stage)
+
+ output['stages'] = stages_list
+ output['criticalIssuesCount'] = n_critical_issues
+ return output
+
+
+def get_issue_title(issue_type):
+ return {'click_rage': "Click Rage",
+ 'dead_click': "Dead Click",
+ 'excessive_scrolling': "Excessive Scrolling",
+ 'bad_request': "Bad Request",
+ 'missing_resource': "Missing Image",
+ 'memory': "High Memory Usage",
+ 'cpu': "High CPU",
+ 'slow_resource': "Slow Resource",
+ 'slow_page_load': "Slow Page Performance",
+ 'crash': "Crash",
+ 'ml_cpu': "High CPU",
+ 'ml_memory': "High Memory Usage",
+ 'ml_dead_click': "Dead Click",
+ 'ml_click_rage': "Click Rage",
+ 'ml_mouse_thrashing': "Mouse Thrashing",
+ 'ml_excessive_scrolling': "Excessive Scrolling",
+ 'ml_slow_resources': "Slow Resource",
+ 'custom': "Custom Event",
+ 'js_exception': "Error",
+ 'custom_event_error': "Custom Error",
+ 'js_error': "Error"}.get(issue_type, issue_type)
diff --git a/api/chalicelib/core/signup.py b/api/chalicelib/core/signup.py
new file mode 100644
index 000000000..656d231ef
--- /dev/null
+++ b/api/chalicelib/core/signup.py
@@ -0,0 +1,171 @@
+from chalicelib.utils import helper
+from chalicelib.utils import pg_client
+from chalicelib.core import users, telemetry
+from chalicelib.utils import captcha
+import json
+from chalicelib.utils.TimeUTC import TimeUTC
+
+
+def get_signed_ups():
+ with pg_client.PostgresClient() as cur:
+ cur.execute("SELECT tenant_id, name FROM public.tenants;")
+ rows = cur.fetchall()
+ return helper.list_to_camel_case(rows)
+
+
+def create_step1(data):
+ print(f"===================== SIGNUP STEP 1 AT {TimeUTC.to_human_readable(TimeUTC.now())} UTC")
+ errors = []
+
+ email = data.get("email")
+ print(f"=====================> {email}")
+ password = data.get("password")
+
+ print("Verifying email validity")
+ email_exists = False
+ if email is None or len(email) < 5 or not helper.is_valid_email(email):
+ errors.append("Invalid email address.")
+ else:
+ print("Verifying email existance")
+ if users.email_exists(email):
+ # errors.append("Email address already in use.")
+ email_exists = True
+ if users.get_deleted_user_by_email(email) is not None:
+ # errors.append("Email address previously deleted.")
+ email_exists = True
+
+ print("Verifying captcha")
+ if helper.allow_captcha() and not captcha.is_valid(data["g-recaptcha-response"]):
+ errors.append("Invalid captcha.")
+
+ print("Verifying password validity")
+ if len(data["password"]) < 6:
+ errors.append("Password is too short, it must be at least 6 characters long.")
+
+ print("Verifying fullname validity")
+ fullname = data.get("fullname")
+ if fullname is None or len(fullname) < 1 or not helper.is_alphabet_space_dash(fullname):
+ errors.append("Invalid full name.")
+
+ print("Verifying company's name validity")
+ company_name = data.get("organizationName")
+ if company_name is None or len(company_name) < 1 or not helper.is_alphanumeric_space(company_name):
+ errors.append("invalid organization's name")
+
+ print("Verifying project's name validity")
+ project_name = data.get("projectName")
+ if project_name is None or len(project_name) < 1:
+ project_name = "my first project"
+ if len(get_signed_ups()) > 0 and data.get("tenantId") is None:
+ errors.append("Tenant already exists, please select it from dropdown")
+ if len(errors) > 0:
+ print("==> error")
+ print(errors)
+ return {"errors": errors}
+ print("No errors detected")
+ params = {
+ "email": email, "password": password,
+ "fullname": fullname,
+ "projectName": project_name,
+ "data": json.dumps({"lastAnnouncementView": TimeUTC.now()}),
+ "organizationName": company_name,
+ "versionNumber": "0.0.0"
+ }
+ if data.get("tenantId") is not None:
+ update_user = """
+ u AS (
+ UPDATE public.users
+ SET name = %(fullname)s, deleted_at=NULL
+ WHERE email=%(email)s
+ RETURNING user_id,email, role, name
+ )
+ UPDATE public.basic_authentication
+ SET password= crypt(%(password)s, gen_salt('bf', 12))
+ WHERE user_id = (SELECT user_id FROM u)"""
+ insert_user = """
+ a AS (
+ UPDATE public.users
+ SET role='admin'
+ WHERE role ='owner'
+ ),
+ u AS (
+ INSERT INTO public.users (email, role, name, data)
+ VALUES (%(email)s, 'owner', %(fullname)s,%(data)s)
+ RETURNING user_id,email,role,name
+ )
+ INSERT INTO public.basic_authentication (user_id, password, generated_password)
+ VALUES ((SELECT user_id FROM u), crypt(%(password)s, gen_salt('bf', 12)), FALSE)"""
+ query = f"""\
+ WITH t AS (
+ UPDATE public.tenants
+ SET name = %(organizationName)s,
+ version_number = %(versionNumber)s
+ RETURNING api_key
+ ),
+ {update_user if email_exists else insert_user}
+ RETURNING (SELECT api_key FROM t) AS api_key,(SELECT project_id FROM projects LIMIT 1) AS project_id;"""
+ else:
+ query = f"""\
+ WITH t AS (
+ INSERT INTO public.tenants (name, version_number, edition)
+ VALUES (%(organizationName)s, %(versionNumber)s, 'fos')
+ RETURNING api_key
+ ),
+ u AS (
+ INSERT INTO public.users (email, role, name, data)
+ VALUES (%(email)s, 'owner', %(fullname)s,%(data)s)
+ RETURNING user_id,email,role,name
+ ),
+ au AS (INSERT
+ INTO public.basic_authentication (user_id, password, generated_password)
+ VALUES ((SELECT user_id FROM u), crypt(%(password)s, gen_salt('bf', 12)), FALSE)
+ )
+ INSERT INTO public.projects (name, active)
+ VALUES (%(projectName)s, TRUE)
+ RETURNING project_id, (SELECT api_key FROM t) AS api_key;"""
+
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify(query, params))
+ cur = cur.fetchone()
+ project_id = cur["project_id"]
+ api_key = cur["api_key"]
+ telemetry.new_client()
+ created_at = TimeUTC.now()
+ r = users.authenticate(email, password)
+ r["banner"] = False
+ r["limits"] = {
+ "teamMember": {"limit": 99, "remaining": 98, "count": 1},
+ "projects": {"limit": 99, "remaining": 98, "count": 1},
+ "metadata": [{
+ "projectId": project_id,
+ "name": project_name,
+ "limit": 10,
+ "remaining": 10,
+ "count": 0
+ }]
+ }
+ c = {
+ "tenantId": 1,
+ "name": company_name,
+ "apiKey": api_key,
+ "remainingTrial": 14,
+ "trialEnded": False,
+ "billingPeriodStartDate": created_at,
+ "hasActivePlan": True,
+ "projects": [
+ {
+ "projectId": project_id,
+ "name": project_name,
+ "recorded": False,
+ "stackIntegrations": False,
+ "status": "red"
+ }
+ ]
+ }
+ return {
+ 'jwt': r.pop('jwt'),
+ 'data': {
+ "user": r,
+ "client": c,
+ }
+ }
diff --git a/api/chalicelib/core/slack.py b/api/chalicelib/core/slack.py
new file mode 100644
index 000000000..411be0567
--- /dev/null
+++ b/api/chalicelib/core/slack.py
@@ -0,0 +1,32 @@
+from datetime import datetime
+from chalicelib.utils.helper import environ
+
+from chalicelib.core.collaboration_slack import Slack
+
+
+def send(notification, destination):
+ if notification is None:
+ return
+ return Slack.send_text(tenant_id=notification["tenantId"],
+ webhook_id=destination,
+ text=notification["description"] \
+ + f"\n<{environ['SITE_URL']}{notification['buttonUrl']}|{notification['buttonText']}>",
+ title=notification["title"],
+ title_link=notification["buttonUrl"], )
+
+
+def send_batch(notifications_list):
+ if notifications_list is None or len(notifications_list) == 0:
+ return
+ webhookId_map = {}
+ for n in notifications_list:
+ if n.get("destination") not in webhookId_map:
+ webhookId_map[n.get("destination")] = {"tenantId": n["notification"]["tenantId"], "batch": []}
+ webhookId_map[n.get("destination")]["batch"].append({"text": n["notification"]["description"] \
+ + f"\n<{environ['SITE_URL']}{n['notification']['buttonUrl']}|{n['notification']['buttonText']}>",
+ "title": n["notification"]["title"],
+ "title_link": n["notification"]["buttonUrl"],
+ "ts": datetime.now().timestamp()})
+ for batch in webhookId_map.keys():
+ Slack.send_batch(tenant_id=webhookId_map[batch]["tenantId"], webhook_id=batch,
+ attachments=webhookId_map[batch]["batch"])
diff --git a/api/chalicelib/core/socket_ios.py b/api/chalicelib/core/socket_ios.py
new file mode 100644
index 000000000..d925797fe
--- /dev/null
+++ b/api/chalicelib/core/socket_ios.py
@@ -0,0 +1,22 @@
+import requests
+from chalicelib.utils.helper import environ
+from chalicelib.core import projects
+
+
+def start_replay(project_id, session_id, device, os_version, mob_url):
+ r = requests.post(environ["IOS_MIDDLEWARE"] + "/replay", json={
+ "projectId": project_id,
+ "projectKey": projects.get_project_key(project_id),
+ "sessionId": session_id,
+ "device": device,
+ "osVersion": os_version,
+ "mobUrl": mob_url
+ })
+ if r.status_code != 200:
+ print("failed replay middleware")
+ print("status code: %s" % r.status_code)
+ print(r.text)
+ return r.text
+ result = r.json()
+ result["url"] = environ["IOS_MIDDLEWARE"]
+ return result
diff --git a/api/chalicelib/core/sourcemaps.py b/api/chalicelib/core/sourcemaps.py
new file mode 100644
index 000000000..c198b859b
--- /dev/null
+++ b/api/chalicelib/core/sourcemaps.py
@@ -0,0 +1,157 @@
+from chalicelib.utils.helper import environ
+from chalicelib.utils import helper
+
+from chalicelib.utils import s3
+import hashlib
+from urllib.parse import urlparse
+
+from chalicelib.core import sourcemaps_parser
+
+
+def __get_key(project_id, url):
+ u = urlparse(url)
+ new_url = u.scheme + "://" + u.netloc + u.path
+ return f"{project_id}/{hashlib.md5(new_url.encode()).hexdigest()}"
+
+
+def presign_share_urls(project_id, urls):
+ results = []
+ for u in urls:
+ results.append(s3.get_presigned_url_for_sharing(bucket=environ['sourcemaps_bucket'], expires_in=120,
+ key=__get_key(project_id, u),
+ check_exists=True))
+ return results
+
+
+def presign_upload_urls(project_id, urls):
+ results = []
+ for u in urls:
+ results.append(s3.get_presigned_url_for_upload(bucket=environ['sourcemaps_bucket'],
+ expires_in=1800,
+ key=__get_key(project_id, u)))
+ return results
+
+
+def __format_frame_old(f):
+ if f.get("context") is None:
+ f["context"] = []
+ else:
+ f["context"] = [[f["line"], f["context"]]]
+ url = f.pop("url")
+ f["absPath"] = url
+ f["filename"] = urlparse(url).path
+ f["lineNo"] = f.pop("line")
+ f["colNo"] = f.pop("column")
+ f["function"] = f.pop("func")
+ return f
+
+
+def __frame_is_valid(f):
+ return "columnNumber" in f and \
+ "lineNumber" in f and \
+ "fileName" in f
+
+
+def __format_frame(f):
+ f["context"] = [] # no context by default
+ if "source" in f: f.pop("source")
+ url = f.pop("fileName")
+ f["absPath"] = url
+ f["filename"] = urlparse(url).path
+ f["lineNo"] = f.pop("lineNumber")
+ f["colNo"] = f.pop("columnNumber")
+ f["function"] = f.pop("functionName") if "functionName" in f else None
+ return f
+
+
+def format_payload(p, truncate_to_first=False):
+ if type(p) is list:
+ return [__format_frame(f) for f in (p[:1] if truncate_to_first else p) if __frame_is_valid(f)]
+ if type(p) is dict:
+ stack = p.get("stack", [])
+ return [__format_frame_old(f) for f in (stack[:1] if truncate_to_first else stack)]
+ return []
+
+
+def get_traces_group(project_id, payload):
+ frames = format_payload(payload)
+
+ results = [{}] * len(frames)
+ payloads = {}
+ all_exists = True
+ for i, u in enumerate(frames):
+ key = __get_key(project_id, u["absPath"]) # use filename instead?
+ if key not in payloads:
+ file_exists = s3.exists(environ['sourcemaps_bucket'], key)
+ all_exists = all_exists and file_exists
+ if not file_exists:
+ print(f"{u['absPath']} sourcemap (key '{key}') doesn't exist in S3")
+ payloads[key] = None
+ else:
+ payloads[key] = []
+ results[i] = dict(u)
+ results[i]["frame"] = dict(u)
+ if payloads[key] is not None:
+ payloads[key].append({"resultIndex": i,
+ "position": {"line": u["lineNo"], "column": u["colNo"]},
+ "frame": dict(u)})
+ for key in payloads.keys():
+ if payloads[key] is None:
+ continue
+ key_results = sourcemaps_parser.get_original_trace(key=key, positions=[o["position"] for o in payloads[key]])
+ for i, r in enumerate(key_results):
+ res_index = payloads[key][i]["resultIndex"]
+ # function name search by frontend lib is better than sourcemaps' one in most cases
+ if results[res_index].get("function") is not None:
+ r["function"] = results[res_index]["function"]
+ r["frame"] = payloads[key][i]["frame"]
+ results[res_index] = r
+ return fetch_missed_contexts(results), all_exists
+
+
+def get_js_cache_path(fullURL):
+ p = urlparse(fullURL)
+ return p.scheme + '/' + p.netloc + p.path # TODO (Also in go assets library): What if URL with query? (like versions)
+
+
+MAX_COLUMN_OFFSET = 60
+
+
+def fetch_missed_contexts(frames):
+ source_cache = {}
+ for i in range(len(frames)):
+ if len(frames[i]["context"]) != 0:
+ continue
+ if frames[i]["frame"]["absPath"] in source_cache:
+ file = source_cache[frames[i]["frame"]["absPath"]]
+ else:
+ file = s3.get_file(environ['js_cache_bucket'], get_js_cache_path(frames[i]["frame"]["absPath"]))
+ if file is None:
+ print(
+ f"File {get_js_cache_path(frames[i]['frame']['absPath'])} not found in {environ['js_cache_bucket']}")
+ source_cache[frames[i]["frame"]["absPath"]] = file
+ if file is None:
+ continue
+ lines = file.split("\n")
+
+ if frames[i]["lineNo"] is None:
+ print("no original-source found for frame in sourcemap results")
+ frames[i] = frames[i]["frame"]
+ frames[i]["originalMapping"] = False
+
+ l = frames[i]["lineNo"] - 1 # starts from 1
+ c = frames[i]["colNo"] - 1 # starts from 1
+ if len(lines) == 1:
+ print(f"minified asset")
+ l = frames[i]["frame"]["lineNo"] - 1 # starts from 1
+ c = frames[i]["frame"]["colNo"] - 1 # starts from 1
+ elif l >= len(lines):
+ print(f"line number {l} greater than file length {len(lines)}")
+ continue
+
+ line = lines[l]
+ offset = c - MAX_COLUMN_OFFSET
+ if offset < 0: # if the line is shirt
+ offset = 0
+ frames[i]["context"].append([frames[i]["lineNo"], line[offset: c + MAX_COLUMN_OFFSET + 1]])
+ return frames
diff --git a/api/chalicelib/core/sourcemaps_parser.py b/api/chalicelib/core/sourcemaps_parser.py
new file mode 100644
index 000000000..cb0463d55
--- /dev/null
+++ b/api/chalicelib/core/sourcemaps_parser.py
@@ -0,0 +1,22 @@
+import requests
+
+from chalicelib.utils.helper import environ
+
+
+def get_original_trace(key, positions):
+ payload = {
+ "key": key,
+ "positions": positions,
+ "padding": 5,
+ "bucket": environ['sourcemaps_bucket'],
+ "bucket_config": {
+ "aws_access_key_id": environ["sourcemaps_bucket_key"],
+ "aws_secret_access_key": environ["sourcemaps_bucket_secret"],
+ "aws_region": environ["sourcemaps_bucket_region"]
+ }
+ }
+ r = requests.post(environ["sourcemaps"], json=payload)
+ if r.status_code != 200:
+ return {}
+
+ return r.json()
diff --git a/api/chalicelib/core/telemetry.py b/api/chalicelib/core/telemetry.py
new file mode 100644
index 000000000..362550553
--- /dev/null
+++ b/api/chalicelib/core/telemetry.py
@@ -0,0 +1,43 @@
+from chalicelib.utils import pg_client
+import requests
+
+
+def process_data(data, edition='fos'):
+ return {
+ 'edition': edition,
+ 'tracking': data["opt_out"],
+ 'version': data["version_number"],
+ 'user_id': data["user_id"],
+ 'owner_email': None if data["opt_out"] else data["email"],
+ 'organization_name': None if data["opt_out"] else data["name"],
+ 'users_count': data["t_users"],
+ 'projects_count': data["t_projects"],
+ 'sessions_count': data["t_sessions"],
+ 'integrations_count': data["t_integrations"]
+ }
+
+
+def compute():
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ f"""UPDATE public.tenants
+ SET t_integrations = COALESCE((SELECT COUNT(DISTINCT provider) FROM public.integrations) +
+ (SELECT COUNT(*) FROM public.webhooks WHERE type = 'slack') +
+ (SELECT COUNT(*) FROM public.jira_cloud), 0),
+ t_projects=COALESCE((SELECT COUNT(*) FROM public.projects WHERE deleted_at ISNULL), 0),
+ t_sessions=COALESCE((SELECT COUNT(*) FROM public.sessions), 0),
+ t_users=COALESCE((SELECT COUNT(*) FROM public.users WHERE deleted_at ISNULL), 0)
+ RETURNING *,(SELECT email FROM public.users WHERE role='owner' LIMIT 1);"""
+ )
+ data = cur.fetchone()
+ requests.post('https://parrot.asayer.io/os/telemetry', json=process_data(data))
+
+
+def new_client():
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ f"""SELECT *,
+ (SELECT email FROM public.users WHERE role='owner' LIMIT 1) AS email
+ FROM public.tenants;""")
+ data = cur.fetchone()
+ requests.post('https://parrot.asayer.io/os/signup', json=process_data(data))
diff --git a/api/chalicelib/core/tenants.py b/api/chalicelib/core/tenants.py
new file mode 100644
index 000000000..f047dcffa
--- /dev/null
+++ b/api/chalicelib/core/tenants.py
@@ -0,0 +1,83 @@
+from chalicelib.utils import pg_client
+from chalicelib.utils import helper
+from chalicelib.core import users
+
+
+def get_by_tenant_id(tenant_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT
+ tenant_id,
+ name,
+ api_key
+ created_at,
+ edition,
+ version_number,
+ opt_out
+ FROM public.tenants
+ LIMIT 1;""",
+ {"tenantId": tenant_id})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def get_by_api_key(api_key):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT
+ 1 AS tenant_id,
+ name,
+ created_at
+ FROM public.tenants
+ WHERE api_key = %(api_key)s
+ LIMIT 1;""",
+ {"api_key": api_key})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def generate_new_api_key(tenant_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""UPDATE public.tenants
+ SET api_key=generate_api_key(20)
+ RETURNING api_key;""",
+ {"tenant_id": tenant_id})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def edit_client(tenant_id, changes):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""\
+ UPDATE public.tenants
+ SET {", ".join([f"{helper.key_to_snake_case(k)} = %({k})s" for k in changes.keys()])}
+ RETURNING name, opt_out;""",
+ {"tenantId": tenant_id, **changes})
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def update(tenant_id, user_id, data):
+ admin = users.get(user_id=user_id, tenant_id=tenant_id)
+
+ if not admin["admin"] and not admin["superAdmin"]:
+ return {"error": "unauthorized"}
+ if "name" not in data and "optOut" not in data:
+ return {"errors": ["please provide 'name' of 'optOut' attribute for update"]}
+ changes = {}
+ if "name" in data:
+ changes["name"] = data["name"]
+ if "optOut" in data:
+ changes["optOut"] = data["optOut"]
+ return edit_client(tenant_id=tenant_id, changes=changes)
+
+
+def get_tenants():
+ with pg_client.PostgresClient() as cur:
+ cur.execute(f"SELECT name FROM public.tenants")
+ return helper.list_to_camel_case(cur.fetchall())
diff --git a/api/chalicelib/core/users.py b/api/chalicelib/core/users.py
new file mode 100644
index 000000000..819cb4c12
--- /dev/null
+++ b/api/chalicelib/core/users.py
@@ -0,0 +1,463 @@
+import json
+
+from chalicelib.core import authorizers
+
+from chalicelib.utils import helper
+from chalicelib.utils import pg_client
+from chalicelib.utils import dev
+from chalicelib.utils.TimeUTC import TimeUTC
+from chalicelib.utils.helper import environ
+
+from chalicelib.core import tenants
+
+
+def create_new_member(email, password, admin, name, owner=False):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ WITH u AS (
+ INSERT INTO public.users (email, role, name, data)
+ VALUES (%(email)s, %(role)s, %(name)s, %(data)s)
+ RETURNING user_id,email,role,name,appearance
+ ),
+ au AS (INSERT
+ INTO public.basic_authentication (user_id, password, generated_password)
+ VALUES ((SELECT user_id FROM u), crypt(%(password)s, gen_salt('bf', 12)), TRUE))
+ SELECT u.user_id AS id,
+ u.email,
+ u.role,
+ u.name,
+ TRUE AS change_password,
+ (CASE WHEN u.role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN u.role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN u.role = 'member' THEN TRUE ELSE FALSE END) AS member,
+ u.appearance
+ FROM u;""",
+ {"email": email, "password": password,
+ "role": "owner" if owner else "admin" if admin else "member", "name": name,
+ "data": json.dumps({"lastAnnouncementView": TimeUTC.now()})})
+ cur.execute(
+ query
+ )
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def restore_member(user_id, email, password, admin, name, owner=False):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(f"""\
+ UPDATE public.users
+ SET name= %(name)s,
+ role = %(role)s,
+ deleted_at= NULL,
+ created_at = timezone('utc'::text, now()),
+ api_key= generate_api_key(20)
+ WHERE user_id=%(user_id)s
+ RETURNING user_id AS id,
+ email,
+ role,
+ name,
+ TRUE AS change_password,
+ (CASE WHEN role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN role = 'member' THEN TRUE ELSE FALSE END) AS member,
+ appearance;""",
+ {"user_id": user_id, "email": email,
+ "role": "owner" if owner else "admin" if admin else "member", "name": name})
+ cur.execute(
+ query
+ )
+ result = helper.dict_to_camel_case(cur.fetchone())
+ query = cur.mogrify("""\
+ UPDATE public.basic_authentication
+ SET password= crypt(%(password)s, gen_salt('bf', 12)),
+ generated_password= TRUE,
+ token=NULL,
+ token_requested_at=NULL
+ WHERE user_id=%(user_id)s;""",
+ {"user_id": user_id, "password": password})
+ cur.execute(
+ query
+ )
+
+ return result
+
+
+def update(tenant_id, user_id, changes):
+ AUTH_KEYS = ["password", "generatedPassword", "token"]
+ if len(changes.keys()) == 0:
+ return None
+
+ sub_query_users = []
+ sub_query_bauth = []
+ for key in changes.keys():
+ if key in AUTH_KEYS:
+ if key == "password":
+ sub_query_bauth.append("password = crypt(%(password)s, gen_salt('bf', 12))")
+ sub_query_bauth.append("changed_at = timezone('utc'::text, now())")
+ elif key == "token":
+ if changes[key] is not None:
+ sub_query_bauth.append("token = %(token)s")
+ sub_query_bauth.append("token_requested_at = timezone('utc'::text, now())")
+ else:
+ sub_query_bauth.append("token = NULL")
+ sub_query_bauth.append("token_requested_at = NULL")
+ else:
+ sub_query_bauth.append(f"{helper.key_to_snake_case(key)} = %({key})s")
+ else:
+ if key == "appearance":
+ sub_query_users.append(f"appearance = %(appearance)s::jsonb")
+ changes["appearance"] = json.dumps(changes[key])
+ else:
+ sub_query_users.append(f"{helper.key_to_snake_case(key)} = %({key})s")
+
+ with pg_client.PostgresClient() as cur:
+ if len(sub_query_users) > 0:
+ cur.execute(
+ cur.mogrify(f"""\
+ UPDATE public.users
+ SET {" ,".join(sub_query_users)}
+ FROM public.basic_authentication
+ WHERE users.user_id = %(user_id)s
+ AND users.user_id = basic_authentication.user_id
+ RETURNING users.user_id AS id,
+ users.email,
+ users.role,
+ users.name,
+ basic_authentication.generated_password AS change_password,
+ (CASE WHEN users.role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN users.role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN users.role = 'member' THEN TRUE ELSE FALSE END) AS member,
+ users.appearance;""",
+ {"user_id": user_id, **changes})
+ )
+ if len(sub_query_bauth) > 0:
+ cur.execute(
+ cur.mogrify(f"""\
+ UPDATE public.basic_authentication
+ SET {" ,".join(sub_query_bauth)}
+ FROM public.users AS users
+ WHERE basic_authentication.user_id = %(user_id)s
+ AND users.user_id = basic_authentication.user_id
+ RETURNING users.user_id AS id,
+ users.email,
+ users.role,
+ users.name,
+ basic_authentication.generated_password AS change_password,
+ (CASE WHEN users.role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN users.role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN users.role = 'member' THEN TRUE ELSE FALSE END) AS member,
+ users.appearance;""",
+ {"user_id": user_id, **changes})
+ )
+
+ return helper.dict_to_camel_case(cur.fetchone())
+
+
+def create_member(tenant_id, user_id, data):
+ admin = get(tenant_id=tenant_id, user_id=user_id)
+ if not admin["admin"] and not admin["superAdmin"]:
+ return {"errors": ["unauthorized"]}
+ if data.get("userId") is not None:
+ return {"errors": ["please use POST/PUT /client/members/{memberId} for update"]}
+ user = get_by_email_only(email=data["email"])
+ if user:
+ return {"errors": ["user already exists"]}
+ name = data.get("name", None)
+ if name is not None and not helper.is_alphabet_latin_space(name):
+ return {"errors": ["invalid user name"]}
+ if name is None:
+ name = data["email"]
+ temp_pass = helper.generate_salt()[:8]
+ user = get_deleted_user_by_email(email=data["email"])
+ if user is not None:
+ new_member = restore_member(email=data["email"], password=temp_pass,
+ admin=data.get("admin", False), name=name, user_id=user["userId"])
+ else:
+ new_member = create_new_member(email=data["email"], password=temp_pass,
+ admin=data.get("admin", False), name=name)
+
+ helper.async_post(environ['email_basic'] % 'member_invitation',
+ {
+ "email": data["email"],
+ "userName": data["email"],
+ "tempPassword": temp_pass,
+ "clientId": tenants.get_by_tenant_id(tenant_id)["name"],
+ "senderName": admin["name"]
+ })
+ return {"data": new_member}
+
+
+def get(user_id, tenant_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT
+ users.user_id AS id,
+ email,
+ role,
+ name,
+ basic_authentication.generated_password,
+ (CASE WHEN role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN role = 'member' THEN TRUE ELSE FALSE END) AS member,
+ appearance,
+ api_key
+ FROM public.users LEFT JOIN public.basic_authentication ON users.user_id=basic_authentication.user_id
+ WHERE
+ users.user_id = %(userId)s
+ AND deleted_at IS NULL
+ LIMIT 1;""",
+ {"userId": user_id})
+ )
+ r = cur.fetchone()
+ return helper.dict_to_camel_case(r, ignore_keys=["appearance"])
+
+
+def generate_new_api_key(user_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""UPDATE public.users
+ SET api_key=generate_api_key(20)
+ WHERE
+ users.user_id = %(userId)s
+ AND deleted_at IS NULL
+ RETURNING api_key;""",
+ {"userId": user_id})
+ )
+ r = cur.fetchone()
+ return helper.dict_to_camel_case(r)
+
+
+def edit(user_id_to_update, tenant_id, changes, editor_id):
+ ALLOW_EDIT = ["name", "email", "admin", "appearance"]
+ user = get(user_id=user_id_to_update, tenant_id=tenant_id)
+ if editor_id != user_id_to_update or "admin" in changes and changes["admin"] != user["admin"]:
+ admin = get(tenant_id=tenant_id, user_id=editor_id)
+ if not admin["superAdmin"] and not admin["admin"]:
+ return {"errors": ["unauthorized"]}
+
+ keys = list(changes.keys())
+ for k in keys:
+ if k not in ALLOW_EDIT:
+ changes.pop(k)
+ keys = list(changes.keys())
+
+ if len(keys) > 0:
+ if "email" in keys and changes["email"] != user["email"]:
+ if email_exists(changes["email"]):
+ return {"errors": ["email already exists."]}
+ if get_deleted_user_by_email(changes["email"]) is not None:
+ return {"errors": ["email previously deleted."]}
+ if "admin" in keys:
+ changes["role"] = "admin" if changes.pop("admin") else "member"
+ if len(changes.keys()) > 0:
+ updated_user = update(tenant_id=tenant_id, user_id=user_id_to_update, changes=changes)
+
+ return {"data": updated_user}
+ return {"data": user}
+
+
+def get_by_email_only(email):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT
+ users.user_id AS id,
+ 1 AS tenant_id,
+ users.email,
+ users.role,
+ users.name,
+ basic_authentication.generated_password,
+ (CASE WHEN users.role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN users.role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN users.role = 'member' THEN TRUE ELSE FALSE END) AS member
+ FROM public.users LEFT JOIN public.basic_authentication ON users.user_id=basic_authentication.user_id
+ WHERE
+ users.email = %(email)s
+ AND users.deleted_at IS NULL;""",
+ {"email": email})
+ )
+ r = cur.fetchall()
+ return helper.list_to_camel_case(r)
+
+
+def get_by_email_reset(email, reset_token):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT
+ users.user_id AS id,
+ 1 AS tenant_id,
+ users.email,
+ users.role,
+ users.name,
+ basic_authentication.generated_password,
+ (CASE WHEN users.role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN users.role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN users.role = 'member' THEN TRUE ELSE FALSE END) AS member
+ FROM public.users LEFT JOIN public.basic_authentication ON users.user_id=basic_authentication.user_id
+ WHERE
+ users.email = %(email)s
+ AND basic_authentication.token =%(token)s
+ AND users.deleted_at IS NULL""",
+ {"email": email, "token": reset_token})
+ )
+ r = cur.fetchone()
+ return helper.dict_to_camel_case(r)
+
+
+def get_members(tenant_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ f"""SELECT
+ users.user_id AS id,
+ users.email,
+ users.role,
+ users.name,
+ basic_authentication.generated_password,
+ (CASE WHEN users.role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN users.role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN users.role = 'member' THEN TRUE ELSE FALSE END) AS member
+ FROM public.users LEFT JOIN public.basic_authentication ON users.user_id=basic_authentication.user_id
+ WHERE users.deleted_at IS NULL
+ ORDER BY name, id"""
+ )
+ r = cur.fetchall()
+ if len(r):
+ return helper.list_to_camel_case(r)
+
+ return []
+
+
+def delete_member(user_id, tenant_id, id_to_delete):
+ if user_id == id_to_delete:
+ return {"errors": ["unauthorized, cannot delete self"]}
+
+ admin = get(user_id=user_id, tenant_id=tenant_id)
+ if admin["member"]:
+ return {"errors": ["unauthorized"]}
+
+ to_delete = get(user_id=id_to_delete, tenant_id=tenant_id)
+ if to_delete is None:
+ return {"errors": ["not found"]}
+
+ if to_delete["superAdmin"]:
+ return {"errors": ["cannot delete super admin"]}
+
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(f"""UPDATE public.users
+ SET deleted_at = timezone('utc'::text, now())
+ WHERE user_id=%(user_id)s;""",
+ {"user_id": id_to_delete}))
+ return {"data": get_members(tenant_id=tenant_id)}
+
+
+def change_password(tenant_id, user_id, email, old_password, new_password):
+ item = get(tenant_id=tenant_id, user_id=user_id)
+ if item is None:
+ return {"errors": ["access denied"]}
+ if old_password == new_password:
+ return {"errors": ["old and new password are the same"]}
+ auth = authenticate(email, old_password, for_change_password=True)
+ if auth is None:
+ return {"errors": ["wrong password"]}
+ changes = {"password": new_password, "generatedPassword": False}
+ return {"data": update(tenant_id=tenant_id, user_id=user_id, changes=changes),
+ "jwt": authenticate(email, new_password)["jwt"]}
+
+
+def email_exists(email):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT
+ count(user_id)
+ FROM public.users
+ WHERE
+ email = %(email)s
+ AND deleted_at IS NULL
+ LIMIT 1;""",
+ {"email": email})
+ )
+ r = cur.fetchone()
+ return r["count"] > 0
+
+
+def get_deleted_user_by_email(email):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"""SELECT
+ *
+ FROM public.users
+ WHERE
+ email = %(email)s
+ AND deleted_at NOTNULL
+ LIMIT 1;""",
+ {"email": email})
+ )
+ r = cur.fetchone()
+ return helper.dict_to_camel_case(r)
+
+
+def auth_exists(user_id, tenant_id, jwt_iat, jwt_aud):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify(
+ f"SELECT user_id AS id,jwt_iat, changed_at FROM public.users INNER JOIN public.basic_authentication USING(user_id) WHERE user_id = %(userId)s AND deleted_at IS NULL LIMIT 1;",
+ {"userId": user_id})
+ )
+ r = cur.fetchone()
+ return r is not None \
+ and r.get("jwt_iat") is not None \
+ and (abs(jwt_iat - TimeUTC.datetime_to_timestamp(r["jwt_iat"]) // 1000) <= 1 \
+ or (jwt_aud.startswith("plugin") \
+ and (r["changed_at"] is None \
+ or jwt_iat >= (TimeUTC.datetime_to_timestamp(r["changed_at"]) // 1000)))
+ )
+
+
+@dev.timed
+def authenticate(email, password, for_change_password=False, for_plugin=False):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify(
+ f"""SELECT
+ users.user_id AS id,
+ 1 AS tenant_id,
+ users.role,
+ users.name,
+ basic_authentication.generated_password AS change_password,
+ (CASE WHEN users.role = 'owner' THEN TRUE ELSE FALSE END) AS super_admin,
+ (CASE WHEN users.role = 'admin' THEN TRUE ELSE FALSE END) AS admin,
+ (CASE WHEN users.role = 'member' THEN TRUE ELSE FALSE END) AS member,
+ users.appearance
+ FROM public.users INNER JOIN public.basic_authentication USING(user_id)
+ WHERE users.email = %(email)s
+ AND basic_authentication.password = crypt(%(password)s, basic_authentication.password)
+ AND basic_authentication.user_id = (SELECT su.user_id FROM public.users AS su WHERE su.email=%(email)s AND su.deleted_at IS NULL LIMIT 1)
+ LIMIT 1;""",
+ {"email": email, "password": password})
+
+ cur.execute(query)
+ r = cur.fetchone()
+
+ if r is not None:
+ if for_change_password:
+ return True
+ r = helper.dict_to_camel_case(r, ignore_keys=["appearance"])
+ query = cur.mogrify(
+ f"""UPDATE public.users
+ SET jwt_iat = timezone('utc'::text, now())
+ WHERE user_id = %(user_id)s
+ RETURNING jwt_iat;""",
+ {"user_id": r["id"]})
+ cur.execute(query)
+ return {
+ "jwt": authorizers.generate_jwt(r['id'], r['tenantId'],
+ TimeUTC.datetime_to_timestamp(cur.fetchone()["jwt_iat"]),
+ aud=f"plugin:{helper.get_stage_name()}" if for_plugin else f"front:{helper.get_stage_name()}"),
+ "email": email,
+ **r
+ }
+ return None
diff --git a/api/chalicelib/core/webhook.py b/api/chalicelib/core/webhook.py
new file mode 100644
index 000000000..99a3b0569
--- /dev/null
+++ b/api/chalicelib/core/webhook.py
@@ -0,0 +1,178 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.utils.TimeUTC import TimeUTC
+import requests
+
+
+def get_by_id(webhook_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT
+ w.*
+ FROM public.webhooks AS w
+ where w.webhook_id =%(webhook_id)s AND deleted_at ISNULL;""",
+ {"webhook_id": webhook_id})
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ if w:
+ w["createdAt"] = TimeUTC.datetime_to_timestamp(w["createdAt"])
+ return w
+
+
+def get(tenant_id, webhook_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT
+ w.*
+ FROM public.webhooks AS w
+ where w.webhook_id =%(webhook_id)s AND deleted_at ISNULL;""",
+ {"webhook_id": webhook_id})
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ if w:
+ w["createdAt"] = TimeUTC.datetime_to_timestamp(w["createdAt"])
+ return w
+
+
+def get_by_type(tenant_id, webhook_type):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ SELECT
+ w.webhook_id AS id,w.webhook_id,w.endpoint,w.auth_header,w.type,w.index,w.name,w.created_at
+ FROM public.webhooks AS w
+ WHERE w.type =%(type)s AND deleted_at ISNULL;""",
+ {"type": webhook_type})
+ )
+ webhooks = helper.list_to_camel_case(cur.fetchall())
+ for w in webhooks:
+ w["createdAt"] = TimeUTC.datetime_to_timestamp(w["createdAt"])
+ return webhooks
+
+
+def get_by_tenant(tenant_id, replace_none=False):
+ with pg_client.PostgresClient() as cur:
+ cur.execute("""\
+ SELECT
+ w.*
+ FROM public.webhooks AS w
+ WHERE deleted_at ISNULL;"""
+ )
+ all = helper.list_to_camel_case(cur.fetchall())
+ if replace_none:
+ for w in all:
+ w["createdAt"] = TimeUTC.datetime_to_timestamp(w["createdAt"])
+ for k in w.keys():
+ if w[k] is None:
+ w[k] = ''
+ else:
+ for w in all:
+ w["createdAt"] = TimeUTC.datetime_to_timestamp(w["createdAt"])
+ return all
+
+
+def update(tenant_id, webhook_id, changes, replace_none=False):
+ allow_update = ["name", "index", "authHeader", "endpoint"]
+ with pg_client.PostgresClient() as cur:
+ sub_query = [f"{helper.key_to_snake_case(k)} = %({k})s" for k in changes.keys() if k in allow_update]
+ cur.execute(
+ cur.mogrify(f"""\
+ UPDATE public.webhooks
+ SET {','.join(sub_query)}
+ WHERE webhook_id =%(id)s AND deleted_at ISNULL
+ RETURNING *;""",
+ {"id": webhook_id, **changes})
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ w["createdAt"] = TimeUTC.datetime_to_timestamp(w["createdAt"])
+ if replace_none:
+ for k in w.keys():
+ if w[k] is None:
+ w[k] = ''
+ return w
+
+
+def add(tenant_id, endpoint, auth_header=None, webhook_type='webhook', name="", replace_none=False):
+ with pg_client.PostgresClient() as cur:
+ query = cur.mogrify("""\
+ INSERT INTO public.webhooks(endpoint,auth_header,type,name)
+ VALUES (%(endpoint)s, %(auth_header)s, %(type)s,%(name)s)
+ RETURNING *;""",
+ {"endpoint": endpoint, "auth_header": auth_header,
+ "type": webhook_type, "name": name})
+ cur.execute(
+ query
+ )
+ w = helper.dict_to_camel_case(cur.fetchone())
+ w["createdAt"] = TimeUTC.datetime_to_timestamp(w["createdAt"])
+ if replace_none:
+ for k in w.keys():
+ if w[k] is None:
+ w[k] = ''
+ return w
+
+
+def add_edit(tenant_id, data, replace_none=None):
+ if "webhookId" in data:
+ return update(tenant_id=tenant_id, webhook_id=data["webhookId"],
+ changes={"endpoint": data["endpoint"],
+ "authHeader": None if "authHeader" not in data else data["authHeader"],
+ "name": data["name"] if "name" in data else ""}, replace_none=replace_none)
+ else:
+ return add(tenant_id=tenant_id,
+ endpoint=data["endpoint"],
+ auth_header=None if "authHeader" not in data else data["authHeader"],
+ name=data["name"] if "name" in data else "", replace_none=replace_none)
+
+
+def delete(tenant_id, webhook_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(
+ cur.mogrify("""\
+ UPDATE public.webhooks
+ SET deleted_at = (now() at time zone 'utc')
+ WHERE webhook_id =%(id)s AND deleted_at ISNULL
+ RETURNING *;""",
+ {"id": webhook_id})
+ )
+ return {"data": {"state": "success"}}
+
+
+def trigger_batch(data_list):
+ webhooks_map = {}
+ for w in data_list:
+ if w["destination"] not in webhooks_map:
+ webhooks_map[w["destination"]] = get_by_id(webhook_id=w["destination"])
+ __trigger(hook=webhooks_map[w["destination"]], data=w["data"])
+
+
+def __trigger(hook, data):
+ if hook["type"] == 'webhook':
+ headers = {}
+ if hook["authHeader"] is not None and len(hook["authHeader"]) > 0:
+ headers = {"Authorization": hook["authHeader"]}
+
+ # body = {
+ # "webhookId": hook["id"],
+ # "createdAt": TimeUTC.now(),
+ # "event": event,
+ # "data": data
+ # }
+
+ r = requests.post(url=hook["endpoint"], json=data, headers=headers)
+ if r.status_code != 200:
+ print("=======> webhook: something went wrong")
+ print(r)
+ print(r.status_code)
+ print(r.text)
+ return
+ response = None
+ try:
+ response = r.json()
+ except:
+ try:
+ response = r.text
+ except:
+ print("no response found")
+ return response
diff --git a/api/chalicelib/core/weekly_report.py b/api/chalicelib/core/weekly_report.py
new file mode 100644
index 000000000..23ff97446
--- /dev/null
+++ b/api/chalicelib/core/weekly_report.py
@@ -0,0 +1,233 @@
+from chalicelib.utils import pg_client, helper
+from chalicelib.utils.helper import environ
+from chalicelib.utils.helper import get_issue_title
+
+LOWEST_BAR_VALUE = 3
+
+
+def get_config(user_id):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify("""\
+ SELECT users.weekly_report
+ FROM public.users
+ WHERE users.deleted_at ISNULL AND users.user_id=%(user_id)s
+ LIMIT 1;""", {"user_id": user_id}))
+ result = cur.fetchone()
+ return helper.dict_to_camel_case(result)
+
+
+def edit_config(user_id, weekly_report):
+ with pg_client.PostgresClient() as cur:
+ cur.execute(cur.mogrify("""\
+ UPDATE public.users
+ SET weekly_report= %(weekly_report)s
+ WHERE users.deleted_at ISNULL
+ AND users.user_id=%(user_id)s
+ RETURNING weekly_report;""", {"user_id": user_id, "weekly_report": weekly_report}))
+ result = cur.fetchone()
+ return helper.dict_to_camel_case(result)
+
+
+def cron():
+ with pg_client.PostgresClient() as cur:
+ cur.execute("""\
+ SELECT project_id,
+ name AS project_name,
+ users.emails AS emails,
+ TO_CHAR(DATE_TRUNC('day', now()) - INTERVAL '1 week', 'Mon. DDth, YYYY') AS period_start,
+ TO_CHAR(DATE_TRUNC('day', now()), 'Mon. DDth, YYYY') AS period_end,
+ COALESCE(week_0_issues.count, 0) AS this_week_issues_count,
+ COALESCE(week_1_issues.count, 0) AS past_week_issues_count,
+ COALESCE(month_1_issues.count, 0) AS past_month_issues_count
+ FROM public.projects
+ INNER JOIN LATERAL (
+ SELECT sessions.project_id
+ FROM public.sessions
+ WHERE sessions.project_id = projects.project_id
+ AND start_ts >= (EXTRACT(EPOCH FROM now() - INTERVAL '3 days') * 1000)::BIGINT
+ LIMIT 1) AS recently_active USING (project_id)
+ INNER JOIN LATERAL (
+ SELECT COALESCE(ARRAY_AGG(email), '{}') AS emails
+ FROM public.users
+ WHERE users.tenant_id = projects.tenant_id
+ AND users.deleted_at ISNULL
+ AND users.weekly_report
+ ) AS users ON (TRUE)
+ LEFT JOIN LATERAL (
+ SELECT COUNT(issues.*) AS count
+ FROM events_common.issues
+ INNER JOIN public.sessions USING (session_id)
+ WHERE sessions.project_id = projects.project_id
+ AND issues.timestamp >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT
+ ) AS week_0_issues ON (TRUE)
+ LEFT JOIN LATERAL (
+ SELECT COUNT(issues.*) AS count
+ FROM events_common.issues
+ INNER JOIN public.sessions USING (session_id)
+ WHERE sessions.project_id = projects.project_id
+ AND issues.timestamp <= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT
+ AND issues.timestamp >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '2 week') * 1000)::BIGINT
+ ) AS week_1_issues ON (TRUE)
+ LEFT JOIN LATERAL (
+ SELECT COUNT(issues.*) AS count
+ FROM events_common.issues
+ INNER JOIN public.sessions USING (session_id)
+ WHERE sessions.project_id = projects.project_id
+ AND issues.timestamp <= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT
+ AND issues.timestamp >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '5 week') * 1000)::BIGINT
+ ) AS month_1_issues ON (TRUE)
+ WHERE projects.deleted_at ISNULL;""")
+ projects_data = cur.fetchall()
+ for p in projects_data:
+ print(f"checking {p['project_name']} : {p['project_id']}")
+ if len(p["emails"]) == 0 \
+ or p["this_week_issues_count"] + p["past_week_issues_count"] + p["past_month_issues_count"] == 0:
+ print('ignore')
+ continue
+ print("valid")
+ p["past_week_issues_evolution"] = helper.__decimal_limit(
+ helper.__progress(p["this_week_issues_count"], p["past_week_issues_count"]), 1)
+ p["past_month_issues_evolution"] = helper.__decimal_limit(
+ helper.__progress(p["this_week_issues_count"], p["past_month_issues_count"]), 1)
+ cur.execute(cur.mogrify("""
+ SELECT LEFT(TO_CHAR(timestamp_i, 'Dy'),1) AS day_short,
+ TO_CHAR(timestamp_i, 'Mon. DD, YYYY') AS day_long,
+ (
+ SELECT COUNT(*)
+ FROM events_common.issues INNER JOIN public.issues USING (issue_id)
+ WHERE project_id = %(project_id)s
+ AND timestamp >= (EXTRACT(EPOCH FROM timestamp_i) * 1000)::BIGINT
+ AND timestamp <= (EXTRACT(EPOCH FROM timestamp_i + INTERVAL '1 day') * 1000)::BIGINT
+ ) AS issues_count
+ FROM generate_series(
+ DATE_TRUNC('day', now()) - INTERVAL '7 days',
+ DATE_TRUNC('day', now()) - INTERVAL '1 day',
+ '1 day'::INTERVAL
+ ) AS timestamp_i
+ ORDER BY timestamp_i;""", {"project_id": p["project_id"]}))
+ days_partition = cur.fetchall()
+ max_days_partition = max(x['issues_count'] for x in days_partition)
+ for d in days_partition:
+ if max_days_partition <= 0:
+ d["value"] = LOWEST_BAR_VALUE
+ else:
+ d["value"] = d["issues_count"] * 100 / max_days_partition
+ d["value"] = d["value"] if d["value"] > LOWEST_BAR_VALUE else LOWEST_BAR_VALUE
+ cur.execute(cur.mogrify("""\
+ SELECT type, COUNT(*) AS count
+ FROM events_common.issues INNER JOIN public.issues USING (issue_id)
+ WHERE project_id = %(project_id)s
+ AND timestamp >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '7 days') * 1000)::BIGINT
+ GROUP BY type
+ ORDER BY count DESC, type
+ LIMIT 4;""", {"project_id": p["project_id"]}))
+ issues_by_type = cur.fetchall()
+ max_issues_by_type = sum(i["count"] for i in issues_by_type)
+ for i in issues_by_type:
+ i["type"] = get_issue_title(i["type"])
+ if max_issues_by_type <= 0:
+ i["value"] = LOWEST_BAR_VALUE
+ else:
+ i["value"] = i["count"] * 100 / max_issues_by_type
+ cur.execute(cur.mogrify("""\
+ SELECT TO_CHAR(timestamp_i, 'Dy') AS day_short,
+ TO_CHAR(timestamp_i, 'Mon. DD, YYYY') AS day_long,
+ COALESCE((SELECT JSONB_AGG(sub)
+ FROM (
+ SELECT type, COUNT(*) AS count
+ FROM events_common.issues
+ INNER JOIN public.issues USING (issue_id)
+ WHERE project_id = %(project_id)s
+ AND timestamp >= (EXTRACT(EPOCH FROM timestamp_i) * 1000)::BIGINT
+ AND timestamp <= (EXTRACT(EPOCH FROM timestamp_i + INTERVAL '1 day') * 1000)::BIGINT
+ GROUP BY type
+ ORDER BY count
+ ) AS sub), '[]'::JSONB) AS partition
+ FROM generate_series(
+ DATE_TRUNC('day', now()) - INTERVAL '7 days',
+ DATE_TRUNC('day', now()) - INTERVAL '1 day',
+ '1 day'::INTERVAL
+ ) AS timestamp_i
+ GROUP BY timestamp_i
+ ORDER BY timestamp_i;""", {"project_id": p["project_id"]}))
+ issues_breakdown_by_day = cur.fetchall()
+ for i in issues_breakdown_by_day:
+ i["sum"] = sum(x["count"] for x in i["partition"])
+ for j in i["partition"]:
+ j["type"] = get_issue_title(j["type"])
+ max_days_partition = max(i["sum"] for i in issues_breakdown_by_day)
+ for i in issues_breakdown_by_day:
+ for j in i["partition"]:
+ if max_days_partition <= 0:
+ j["value"] = LOWEST_BAR_VALUE
+ else:
+ j["value"] = j["count"] * 100 / max_days_partition
+ j["value"] = j["value"] if j["value"] > LOWEST_BAR_VALUE else LOWEST_BAR_VALUE
+ cur.execute(cur.mogrify("""
+ SELECT type,
+ COUNT(*) AS issue_count,
+ COUNT(DISTINCT session_id) AS sessions_count,
+ (SELECT COUNT(DISTINCT sessions.session_id)
+ FROM public.sessions
+ INNER JOIN events_common.issues AS sci USING (session_id)
+ INNER JOIN public.issues AS si USING (issue_id)
+ WHERE si.project_id = %(project_id)s
+ AND sessions.project_id = %(project_id)s
+ AND sessions.start_ts <= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT
+ AND sessions.start_ts >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '2 weeks') * 1000)::BIGINT
+ AND si.type = mi.type
+ AND sessions.duration IS NOT NULL
+ ) AS last_week_sessions_count,
+ (SELECT COUNT(DISTINCT sci.session_id)
+ FROM public.sessions
+ INNER JOIN events_common.issues AS sci USING (session_id)
+ INNER JOIN public.issues AS si USING (issue_id)
+ WHERE si.project_id = %(project_id)s
+ AND sessions.project_id = %(project_id)s
+ AND sessions.start_ts <= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT
+ AND sessions.start_ts >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '5 weeks') * 1000)::BIGINT
+ AND si.type = mi.type
+ AND sessions.duration IS NOT NULL
+ ) AS last_month_sessions_count
+ FROM events_common.issues
+ INNER JOIN public.issues AS mi USING (issue_id)
+ INNER JOIN public.sessions USING (session_id)
+ WHERE mi.project_id = %(project_id)s AND sessions.project_id = %(project_id)s AND sessions.duration IS NOT NULL
+ AND sessions.start_ts >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT
+ GROUP BY type
+ ORDER BY issue_count DESC;""", {"project_id": p["project_id"]}))
+ issues_breakdown_list = cur.fetchall()
+ if len(issues_breakdown_list) > 4:
+ others = {"type": "Others",
+ "sessions_count": sum(i["sessions_count"] for i in issues_breakdown_list[4:]),
+ "issue_count": sum(i["issue_count"] for i in issues_breakdown_list[4:]),
+ "last_week_sessions_count": sum(
+ i["last_week_sessions_count"] for i in issues_breakdown_list[4:]),
+ "last_month_sessions_count": sum(
+ i["last_month_sessions_count"] for i in issues_breakdown_list[4:])}
+ issues_breakdown_list = issues_breakdown_list[:4]
+ issues_breakdown_list.append(others)
+ for i in issues_breakdown_list:
+ i["type"] = get_issue_title(i["type"])
+ i["last_week_sessions_evolution"] = helper.__decimal_limit(
+ helper.__progress(i["sessions_count"], i["last_week_sessions_count"]), 1)
+ i["last_month_sessions_evolution"] = helper.__decimal_limit(
+ helper.__progress(i["sessions_count"], i["last_month_sessions_count"]), 1)
+ i["sessions_count"] = f'{i["sessions_count"]:,}'
+ keep_types = [i["type"] for i in issues_breakdown_list]
+ for i in issues_breakdown_by_day:
+ keep = []
+ for j in i["partition"]:
+ if j["type"] in keep_types:
+ keep.append(j)
+ i["partition"] = keep
+ helper.async_post(environ['email_funnel'] % "weekly_report2",
+ {"email": p.pop("emails"),
+ "data": {
+ **p,
+ "days_partition": days_partition,
+ "issues_by_type": issues_by_type,
+ "issues_breakdown_by_day": issues_breakdown_by_day,
+ "issues_breakdown_list": issues_breakdown_list
+ }
+ })
diff --git a/api/chalicelib/utils/TimeUTC.py b/api/chalicelib/utils/TimeUTC.py
new file mode 100644
index 000000000..4b19c45ba
--- /dev/null
+++ b/api/chalicelib/utils/TimeUTC.py
@@ -0,0 +1,115 @@
+from datetime import datetime, timedelta
+from calendar import monthrange
+import pytz
+
+
+class TimeUTC:
+ MS_MINUTE = 60 * 1000
+ MS_HOUR = MS_MINUTE * 60
+ MS_DAY = MS_HOUR * 24
+ MS_MONTH = MS_DAY * 30
+ MS_MONTH_TRUE = monthrange(datetime.now(pytz.utc).astimezone(pytz.utc).year,
+ datetime.now(pytz.utc).astimezone(pytz.utc).month)[1] * MS_DAY
+ RANGE_VALUE = None
+
+ @staticmethod
+ def midnight(delta_days=0):
+ return int((datetime.now(pytz.utc) + timedelta(delta_days)) \
+ .replace(hour=0, minute=0, second=0, microsecond=0) \
+ .astimezone(pytz.utc).timestamp() * 1000)
+
+ @staticmethod
+ def __now(delta_days=0, delta_minutes=0, delta_seconds=0):
+ return (datetime.now(pytz.utc) + timedelta(days=delta_days, minutes=delta_minutes, seconds=delta_seconds)) \
+ .astimezone(pytz.utc)
+
+ @staticmethod
+ def now(delta_days=0, delta_minutes=0, delta_seconds=0):
+ return int(TimeUTC.__now(delta_days=delta_days, delta_minutes=delta_minutes,
+ delta_seconds=delta_seconds).timestamp() * 1000)
+
+ @staticmethod
+ def month_start(delta_month=0):
+ month = TimeUTC.__now().month + delta_month
+ return int(datetime.now(pytz.utc) \
+ .replace(year=TimeUTC.__now().year + ((-12 + month) // 12 if month % 12 <= 0 else month // 12),
+ month=12 + month % 12 if month % 12 <= 0 else month % 12 if month > 12 else month,
+ day=1,
+ hour=0, minute=0,
+ second=0,
+ microsecond=0) \
+ .astimezone(pytz.utc).timestamp() * 1000)
+
+ @staticmethod
+ def year_start(delta_year=0):
+ return int(datetime.now(pytz.utc) \
+ .replace(year=TimeUTC.__now().year + delta_year, month=1, day=1, hour=0, minute=0, second=0,
+ microsecond=0) \
+ .astimezone(pytz.utc).timestamp() * 1000)
+
+ @staticmethod
+ def custom(year=None, month=None, day=None, hour=None, minute=None):
+ args = locals()
+ return int(datetime.now(pytz.utc) \
+ .replace(**{key: args[key] for key in args if args[key] is not None}, second=0, microsecond=0) \
+ .astimezone(pytz.utc).timestamp() * 1000)
+
+ @staticmethod
+ def future(delta_day, delta_hour, delta_minute, minutes_period=None, start=None):
+ this_time = TimeUTC.__now()
+ if delta_day == -1:
+ if this_time.hour < delta_hour or this_time.hour == delta_hour and this_time.minute < delta_minute:
+ return TimeUTC.custom(hour=delta_hour, minute=delta_minute)
+
+ return TimeUTC.custom(day=TimeUTC.__now(1).day, hour=delta_hour, minute=delta_minute)
+ elif delta_day > -1:
+ if this_time.weekday() < delta_day or this_time.weekday() == delta_day and (
+ this_time.hour < delta_hour or this_time.hour == delta_hour and this_time.minute < delta_minute):
+ return TimeUTC.custom(day=TimeUTC.__now(delta_day - this_time.weekday()).day, hour=delta_hour,
+ minute=delta_minute)
+
+ return TimeUTC.custom(day=TimeUTC.__now(7 + delta_day - this_time.weekday()).day, hour=delta_hour,
+ minute=delta_minute)
+ if start is not None:
+ return start + minutes_period * 60 * 1000
+
+ return TimeUTC.now(delta_minutes=minutes_period)
+
+ @staticmethod
+ def from_ms_timestamp(ts):
+ return datetime.fromtimestamp(ts // 1000, pytz.utc)
+
+ @staticmethod
+ def to_human_readable(ts, fmt='%Y-%m-%d %H:%M:%S UTC'):
+ return datetime.utcfromtimestamp(ts // 1000).strftime(fmt)
+
+ @staticmethod
+ def human_to_timestamp(ts, pattern):
+ return int(datetime.strptime(ts, pattern).timestamp() * 1000)
+
+ @staticmethod
+ def datetime_to_timestamp(date):
+ if date is None:
+ return None
+ return int(datetime.timestamp(date) * 1000)
+
+ @staticmethod
+ def get_start_end_from_range(range_value):
+ range_value = range_value.upper()
+ if TimeUTC.RANGE_VALUE is None:
+ this_instant = TimeUTC.now()
+ TimeUTC.RANGE_VALUE = {
+ "TODAY": {"start": TimeUTC.midnight(), "end": this_instant},
+ "YESTERDAY": {"start": TimeUTC.midnight(delta_days=-1), "end": TimeUTC.midnight()},
+ "LAST_7_DAYS": {"start": TimeUTC.midnight(delta_days=-7), "end": this_instant},
+ "LAST_30_DAYS": {"start": TimeUTC.midnight(delta_days=-30), "end": this_instant},
+ "THIS_MONTH": {"start": TimeUTC.month_start(), "end": this_instant},
+ "LAST_MONTH": {"start": TimeUTC.month_start(delta_month=-1), "end": TimeUTC.month_start()},
+ "THIS_YEAR": {"start": TimeUTC.year_start(), "end": this_instant},
+ "CUSTOM_RANGE": {"start": TimeUTC.midnight(delta_days=-7), "end": this_instant} # Default is 7 days
+ }
+ return TimeUTC.RANGE_VALUE[range_value]["start"], TimeUTC.RANGE_VALUE[range_value]["end"]
+
+ @staticmethod
+ def get_utc_offset():
+ return int((datetime.now(pytz.utc).now() - datetime.now(pytz.utc).replace(tzinfo=None)).total_seconds() * 1000)
diff --git a/api/chalicelib/utils/__init__.py b/api/chalicelib/utils/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/api/chalicelib/utils/args_transformer.py b/api/chalicelib/utils/args_transformer.py
new file mode 100644
index 000000000..5611df054
--- /dev/null
+++ b/api/chalicelib/utils/args_transformer.py
@@ -0,0 +1,10 @@
+def int_arg(x):
+ return int(x) if x is not None else int(0)
+
+
+def float_arg(x):
+ return float(x) if x is not None else float(0)
+
+
+def string(x):
+ return x
diff --git a/api/chalicelib/utils/captcha.py b/api/chalicelib/utils/captcha.py
new file mode 100644
index 000000000..f499a6da9
--- /dev/null
+++ b/api/chalicelib/utils/captcha.py
@@ -0,0 +1,24 @@
+from chalicelib.utils.helper import environ as env
+import requests
+from chalicelib.utils import helper
+
+
+def __get_captcha_config():
+ return env["captcha_server"], env["captcha_key"]
+
+
+def is_valid(response):
+ if not helper.allow_captcha():
+ print("!! Captcha is disabled")
+ return True
+ url, secret = __get_captcha_config()
+ r = requests.post(url=url, data={"secret": secret, "response": response})
+ if r.status_code != 200:
+ print("something went wrong")
+ print(r)
+ print(r.status_code)
+ print(r.text)
+ return
+ r = r.json()
+ print(r)
+ return r["success"]
diff --git a/api/chalicelib/utils/dev.py b/api/chalicelib/utils/dev.py
new file mode 100644
index 000000000..3b350ce7e
--- /dev/null
+++ b/api/chalicelib/utils/dev.py
@@ -0,0 +1,28 @@
+from functools import wraps
+from time import time
+import inspect
+from chalicelib.utils import helper
+
+
+def timed(f):
+ @wraps(f)
+ def wrapper(*args, **kwds):
+ if not helper.TRACK_TIME:
+ return f(*args, **kwds)
+ start = time()
+ result = f(*args, **kwds)
+ elapsed = time() - start
+ if inspect.stack()[1][3] == "_view_func":
+ print("DEBUG: %s: took %d s to finish" % (f.__name__, elapsed))
+ else:
+ call_stack = [i[3] for i in inspect.stack()[1:] if i[3] != "wrapper"]
+ call_stack = [c for c in call_stack if
+ c not in ['__init__', '__call__', 'finish_request', 'process_request_thread',
+ 'handle_request', '_generic_handle', 'handle', '_bootstrap_inner', 'run',
+ '_bootstrap', '_main_rest_api_handler', '_user_handler',
+ '_get_view_function_response', 'wrapped_event', 'handle_one_request',
+ '_global_error_handler', 'asayer_middleware']]
+ print("DEBUG: %s > %s took %d s to finish" % (" > ".join(call_stack), f.__name__, elapsed))
+ return result
+
+ return wrapper
diff --git a/api/chalicelib/utils/email_handler.py b/api/chalicelib/utils/email_handler.py
new file mode 100644
index 000000000..2de35e616
--- /dev/null
+++ b/api/chalicelib/utils/email_handler.py
@@ -0,0 +1,90 @@
+import base64
+import re
+from email.header import Header
+from email.mime.image import MIMEImage
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+
+from chalicelib.utils import helper, smtp
+from chalicelib.utils.helper import environ
+
+
+def __get_subject(subject):
+ return subject if helper.is_production() else f"{helper.get_stage_name()}: {subject}"
+
+
+def __get_html_from_file(source, formatting_variables):
+ if formatting_variables is None:
+ formatting_variables = {}
+ formatting_variables["frontend_url"] = environ["SITE_URL"]
+ with open(source, "r") as body:
+ BODY_HTML = body.read()
+ if formatting_variables is not None and len(formatting_variables.keys()) > 0:
+ BODY_HTML = re.sub(r"%(?![(])", "%%", BODY_HTML)
+ BODY_HTML = BODY_HTML % {**formatting_variables}
+ return BODY_HTML
+
+
+def __replace_images(HTML):
+ pattern_holder = re.compile(r' ')
+ return HTML, mime_img
+
+
+def send_html(BODY_HTML, SUBJECT, recipient, bcc=None):
+ BODY_HTML, mime_img = __replace_images(BODY_HTML)
+ if not isinstance(recipient, list):
+ recipient = [recipient]
+ msg = MIMEMultipart()
+ msg['Subject'] = Header(__get_subject(SUBJECT), 'utf-8')
+ msg['From'] = environ["EMAIL_FROM"]
+ msg['To'] = ""
+ body = MIMEText(BODY_HTML.encode('utf-8'), 'html', "utf-8")
+ msg.attach(body)
+ for m in mime_img:
+ msg.attach(m)
+
+ with smtp.SMTPClient() as s:
+ for r in recipient:
+ msg.replace_header("To", r)
+ r = [r]
+ if bcc is not None and len(bcc) > 0:
+ r += [bcc]
+ try:
+ print(f"Email sending to: {r}")
+ s.sendmail(msg['FROM'], r, msg.as_string().encode('ascii'))
+ except Exception as e:
+ print("!!! Email error!")
+ print(e)
+
+
+def send_text(recipients, text, subject):
+ with smtp.SMTPClient() as s:
+ msg = MIMEMultipart()
+ msg['Subject'] = Header(__get_subject(subject), 'utf-8')
+ msg['From'] = environ["EMAIL_FROM"]
+ msg['To'] = ", ".join(recipients)
+ body = MIMEText(text)
+ msg.attach(body)
+ try:
+ s.sendmail(msg['FROM'], recipients, msg.as_string().encode('ascii'))
+ except Exception as e:
+ print("!! Text-email failed: " + subject),
+ print(e)
+
+
+def __escape_text_html(text):
+ return text.replace("@", "@ ").replace(".", ". ").replace("=", "= ")
diff --git a/api/chalicelib/utils/email_helper.py b/api/chalicelib/utils/email_helper.py
new file mode 100644
index 000000000..3e5565f26
--- /dev/null
+++ b/api/chalicelib/utils/email_helper.py
@@ -0,0 +1,119 @@
+from chalicelib.utils.TimeUTC import TimeUTC
+from chalicelib.utils.email_handler import __get_html_from_file, send_html, __escape_text_html
+
+
+def send_team_invitation(recipient, user_name, temp_password, client_id, sender_name):
+ BODY_HTML = __get_html_from_file("chalicelib/utils/html/invitation.html",
+ formatting_variables={"userName": __escape_text_html(user_name),
+ "password": temp_password, "clientId": client_id,
+ "sender": sender_name})
+ SUBJECT = "Welcome to Asayer"
+ send_html(BODY_HTML, SUBJECT, recipient)
+
+
+def send_reset_code(recipient, reset_code):
+ BODY_HTML = __get_html_from_file("chalicelib/utils/html/reset_password.html",
+ formatting_variables={"code": reset_code})
+ SUBJECT = "Password recovery"
+ send_html(BODY_HTML, SUBJECT, recipient)
+
+
+def send_assign_session(recipient, message, link):
+ BODY_HTML = __get_html_from_file("chalicelib/utils/html/assignment.html",
+ formatting_variables={"message": message,
+ "now": TimeUTC.to_human_readable(TimeUTC.now()),
+ "link": link})
+ SUBJECT = "assigned session"
+ send_html(BODY_HTML, SUBJECT, recipient)
+
+
+def alert_email(recipients, subject, data):
+ BODY_HTML = __get_html_from_file("chalicelib/utils/html/alert_notification.html", formatting_variables=data)
+ send_html(BODY_HTML=BODY_HTML, SUBJECT=subject, recipient=recipients)
+
+
+def __get_color(idx):
+ return "#3EAAAF" if idx == 0 else "#77C3C7" if idx == 1 else "#9ED4D7" if idx == 2 else "#99d59a"
+
+
+def weekly_report2(recipients, data):
+ data["o_tr_u"] = ""
+ data["o_tr_d"] = ""
+ for d in data["days_partition"]:
+ data[
+ "o_tr_u"] += f"""
+
+ """
+ data[
+ "o_tr_d"] += f"""{d["day_short"]} """
+
+ data[
+ "past_week_issues_status"] = f' 0 else "decrease"}.png" width="15px" height="10px" style="font-weight:300;vertical-align:middle">'
+ data["week_decision"] = "More" if data["past_week_issues_evolution"] > 0 else "Fewer"
+ data["past_week_issues_evolution"] = abs(data["past_week_issues_evolution"])
+ data[
+ "past_month_issues_status"] = f' 0 else "decrease"}.png" width="15px" height="10px" style="font-weight:300;vertical-align:middle">'
+ data["month_decision"] = "More" if data["past_month_issues_evolution"] > 0 else "Fewer"
+ data["past_month_issues_evolution"] = abs(data["past_month_issues_evolution"])
+ data["progress_legend"] = []
+ data["progress_tr"] = ""
+ for idx, i in enumerate(data["issues_by_type"]):
+ color = __get_color(idx)
+ data["progress_legend"].append(
+ f"""
+ {i["count"]}{i["type"]}
+ """)
+ data[
+ "progress_tr"] += f' '
+
+ data["progress_legend"] = '' + "".join(
+ data["progress_legend"]) + " "
+ data["breakdown_list"] = ""
+ color_breakdown = {}
+ data["breakdown_list_other"] = ""
+ for idx, i in enumerate(data["issues_breakdown_list"]):
+ if idx < len(data["issues_breakdown_list"]) - 1 or i["type"].lower() != "others":
+ color = __get_color(idx)
+ color_breakdown[i["type"]] = color
+ data["breakdown_list"] += f"""
+ {i["type"]}
+ {i["sessions_count"]}
+ 0 else "decrease"}.png" width="10px" height="7px" style="font-weight:300;vertical-align:middle;margin-right: 3px;"> {abs(i["last_week_sessions_evolution"])}%
+ 0 else "decrease"}.png" width="10px" height="7px" style="font-weight:300;vertical-align:middle;margin-right: 3px;"> {abs(i["last_month_sessions_evolution"])}%
+ """
+ else:
+ data["breakdown_list_other"] = f"""
+
+ {i["type"]}
+ {i["sessions_count"]}
+ 0 else "decrease"}.png" width="10px" height="7px" style="font-weight:300;vertical-align:middle;margin-right: 3px;"> {abs(i["last_week_sessions_evolution"])}%
+ 0 else "decrease"}.png" width="10px" height="7px" style="font-weight:300;vertical-align:middle;margin-right: 3px;"> {abs(i["last_month_sessions_evolution"])}%
+
+ """
+ data["b_tr_u"] = ""
+ data["b_tr_d"] = ""
+ for i in data["issues_breakdown_by_day"]:
+ data[
+ "b_tr_d"] += f"""
+ {i["day_short"]}
+ """
+ if len(i["partition"]) > 0:
+ sup_partition = ""
+ for j in i["partition"]:
+ sup_partition += f' '
+ else:
+ sup_partition = ' '
+ data[
+ "b_tr_u"] += f"""
+
+ """
+ BODY_HTML = __get_html_from_file("chalicelib/utils/html/Project-Weekly-Report.html", formatting_variables=data)
+ SUBJECT = "Asayer Project Weekly Report"
+ send_html(BODY_HTML=BODY_HTML, SUBJECT=SUBJECT, recipient=recipients)
diff --git a/api/chalicelib/utils/event_filter_definition.py b/api/chalicelib/utils/event_filter_definition.py
new file mode 100644
index 000000000..4c132cb13
--- /dev/null
+++ b/api/chalicelib/utils/event_filter_definition.py
@@ -0,0 +1,15 @@
+class Event:
+ def __init__(self, ui_type, table, column):
+ self.ui_type = ui_type
+ self.table = table
+ self.column = column
+
+
+class SupportedFilter:
+ def __init__(self, get, query, value_limit, starts_with, starts_limit, ignore_if_starts_with):
+ self.get = get
+ self.query = query
+ self.valueLimit = value_limit
+ self.startsWith = starts_with
+ self.startsLimit = starts_limit
+ self.ignoreIfStartsWith = ignore_if_starts_with
diff --git a/api/chalicelib/utils/github_client_v3.py b/api/chalicelib/utils/github_client_v3.py
new file mode 100644
index 000000000..a86b721aa
--- /dev/null
+++ b/api/chalicelib/utils/github_client_v3.py
@@ -0,0 +1,133 @@
+import requests
+from datetime import datetime
+
+
+class github_formatters:
+
+ @staticmethod
+ def get_timestamp(ts):
+ ts = ts[:-1]
+ pattern = '%Y-%m-%dT%H:%M:%S'
+ creation = datetime.strptime(ts, pattern)
+ return int(creation.timestamp() * 1000)
+
+ @staticmethod
+ def label(label):
+ return {
+ 'id': label["id"],
+ 'name': label["name"],
+ 'description': label["description"],
+ 'color': label["color"]
+ }
+
+ @staticmethod
+ def comment(comment):
+ return {
+ 'id': str(comment["id"]),
+ 'message': comment["body"],
+ 'author': str(github_formatters.user(comment["user"])["id"]),
+ 'createdAt': github_formatters.get_timestamp(comment["created_at"])
+ }
+
+ @staticmethod
+ def issue(issue):
+ labels = [github_formatters.label(l) for l in issue["labels"]]
+ result = {
+ 'id': str(issue["number"]),
+ 'creator': str(github_formatters.user(issue["user"])["id"]),
+ 'assignees': [str(github_formatters.user(a)["id"]) for a in issue["assignees"]],
+ 'title': issue["title"],
+ 'description': issue["body"],
+ 'status': issue["state"],
+ 'createdAt': github_formatters.get_timestamp(issue["created_at"]),
+ 'closed': issue["closed_at"] is not None,
+ 'commentsCount': issue["comments"],
+ 'issueType': [str(l["id"]) for l in labels if l["name"].lower() != "asayer"],
+ 'labels': [l["name"] for l in labels]
+ }
+ return result
+
+ @staticmethod
+ def user(user):
+ if not user:
+ return None
+ result = {
+ 'id': user["id"],
+ 'name': user["login"],
+ 'avatarUrls': {'24x24': user["avatar_url"]},
+ 'email': ""
+ }
+ return result
+
+ @staticmethod
+ def team_to_dict(team):
+ if not team:
+ return None
+
+ result = {'id': team.id, 'name': team.name, 'members_count': team.members_count}
+ return result
+
+ @staticmethod
+ def repo(repo):
+ if not repo:
+ return None
+ return {
+ "id": str(repo["id"]),
+ "name": repo["name"],
+ "description": repo["description"],
+ "creator": str(repo["owner"]["id"])
+ }
+
+ @staticmethod
+ def organization(org):
+ if not org:
+ return None
+ return {
+ "id": org["id"],
+ "name": org["login"],
+ "description": org["description"],
+ "avatarUrls": {'24x42': org["avatar_url"]}
+ }
+
+
+def get_response_links(response):
+ links = {}
+ if "Link" in response.headers:
+ link_headers = response.headers["Link"].split(", ")
+ for link_header in link_headers:
+ (url, rel) = link_header.split("; ")
+ url = url[1:-1]
+ rel = rel[5:-1]
+ links[rel] = url
+ return links
+
+
+class githubV3Request:
+ __base = "https://api.github.com"
+
+ def __init__(self, token):
+ self.__token = token
+
+ def __get_request_header(self):
+ return {"Accept": "application/vnd.github.v3+json", 'Authorization': f'token {self.__token}'}
+
+ def get(self, url, params={}):
+ results = []
+ params = {"per_page": 100, **params}
+ pages = {"next": f"{self.__base}{url}", "last": ""}
+ while len(pages.keys()) > 0 and pages["next"] != pages["last"]:
+ response = requests.get(pages["next"], headers=self.__get_request_header(), params=params)
+ pages = get_response_links(response)
+ result = response.json()
+ if response.status_code != 200:
+ print("!-------- error")
+ print(result)
+ raise Exception(result["message"])
+ if isinstance(result, dict):
+ return result
+ results += result
+ return results
+
+ def post(self, url, body):
+ response = requests.post(f"{self.__base}{url}", headers=self.__get_request_header(), json=body)
+ return response.json()
diff --git a/api/chalicelib/utils/helper.py b/api/chalicelib/utils/helper.py
new file mode 100644
index 000000000..5bb809dd8
--- /dev/null
+++ b/api/chalicelib/utils/helper.py
@@ -0,0 +1,380 @@
+import math
+import random
+import re
+import string
+
+import requests
+
+local_prefix = 'local-'
+from os import environ, path
+
+import json
+
+
+def get_version_number():
+ return environ["version"]
+
+
+def get_stage_name():
+ stage = environ["stage"]
+ return stage[len(local_prefix):] if stage.startswith(local_prefix) else stage
+
+
+def is_production():
+ return get_stage_name() == "production"
+
+
+def is_staging():
+ return get_stage_name() == "staging"
+
+
+def is_onprem():
+ return not is_production() and not is_staging()
+
+
+def is_local():
+ return environ["stage"].startswith(local_prefix)
+
+
+def generate_salt():
+ return "".join(random.choices(string.hexdigits, k=36))
+
+
+def remove_empty_none_values(dictionary):
+ aux = {}
+ for key in dictionary.keys():
+ if dictionary[key] is not None:
+ if isinstance(dictionary[key], dict):
+ aux[key] = remove_empty_none_values(dictionary[key])
+ elif not isinstance(dictionary[key], str) or len(dictionary[key]) > 0:
+ aux[key] = dictionary[key]
+ return aux
+
+
+def unique_ordered_list(array):
+ uniq = []
+ [uniq.append(x) for x in array if x not in uniq]
+ return uniq
+
+
+def unique_unordered_list(array):
+ return list(set(array))
+
+
+def list_to_camel_case(items, flatten=False):
+ for i in range(len(items)):
+ if flatten:
+ items[i] = flatten_nested_dicts(items[i])
+ items[i] = dict_to_camel_case(items[i])
+
+ return items
+
+
+def dict_to_camel_case(variable, delimiter='_', ignore_keys=[]):
+ if variable is None:
+ return None
+ if isinstance(variable, str):
+ return variable
+ elif isinstance(variable, dict):
+ aux = {}
+ for key in variable.keys():
+ if key in ignore_keys:
+ aux[key] = variable[key]
+ elif isinstance(variable[key], dict):
+ aux[key_to_camel_case(key, delimiter)] = dict_to_camel_case(variable[key])
+ elif isinstance(variable[key], list):
+ aux[key_to_camel_case(key, delimiter)] = list_to_camel_case(variable[key])
+ else:
+ aux[key_to_camel_case(key, delimiter)] = variable[key]
+ return aux
+ else:
+ return variable
+
+
+def dict_to_CAPITAL_keys(variable):
+ if variable is None:
+ return None
+ if isinstance(variable, str):
+ return variable.upper()
+ elif isinstance(variable, dict):
+ aux = {}
+ for key in variable.keys():
+ if isinstance(variable[key], dict):
+ aux[key.upper()] = dict_to_CAPITAL_keys(variable[key])
+ else:
+ aux[key.upper()] = variable[key]
+ return aux
+ else:
+ return variable
+
+
+def variable_to_snake_case(variable, delimiter='_', split_number=False):
+ if isinstance(variable, str):
+ return key_to_snake_case(variable, delimiter, split_number)
+ elif isinstance(variable, dict):
+ aux = {}
+ for key in variable.keys():
+ if isinstance(variable[key], dict):
+ aux[key_to_snake_case(key, delimiter, split_number)] = variable_to_snake_case(variable[key], delimiter,
+ split_number)
+ else:
+ aux[key_to_snake_case(key, delimiter, split_number)] = variable[key]
+ return aux
+ else:
+ return variable
+
+
+def key_to_camel_case(snake_str, delimiter='_'):
+ if snake_str.startswith(delimiter):
+ snake_str = snake_str[1:]
+ components = snake_str.split(delimiter)
+ return components[0] + ''.join(x.title() for x in components[1:])
+
+
+def key_to_snake_case(name, delimiter='_', split_number=False):
+ s1 = re.sub('(.)([A-Z][a-z]+)', fr'\1{delimiter}\2', name)
+ return re.sub('([a-z])([A-Z0-9])' if split_number else '([a-z0-9])([A-Z])', fr'\1{delimiter}\2', s1).lower()
+
+
+TRACK_TIME = True
+
+
+def __sbool_to_bool(value):
+ if value is None or not isinstance(value, str):
+ return False
+ return value.lower() in ["true", "yes", "1"]
+
+
+def allow_cron():
+ return "allowCron" not in environ or __sbool_to_bool(environ["allowCron"])
+
+
+def allow_captcha():
+ return environ.get("captcha_server") is not None and environ.get("captcha_key") is not None \
+ and len(environ["captcha_server"]) > 0 and len(environ["captcha_key"]) > 0
+
+
+def allow_sentry():
+ return "sentry" not in environ or __sbool_to_bool(environ["sentry"])
+
+
+def async_post(endpoint, data):
+ data["auth"] = environ["async_Token"]
+ try:
+ requests.post(endpoint, timeout=1, json=data)
+ except requests.exceptions.ReadTimeout:
+ pass
+
+
+def string_to_sql_like(value):
+ value = re.sub(' +', ' ', value)
+ value = value.replace("*", "%")
+ if value.startswith("^"):
+ value = value[1:]
+ elif not value.startswith("%"):
+ value = '%' + value
+
+ if value.endswith("$"):
+ value = value[:-1]
+ elif not value.endswith("%"):
+ value = value + '%'
+ # value = value.replace(" ", "%")
+ return value
+
+
+def string_to_sql_like_with_op(value, op):
+ if isinstance(value, list) and len(value) > 0:
+ _value = value[0]
+ else:
+ _value = value
+ if _value is None:
+ return _value
+ if op.lower() != 'ilike':
+ return _value.replace("%", "%%")
+ _value = _value.replace("*", "%")
+ if _value.startswith("^"):
+ _value = _value[1:]
+ elif not _value.startswith("%"):
+ _value = '%' + _value
+
+ if _value.endswith("$"):
+ _value = _value[:-1]
+ elif not _value.endswith("%"):
+ _value = _value + '%'
+ return _value.replace("%", "%%")
+
+
+def is_valid_email(email):
+ return re.match(r"[^@]+@[^@]+\.[^@]+", email) is not None
+
+
+def is_valid_http_url(url):
+ regex = re.compile(
+ r'^(?:http|ftp)s?://' # http:// or https://
+ r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain...
+ r'localhost|' # localhost...
+ r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
+ r'(?::\d+)?' # optional port
+ r'(?:/?|[/?]\S+)$', re.IGNORECASE)
+
+ return re.match(regex, url) is not None
+
+
+def is_valid_url(url):
+ regex = re.compile(
+ # r'^(?:http|ftp)s?://' # http:// or https://
+ r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain...
+ r'localhost|' # localhost...
+ r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
+ r'(?::\d+)?' # optional port
+ r'(?:/?|[/?]\S+)$', re.IGNORECASE)
+
+ return re.match(regex, url) is not None
+
+
+def is_alphabet_space(word):
+ r = re.compile("^[a-zA-Z ]*$")
+ return r.match(word) is not None
+
+
+def is_alphabet_latin_space(word):
+ r = re.compile("^[a-zA-Z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s ]*$")
+ return r.match(word) is not None
+
+
+def is_alphabet_space_dash(word):
+ r = re.compile("^[a-zA-Z -]*$")
+ return r.match(word) is not None
+
+
+def is_alphanumeric_space(word):
+ r = re.compile("^[a-zA-Z0-9._\- ]*$")
+ return r.match(word) is not None
+
+
+def merge_lists_by_key(l1, l2, key):
+ merged = {}
+ for item in l1 + l2:
+ if item[key] in merged:
+ merged[item[key]].update(item)
+ else:
+ merged[item[key]] = item
+ return [val for (_, val) in merged.items()]
+
+
+def flatten_nested_dicts(obj):
+ if obj is None:
+ return None
+ result = {}
+ for key in obj.keys():
+ if isinstance(obj[key], dict):
+ result = {**result, **flatten_nested_dicts(obj[key])}
+ else:
+ result[key] = obj[key]
+ return result
+
+
+def delete_keys_from_dict(d, to_delete):
+ if isinstance(to_delete, str):
+ to_delete = [to_delete]
+ if isinstance(d, dict):
+ for single_to_delete in set(to_delete):
+ if single_to_delete in d:
+ del d[single_to_delete]
+ for k, v in d.items():
+ delete_keys_from_dict(v, to_delete)
+ elif isinstance(d, list):
+ for i in d:
+ delete_keys_from_dict(i, to_delete)
+ return d
+
+
+def explode_widget(data, key=None):
+ result = []
+ for k in data.keys():
+ if k.endswith("Progress") or k == "chart":
+ continue
+ result.append({"key": key_to_snake_case(k) if key is None else key, "data": {"value": data[k]}})
+ if k + "Progress" in data:
+ result[-1]["data"]["progress"] = data[k + "Progress"]
+ if "chart" in data:
+ result[-1]["data"]["chart"] = []
+ for c in data["chart"]:
+ result[-1]["data"]["chart"].append({"timestamp": c["timestamp"], "value": c[k]})
+ return result
+
+
+TEMP_PATH = "./" if is_local() else "/tmp/"
+
+
+def get_issue_title(issue_type):
+ return {'click_rage': "Click Rage",
+ 'dead_click': "Dead Click",
+ 'excessive_scrolling': "Excessive Scrolling",
+ 'bad_request': "Bad Request",
+ 'missing_resource': "Missing Image",
+ 'memory': "High Memory Usage",
+ 'cpu': "High CPU",
+ 'slow_resource': "Slow Resource",
+ 'slow_page_load': "Slow Page",
+ 'crash': "Crash",
+ 'ml_cpu': "High CPU",
+ 'ml_memory': "High Memory Usage",
+ 'ml_dead_click': "Dead Click",
+ 'ml_click_rage': "Click Rage",
+ 'ml_mouse_thrashing': "Mouse Thrashing",
+ 'ml_excessive_scrolling': "Excessive Scrolling",
+ 'ml_slow_resources': "Slow Resource",
+ 'custom': "Custom Event",
+ 'js_exception': "Error",
+ 'custom_event_error': "Custom Error",
+ 'js_error': "Error"}.get(issue_type, issue_type)
+
+
+def __progress(old_val, new_val):
+ return ((old_val - new_val) / new_val) * 100 if new_val > 0 else 0 if old_val == 0 else 100
+
+
+def __decimal_limit(value, limit):
+ factor = pow(10, limit)
+ value = math.floor(value * factor)
+ if value % factor == 0:
+ return value // factor
+ return value / factor
+
+
+def is_free_open_source_edition():
+ return __sbool_to_bool(environ.get("isFOS"))
+
+
+def is_enterprise_edition():
+ return __sbool_to_bool(environ.get("isEE"))
+
+
+stag_config_file = f"chalicelib/.configs/{environ['stage']}.json"
+if not path.isfile(stag_config_file):
+ print("!! stage config file not found, using .chalice/config.json only")
+else:
+ print("!! stage config file found, merging with priority to .chalice/config.json")
+ with open(stag_config_file) as json_file:
+ config = json.load(json_file)
+ environ = {**config, **environ}
+
+if (is_free_open_source_edition() or is_enterprise_edition()) and environ.get("config_file"):
+ if not path.isfile(environ.get("config_file")):
+ print("!! config file not found, using default environment")
+ else:
+ with open(environ.get("config_file")) as json_file:
+ config = json.load(json_file)
+ environ = {**environ, **config}
+
+
+def get_internal_project_id(project_id64):
+ if project_id64 < 0x10000000000000 or project_id64 >= 0x20000000000000:
+ return None
+
+ project_id64 = (project_id64 - 0x10000000000000) * 4212451012670231 & 0xfffffffffffff
+ if project_id64 > 0xffffffff:
+ return None
+ project_id = int(project_id64)
+ return project_id
diff --git a/api/chalicelib/utils/html/Project-Weekly-Report.html b/api/chalicelib/utils/html/Project-Weekly-Report.html
new file mode 100644
index 000000000..bb7b7a38e
--- /dev/null
+++ b/api/chalicelib/utils/html/Project-Weekly-Report.html
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %(project_name)s | Weekly Report
+ %(period_start)s - %(period_end)s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 287 Issues Occured This Week
+
+
+
+
+
+
+
+
+
+ %(o_tr_u)s
+
+
+ %(o_tr_d)s
+
+
+
+
+
+
+
+
+ %(past_week_issues_status)s %(past_week_issues_evolution)s%
+
+
+ %(past_month_issues_status)s %(past_month_issues_evolution)s%
+
+
+
+ %(week_decision)s than past 7 days
+
+
+ %(month_decision)s than past 30 days
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Issues by Type
+
+
+
+
+
+
+ %(progress_legend)s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Issues Breakdown
+
+
+
+ %(b_tr_u)s
+
+
+ %(b_tr_d)s
+
+
+
+
+
+
+ Type
+ Sessions
+ Past 7 Days
+ Past 30 Days
+
+
+
+ %(breakdown_list)s
+
+ %(breakdown_list_other)s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/api/chalicelib/utils/html/alert_notification.html b/api/chalicelib/utils/html/alert_notification.html
new file mode 100644
index 000000000..36f7a7614
--- /dev/null
+++ b/api/chalicelib/utils/html/alert_notification.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ New alert!
+
+ %(message)s
+
+ See metrics for more details.
+
+
+
+
+
+
+
+
+
+
+
+
+ Sent with ♡ from Asayer © 2021 - All rights reserved.
+ https://asayer.io/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/api/chalicelib/utils/html/assignment.html b/api/chalicelib/utils/html/assignment.html
new file mode 100644
index 000000000..a6eacbfbf
--- /dev/null
+++ b/api/chalicelib/utils/html/assignment.html
@@ -0,0 +1,556 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Assigned session
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Replies to this message are undeliverable and will not reach us. Please do not reply.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/api/chalicelib/utils/html/img/asayer-logo.png b/api/chalicelib/utils/html/img/asayer-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..56b14d3698f1ee3ce200d3b4f9198f5346f37f40
GIT binary patch
literal 2633
zcmV-P3byr$P)Z00006VoOIv0RI60
z0RN!9r;`8x3I0h$K~#9!?OY3RRn--}kxv9n42XQg-w-50J^}NCSArD=lq7%|+VN9q
ztPmx#9!UrKZfe1fPD=CMGadlC86m+SiiQH^*U(N)*yNyHh%VMG|y_jAO*X`G=p
zZ1^?M#@~WCNOlWxp(hS;lJq3$uHTMWf;fb@M0&3x7AZ+Mujv3J
zHtvTxukUT0Ro_&eP`jri$T*%12PUzVJkJz%{UM3&?+{7B0*)i%731xVC`YuJ)OQ3C
zO_S!oy6agwox<~crE7b^q7AzsF6;WQR@^%RQE$N>=Mg_uM57wry?@pb^Fu>>a1tgX
z@#YHRHSC3%b$j5xn%yvcR|8DjQ44XE)vYnxca~2sukscdXCf|GB#FR#i0`p$PfI)t
z*hDL0j%2(;>DgBG3GY6OU8~gT9md*nEZVU*>tAYcUjjuHJ2u%u=?s^5Sj3vZCIrWh
zYa~qC^9DS)dmqehXhPyO!i<{N;Tt>aVQN(^#8y;J#LE;Kzez6sd5O2=FS6<{{4t&XwnILFChD$lH9vd;t}6r
zlkFtyBc9oW*o^r7wH$m-eWT<4+TAdtx&a(J>ma_W24X69!IZ5#U{ZM{j4#^`k(;-|
z-J8l`bWs_MD%=di^Ebhe+#(p5U3fV(wY-OiNO+J9_A4?*H^l-#80a&D8Kx)U8rHTA
z(aXhnVh~4leV$?Mzmq((7;%R}=RJy4qa#TuJlF|#&&P=S6govNyNpdFfrk|&)Z;Yb
zQK|QIRMk7;Dr+Em`!1M_#G6=N0r!+$^L8+%_%#UISPJOzU|4=JgywEU;%$ICGxDL&
zy4<$l^ql1$B47d=a2t6jGcpG89~UG%$QB79CUpygJw{~L&-h@;GuN8bDaii^ACvG0
zto;mC3Czg%S>IEPSTYhGLku+3IB{E*!x?7BBJskJcy|?+!ia(r7@AiMgL4XDKvn?~
zFAsXJ%YoqZEa;V%@ljyv`netq#U*Ue>n!$v#03eD>8^j~ffCOm_N=28%P_-fGWd#w
ze`W0{7WHpo{pTo1_yv`FjOFg4vPcZGZP&tV0fyPUA{dli2>mk)pznGl-r5`pT9XAm
z(=s6N)wQ2=U6Hf8-ACZtpjV5|`
ztI$_5>J%hQw)bao^X*15<1Ha
z3#mqRg6&GULNjeAddd?HRgiFyt-PvzDaeR~OIh0`dLKIw+k&--AqFHoZ`mr*$qaE{M+Ow37a3iOCcf|rpfEnXns1)+O-GK45r$7k5;c%a1>
zzeQ4ZSmFVL@&(PW>3SKv{%sq&GZZA$SmJ-)V2jL1b|^>~#@ha(dG1t_JrYiv4R<0@
zPI}ApMWuilFTsD*bc-+kEf;k{yE2yPTy0RWJ)*Tg9b+aGUvWXgJvPfg(UM&aUMJ+`
ztcNVxC6FRUxJO7Bp9Ir7*z?I`retMmwiq5}u=3TDa552SzMCQQMY=BDjqh`(nbg^n
zQVwuI!e6oWf3e(4CgMcQ2NK5s`K%Z(QSyQ
zSX!eZq3HjiME5LLbdjVz%R2)J-6fw>#%S_mT%s`i0ufFeynGPx9IaOM_gyg{VUQ#|
zi4!&A9O7c_`ay+Jv?85AMdVf5jpq)}(vR&FaVq#-$#@0fGien*jlBF~B3X-KypIO1)dZj9
zgx(+@-$6NQ!5CHK#iH5ug%X1Q!=|xSiMu$uRbfG&*e;Bv73l>NyCMNJp*}T1>}9ly
z?$6pbxX7uSEZSr{O+cB{u_C`mN$73zaStGJpBhbmDpwq%+C-sF|6>)CC#}|;AJN=c
zte#J+@xLjIe3f$4r55&u8ua#Rui#S!`^wDzZMen_6^7^New7BnI>uB2jn19`YK
znk4$Y?s4q-D@}~wK{@Sd1DpJl%1TpR6P!Wb|m?X$^jy0iz6>N$YMD}
zB_dxON%>I%t)jy;_r8u36DX8)#*xRkwS#T;gq!6m;YlNja1omNpsxF(Afd0x=a=i=
zJGHD-4;7E7uN0iF6y28r<0`y^+EBCv-o;Xe03V5|iCC$2@te{w
zc10|Xc4_u&o8qg!K7KR$#a(fJW@)9MEDGy+ns@$wj9>nbr4NN?ae(x5&A13IzOVNG
rMK!;8UBpVaFOkjpSF>)rnP2FCoJjh)cG&r`00000NkvXXu0mjf9HsVl
literal 0
HcmV?d00001
diff --git a/api/chalicelib/utils/html/img/header.png b/api/chalicelib/utils/html/img/header.png
new file mode 100644
index 0000000000000000000000000000000000000000..0108751f44fbc0d06bb639d9383604c601785be3
GIT binary patch
literal 507040
zcmZ5|WmsHW(<~ZD@ZdTDLU0cbGq?nT6Ck(+cXtTx4#8al1P|^GgS-3SJ~#th&UxSO
zKKHx7_m5t?yH{0p?|OEaqP!HwJCb*BaBvth(&EZ+a7dwWa0sZVZ{XnI9b_R5uMdz+
zMZSu_!Bxkg!3>b$;Dq61#6?uy;E&r->V8N$fBJswQr1$K%unxxCMW;K$_hPsi0LP`
zh{anOR2)1(U7zg>PHtO4OX8S-$hIG3YtRv1eb12vI-&%m_wOZ<0!|I)UQTj45kaMoS*2~a4IOP|W5DZd(8}X@>*XlVSW^3FA_otT`j0$T
zPRDpOWAt~POD9f>S@e@YTCywue77nnb+%gx76CY^aK(Ow|4yvJ2c^Yp15+U=4)o;k
zP6wDT7_R{R2_k(OnKrh#M(kP1*vp0SFZwW_vH?79eLDLDzno7_U(oI;L6rnI3fQvU
zbHL6b87c&oPVM~l?jue|4K}w$8|-?S>LXmxO=5dp44w)^a2!^roNaFFq5s?OcDbKZ
z!#G`^Q43@Y2lL>H!=*mKa{vlW2+1U{KQUvHmjp+7B@d^O)20X{SES&<_au?!o)XCL
z4|8vtWf;>~rT!R4+r$F^p9CKScT!YG*Y9}=?%iwf?Ct=3
z_UU*~@ef2#G%zteH71D20&5Mbz6VL3l@@e4l#A&akNB=q;OSr+le2xT*9NJ?85NBz
zB}%cGIWLZOM*23`iRbdXf)#gJTwx3Avl-OJ!ia)%BAf`0#=exY)XwY3R2)laqXuG<2-B{
z-M{P6c=zS-uuymou9U!$D!CLd2@9!fE2qv+v&~Hn*`jSq^EowUXrGgTD&t8BS$Sq$
zWWIU?m>96&e-(?T_U=0!KUwb;h)!teJX?U!o9S>fIxn0Ry{sWy^ef!z!4eK-?p=ue
zbwWQLe{d8L*swMxW5k*Q%17_Gz^X$oiyp2(+=xC_z2EzZDC&VWGSdHI0jZ}E>7&?o
zQE;`BY7T=@mCv}&rWkX&{Y^2Ehf_^p2~0nM2t{<-YnTcsHzmaJE&!5Ki1DC=lUtsr
zT8ki-n1yUfOl<`sD`PR&H_CBB)xqbA6}t-)wFysJ3{Y}q7$QbGCX!V*<{@ChJpR0c
zgBjn_h+d@e201w6sy2qre_O-idmnYc6NC0xV5%1N_F$?F8PPOvNi4SrrFsV30j>4U
zwg%Nl9axWI{O7=0jK=g5FDhE7pTx!VDAIRUgrDOM=M#X}18vIH)J?0UJO}Ya}^rxg96(s7--=eFs{>m*6{HZeM>)0T?Mb=McEC1KQL=0s
zP574y=7h`XI=*hA@t;Iz{doolVR@xqe{(ZBl9)*I;47u!tzUFh-?S68Rb6qFoOcQ}
zhs(7eoVv`*Qi&J{1>VV`Ixp5VGn4AT$N6~^O^*?oGiC7x(wc=*{?svB3}Q+`uE8$V
zMKnZ^LPa)WfXCaUPJ){a(RdtUq(2ekPs3+>S}4W}en??hHapoOC7g##l4}vyyKpDTJ~GZ
zm5~r1xYQ8DC!U5p20KU*Y1i)c0@78Pc-Qo1_YV*`q8R@}nC7;#C%0DY)V<8+M}dw&
zoNbNWY6V3O;YM7}NQsD%s}MFf-t=is=9COq6!qeL4QIO_e-As0jUUd|aBw>*Kz1XC
z6xuQeqUdRc^r0UuN?#67%6_9$>>8z4#0<(*+kMES4;%6lvkWlmTOe|nia{ZDb87!o
z@MoxhNXl;bfi==?Lz3lDNjRZ=3}ow)Eoa}|42O42@J@r=t6*9~
zC^)m@dRI~79-f-Q%z+|YOrGW=5Mx;+*z<{B2|&1lvU`)Vn7WweL*B`ant9KzN7CqX
zsMSv9-gd4kHAX-Efw9>wlkRxpr&1XhXE6l-D^=QFV09EP^9R1g?(EYo8k$-A5%~pP
zV`tn-(;rBaVa(9DaCU2Iy$50~>IoU20&HE5AtuxC9d0b4V`{k#-g?IJgMz!nAvO5G
zx6~BB`8cAfy87L$5T?|r-o-PrSS357qw~{z*d-v0{p#7k?zeB^9G{u(jrvOibjSH_
zxw&m+mTZ9UOF1wPABAE})w_N>beiZ^ym{WANno7i%GPVKb`gGeI`dY%f}n*I8@sd$
z1E*q@=1w`qr>^e}VYHK9EldbI1ZKUh8`~0IJySr+PB|S%;6kPZFfw97BY)%mQM#g6
z6~R%3H3=>nBglR;b60
z!s*)66e*YfH&F*fZJeI9<4|mh^*gW1GYn>$6tV7Mri!d`erHCCsD*5KNRk
zKOmaSKR+3|&-by?@9ADp+;hCN(thU^P+9Z7;4?Xa%nxSMLLOwtXE{MXb%eE@cqJ%+
zh}eY|4`=JReFz8IMkBQ{N$>nEHHMR)1TJb3ZH>xfzf$mHgKIHzq50#%ZLU3LEdtwl
z?Hiw12j2I{c_PlO=;Qq^Y|y!Cy}ayrP;5HHUyGBzs;*p9s%XDM?^~?$PN`IuZn*`-
zM&rY>ZSUONVQIKDwRTBxD3cW}btmGgzniB^kV?eaig0`m9i;q3=Kbi{>91#aZFLU9
z(TJn9Gj<%Aw#{nG;9iPc^1O_GIckTPT9>7iM?!NRCY#MpnF2LBu01dMExB2E2~I;@
zsF>~eFF)D|8AY*n%3rzQO(Cm4Tf0B@jn7Bd0C*&p!r+Y9C3Kb~+8rSs?fVCiTib_n
z4R@?QB3g^tVM#21?m+-vwLSBX1PZ`~`h?2*-2N0SlAyVR^$UZ)M!}oO@`<{*?>}`kKwi9vng-^p}rA
ziN?T$##M5rQ=AFJA@4b-2qa-)K->vO-CrA`4|L&LEh7Tgj
z5LWoHbqN*cXsbMA}GqwUK@$guC-&3JN*
z(Dv7x+Jt`b2<(t(WqS;$V5GgaL@1&+!KK`x@f0-@!RJbr=Y%-8!BQiC=LzJUcfpwj
z{yoy$wX6fvo^|T5eWT$ep0?#L`j;Nq6h6)I)=|{LTZdN4L0Kg>C~Pq`K|!Ou%Dh8k
z3ea$_EsYERBiFz~Dc@(?=OHPZXD^<0Tzis5my1rcz_>|b-Y(2CV?0SaYWo5h_wu0;@clcD?`8+#*a~;#@yD;uRKY%
z6>aT;&X5??%#i4K_#N#%VK%D1c(=e+BlN;{>k}>T
z{9OAg0v~GH6b01I*YIloWxx|`1bV!>yyo2Q+c^JiBa-7tU@v3(I{aL-oSX;VQu`r{A>irf=$!D%YPLx0H^ri-
ziNsb!5md|8rX6ZeVwEj9UiWg*o4DM>%{_U21BqatX9)<8-lL&;6K9*t6KgUS5E7Ld
zKPeLH99zxA$h;TK>(-*q)iVa^JCP7O#ay#C-WkKgR-^u+)bj4Hi;~)flyRGj%whf$LC9K67O!8Sd8I?DV@`TGv-;N#QW@_A3!sG$i*Pr{|?N5ZCje
zNme+DCJTp0VnBH>0F|wPcA#6M$T-P5+4*Bm{}kLpNc$tip%^xJt1W%@#av8)!t*%K
z0o=^2Tos#j*9f4~YB*!Db%%nIY%`t3?vHD?tcwR_jwB3&rD{iXe?AO(<}n%Qz_-8K
z(Ya34*sXA(a&lzAp0$6Q6VWIsi&dx-RiRk*kr%$|M6<5tax$~Jj@rrSbtK3P7VH*r
z0H`0t^=w8}GdU5xYG?CDo3*fC%RLoh7iPM{?W62P{HHeU+o#>xDeW6?oz=I*$j(x1
zKu6w?!r})ZWd~2|5q(YY5tn4+ja^Z~;Jcf@1zFp?O=^{%28L$)LYtIJBU(vDH?ANj|6V
z6}>~hYCG^~R`A1aX`fW@rxty6ZTb}Y3(LF)8AwnztFon%f~vpT(}2Iz<3D1DFnv1x
za*sV=`2E^7hH)Kugc!cu$oXxD@QBT^3!mp*5AQI1QeVhN-NY|sT1d8DY7j5!yftaE
z`^FjLx0fM6SRby>t^wZj#^6W6JUk=f4Ujr_#fEM7`&-*19(`NBM+L5w~pxX1c
zsl8ralG%}|1gm4$MUV4u1t|x7{{&FB8-R(>cb1j=3vtM_?hyGlu`K`s_t%VFWnM
zWZ=sW%IeHU2Xpra;^O4LFXy%VdKD3aC@#AKt+ZR_Gi_*4<8Y=AId=j6!Mt}nVsBFF
zKIaTkJijkN3|3KrR~mYmsV+wR&iv_Ma1bHwnY5}m?G0U|1P+P|$vge@a~HE}bY%qb
z)c3>E(t_;ujO?2q?e3%{Km*P|jFc6e#ubOL>|}Ff@y8{A+n4*xMc*zfX~N&Jye8%-
z)kt{Ut$0g~aw#iPOWbD*`60Ypj_ONJ^U)5gS{>T$-n;9`-Fi}vL56ZrqNAI&W^3ob=O%)5_Au
zOQHvcAu5oaS*r@qT!`n{-eSi7M(9sO!VyLfzN!>@6U$S%;~ks#4uw+qG!fpr-W@!FbD6tJPmOw
zx9mKwsLas9lw0wKGJZRf6p&@nqxh#=Z+mk>@_+-yRUh`)o=pW^N>v#sIXKIxaKzdnt>modH6C)25Xu~`rM
z1>HjSA+}+ya3GkDJN|OiV8z;Udr^DXTSjJ_mfuBh{0i^#eRObGJ^E>BZ8PV%09x}BSEJ`AO!l;%A{
zFx61;eK2GyHB<%&8p&jXtV7hmruq-X)n^IZe-`vhtVp&d>SmHH9E?Qhug~JHt+W(XJKb(Zv{(Ko0Y!!b8rs#&Drm4R`M9l}(J|b>Y>gt7z%!
zFz=Jp>#KV+KNmE?(@yv8@cuu
zHwzTM7fp{DC6Vif#ja!=7iahpaLWIhQ&mi+-m@Z+qL$XT!jBDAxNT7Sj-8=i``fiP
zlPB_Z25<`cI-W)d;iJ5!i}rG=-}qye{Y9(=wCJlzS2v|p;II8;X03{l{E&=R2mMEo
zuKRc9BCU23TUzH(sSGdCO)+9E0u|FNqC+p7Xxt%3zTq)-{5FkI(qu>_@@NunL-~2%
zh%5_>=1HRMFtC_BexC;El
zKucxkg)D)^x?N2!G_=qt+luE`dG!0&Wz<|S0|ZI%1f;r+?xwrVMCL)eHB@RDgqvpq
zMwCgUVZXara?4E>*)Y3|l|qYui8>ZP^WCkquMe>v0Qib7MtG)2k#Z-Z05{-+Ze_d$
z+|Gp;|2n3;tC$B^2tBeJiBIn7E|_x^o{56;!;iWKR1IKO&{$PBFoUb;*T(Gsq)o-8<-@?A8d
zfa8KBgtE=aWwabdx*diu4>W+pTTzcLu<(fsx0}Dt^J_KefG{CH&lqI4lBH@>JTq
z)xAorG1|)rKN!e9-*A|7^p$=v4?(_Wt#+qPbDvwToJ>=zBKZ6AkAyp1t_H`{D=d#m5R)dbqw6Q@
zD<}0;F|{y8Bj+T1AGgdf91_?`iOgPEigRaOz@GmEVhOO*=gsZQFOPSis6fb*&O-oADh
za=uGI=A{c+f=$V0{BHJ(1OHx@ZpJBZ(sja2?Ax!sJ6arMpac7uAL_a-p?A#g}S}1OD9w!aeT_*%i>;?`*9A|x1k3#T?
zKtr8RL9qh=4cV6)5hHU(I)b$0%Y5I5&9$A4VGd8f7R+&ch2$|}u%31zwcqKcjL{-_
zsuPtzm|cg1AjF0$KCKaM@MDKCas-Y{0R`O7XHPqGO*egv{+
zYZIY0iY8W)SI9x`O>R*Hj*f?zj8)q*)tH|gk)D#^VYBB`ZQ&EDlXyJU(g}rdJmyqa
zK+Y*Q@3PG5nds4~piC1z`1fz$b9g)&Q-y~yW{*p&880DZ(77V5Z!1Q_qzgYy*_4k2
zmip`eRqy1-^mHZTqb-T%yYsWrRqT|6qP?6p#P0)7)XTLsT~3y@Y}!xKZ^K>3+wTO@
zq&hj){A&h1=5-ck5ARRV-A_d!Ws%)&t6@JdH&zb=+_XV@0`d2)`R=CF9TYA`W#^dPIW|84U+PFE?YQ7e_G{q;;z`^uaCP3V
z?g=T(UC?GI+GsT#!~%>3R5$tt(9eS2FR$M!@+9AaVlLUzV%VQJKNa1}p2B1;jKc}+4?U48=B
zHc?Mq;li}*&(3JV-Jjf6`y2IOZjaDj=9m4w+*p`!zOW-CGUn-%&{;#he%H_L+xhmp
z>*X_hb`ysdBU6$yexp>@??1p;6PuNa13}5jb3AoU8j#a>b86r|)9u+k7B+h>Wl|uT
zqG0Xglf8WD^>OhwqT&l<9O{8h#frifW8(M3PrH5bFOvE$or{ui)7g
zcy3RM%jC>L_(R3JuY@$Mzfd9~o3_5p^2mf+RJ88r;^0GsrzhCEk&
zAG2Ly?HcQC07chT`*B+>l{7{WeC@EOoi7QklD;0EzfQ@!5`6pGG3-iYOuQS#1^2(q
zN!FH8alEy=oZuD
zlZVxjX~5?BegZt3#Q3Ulk*(o&irKg0`%#Xlv6>s%d7fn*Yp=YzLv1U_9O3jb)tZJ7
z0LR}d?^j4Kiha)5PM*AGm=Sc*9)`(DPcOu@+mjQ8RCHsuG&`J47lUG!DMlaNZy(xf
zk=^cwr#n?T%Q!&_y|`w?1P7B)R;r8MQjV&JSSx$mC)77VF!p{S}qU
z^-!_wuQ3v_zb}*w+~>qN6LYUzwuSh02jT_%V2y8}i!B?=;f#`s^NpRXnvEsew^wH?
zo)#Gc_10QonKF4YukY~>`Q|I$^;XN@l9`Bo8c(HpPiN)p^!4y!$Lf3B2f8#&--FT9
z<#XAHE?}BCLi~dA#i@u-Q1@UZ@xy}R@)tqHZKymA+Rv}I+%<|0xta=L6pOudQGa*P
z(@*``Bq=g_MB0;t)345{Rr!{rpn(qa&q9!^7}%FLchOh08C7yvLN9L6KPHbAI#T!v
zeLeGqZcrbEccER95`ohjC>~Ds9g5@V5VoFrJ5aWNoZl@}oV0D4-T8iZ9LHWEZn}e_m&ET{BSPJ6vK*uk_H=mXN
zBtrj4uAKaya-oWiu-
zcHenx>IkIZY1&LAm|#9LXn$SdK#Jkmv1kyOBi=p;xhsfknw1lVtM$Ec-Db-H7+yf&
z9DFve*84miqivy@%n<<+G)AEl+pz7#137B~gI!b4trZ^7vjM$QRh6krvUly>s$l;oENG~@
zoAdS`m|uu|DBXw6AWl}t7gmMmgUhQ~5EB*!u>Cn3%=#kqf(KwLx9NxQt5kp}9Y+g#
zaQey-@+(MvFEbk8#2zzzx-PQTprJe1Axb##zqfctC<59R6HWyiMFb7G8+$QmquSjzZ){qe
zabfjLOp)|HbZX_IqOIYpdBWa;!d)lw%KkUdMG?8iBK{_lo@5DvKLE)oi`W
zlH-jN(9P_|Y`4dIh^(t`)Z#kp359nSUH0!CTTilH;)|p(Msh8MwU+a0$rcWEd_-oJ
z%8%UZO8Lc=ERR(KoMf$8#)4Kvzoh(Cg)ehSX|4s48tyVwC``Z_R7I84(?4tno2N`T
zBG7wBlU4^-WM~^TfAC7+RU#`vg#&!tl=+0W-%2{Vjm03#2i5Iogd~QeAwE119)<=4
zu)Nz3+w&E%fB%shNz<*TGHkW3Q0MR6q}|?@LrJ$!v)WUKVD3#zWo3l$G2b4||LLJ)*<%+1?6GTr
zc5$DJ&mVPK8fVf6pbOr1tnDZ+q-29VV_wEp>s{UJYrLJzD&=#_^7U7w7ZE
zWQ*TiXtC^(X1cj&76i?S?`d;>3t2c&EzsC0#Y6$Q0?>-BU`C8vHy`i)}7nY44LN
zd4kKUd?onQcuIk2LKCL`Sa!U0#Hi@5E&(UP-6hp0U5OUbd>A9LrxD_;?*lBYT#P=0
zyz6jh5%y!W|Hyq@s`pPW1-nxGjstwW3S&le-W#N%Ow3SlHRW%xVK|G9wjXt7S;(L8
zcD$3$Li!ef-dmWn5b=5-MnWdh(|8f0E3e|3kO%Sqzd+V6WB)7AePEDmI@k7%-*DWS
zz_%dTs9T-xTYPDWL&i1!@a|%u-N9OtQxCG<-d1jC#z0sLtV|+_w(D>9-W00mbwn4D
zP;!gqIQrW`p!;%Q0dXo~9}5!{E^R6QlPezi*ESyFRG#B5#(kX@R+qeO0;aKJ_NYOt
zEF{{~FbyaE7&!(;HrGU!NhCF^C4S!~T*DNs*6yBIo}@y6R^sCFCi2S)lsK*YUUn6
zqkH>Ws}&QgcqC)M%r>L9vCZ3^cmM4^CA(k$bYJG~^{UP1vC4a_Cz9%G;^3)%A(&&t
zB!`V!L04NuNtRc(GP(PP>|w8_bqvuh!xFu^4l0vA#&j$`xyEl~Hm;cd5HXiY9@Xew
zE>y*yKK)1v@G3gl2lz#)g^MI0hpEGU4+qx27fq_mfaEYR_~x@IWfau%S*%0S%KK7r
zYp=g7!@kULkW<#PwrR$#z^0;7m|k?<5gpdUexlhVL-bc?d)A-);~{qR{x@3z8lHIL
zlLz#P-^~U^*+@oL8Weh|*UDt@1L_ZhE2bM4f__CeB}3%MA?78xBumqB%xLBrdQiXv
zm*J5oMf86{O;d~&3=sFecqz}V<4(fr)w9=H-D@xahobR(Y!{gRWF-zkZ`hhkQ<#Qe
zM7u$3S2=i%G6A1wS>L?I%i53?zQHm5xAnRIck7FJrm29{GfiZqd_cl!x5c!YfSPM}sLgTTAfB-jd2391L
z)0o*@^*Q_h0F-6kP^{mvST?O0x@^<+Chw(!r;6vyj<|UC|D}?FJ`;B4Zo-yw-l8X+
z+>A=s?A&=j&TY&@Vr!UEY$I*+c_}G)ndMSwGNKCCWH}5J>%`@f2d#t&-_P!W=w}bt
zoi8H5^Jh!nC~Br;o;L?TdasV9a`=7|&Ec1)Ez^{jD;}O)w=rf@oo9KYH*fR2Qr%R2
zbWy1}LZR9u@Z~=2MEL`kNUwdTpxb+r;$?g~g%1Azu4TseQ}Kq3`{Ww2X$}zMMJfQIwTaL+qj48?nWZ(>5wq1uvVQDe
z?>65|{r$%{H@8*7w5dleTcnC((sSwj!9P+49i%#IR|5w7B#w$Kf;=V@VH)DghFQ28
zp2gWpH%9i4>2QO5SS(wM78#91>KD@q+%IzD1C9N-ZWTQr`ahnQs`xg*P6ll0Q=VWE
z=PhOe;F$F*hM&jk5ur@X9sPVewindVyZ$CK_Zyz3aVftwELgM;X?1DilM=W6O%B{q
zJO8G5&>F%wrGk*MVt$W~V;NA95q%P98@0r4efSqA*`Wjs@QWcPF#eIj6&M$M=>L!n
zSUrGHRWD^*R@p!gAr1gGog4A<9
zj%#2Ed4~N~a(DHD
zY|dM)yVW?{6stDLdBZcu9|uh0zl>F{n%(AHmG@c-5O^x%e{=Hu8%2JC!NvhQl~B~p
zStn}ZV5#Z>BA6zVFLM_6sqeVQ_g~mftoq*^_*DPbHfakbMW_)rF#g28(MUOn3kpmI
zc&{LW_iWqSwA~@5U>;r1wqI1fYk%B5|-NsDf5M$EtVwEbM)x_-A9}A{MVQ4HRx^
zbe&8Tn9xf_A|j^)p^cpa($X+)wbuLvmkGJre~_l-W+d)aJh}gK6fPe~`u`G7&m#%h
ziWDxZLCP7oIi_WRz4?j4jK`mV-@Y3#4#D0Fp93w^r>}fZ1;ul0y`09ue`s?UJS0~%
zpdagT!{T0K)m@_}h2qWy&GbdXjL40Dmx5^OX0$Hjn%QVC`XSHBokeHlycL*60Xv6;
z0qh=33g@pfB=mB%4%geN2Q;tdw(s1OANl_D8*N8c!uqGgb-LciLKN=@8M-1;hIsTO
z8p0X|2DyNnH|4F8h5f_Dz?r0cOu0|?1qneuGwR==Uxjmt4kKkd=m~QWX+IR$t3Mek
zPXC(s43uVnJmgVDF9b&XPxAjOe=~PObZ;+91!v?FKM+i3YPtT7eK36J!{|_5d&KoE
ziY30O5{Q#NBEI7K6c^$p0NBQicmF(ZVfBf?_K6v1>6)`WIQLUUlRHwOlffXG0ebot
zpWi>2z8wj9+y1J1j<+=tB@?-AbOUqebev;B_+g
zb-L^EZ#|L`QID-{-<*}GZjU{^b?sNb&=UlZ?HqMM>`F$raOi1TUwab^hcq-;(9Zh}
z5dV`0wVyL3d+2kVffp3aW%N|{NB%x3f(KNUSa_S|H<{d-%!#kc8@c*
zu@=PfwM~W;BCdFhWjo&}w>#aC(ts{kK}q}mI-(ErZ!sv%{#luXp*MUz{)7gr5
zJs}OS=2F{^n*fM&wy#*zR=S(HJ{g^KQHMNUzxl2B=ULG(!?$kJ>b?P5@PUZUab@_q
z>kVw}#~(LwH$-~zK0T1|y!nS{Ax4g;EiG}pWn3=NYlA)Xf@T2)L%STyXw*y0BJHDLZSl*C#0qQOn)U;vtx3@G2;_T}kzU^sdvf
zYCRf3q(F1J2~;C(A5rX{F~WhbNc%xcax4tS*(&w
zQG-4^P%M`HKeLOkU`$-okBdIX=aT4{A63VVG(n*0_Cweng^SOo!n!WBvP19L9Q;SE
z59YQiXBi{lEYalrG*^@DyR?fPbt}7F?=xNh+qb=P4R^6C=K4t}j=}%!D4}EP&&(AU
zgba#<7Ryg|#}4f+=ZBxQ+NKb7-HlJM$n`3t|4Za&WtsaKD8NG4SWJh*7fGq&;mYHT
zZ*oG@0HJ3>&uYOVT#!)gKzF`^<|nl^w5Ss)#`)qq!PMq%woqspC+kxpf}zq3qfmaZ
z?E_d|=Nd~EVT$!3bD%l&Fe&TY{amMr`cnkg>oqX%|Cfqm=(suGI&`}Sy5zdW@-fYk1r6?}KFWE_E0s(7%#aSs<^M^wR
zPUWqW-@#x184vyX7e*O*RO=spQTVJ#7d5zJ{Cu6*UWJsqVczQi6<>0%=I-GF6U2I1
z*cCEo$l~``u0LZmx%F3~67gEeGa9DyD!UdkUx_-kX1~W+@Q@VRPzsuAlTUmrkB8kk
zv&gBKD|>5!Wao!=S5)CwQd$D1(2L%oG*db%@+yRQZ~i00MYN%14w7Uyu4ij{+$Sr=
zqWn{ah8K~p*(b{lN!u4{HxWND6UmnwumXganq1cd71Vuk@16~qY;!tV4a&mlL82U+
zPN;oXo_S9Cp9JBL55<&8CVM`AU-xHO{Yx{c$7xA{Vv3d6l5Bg3Dg@K*piS#)AbU8I
z@+92q>jmXz1bsfSm5o6QVeHbgaN8&~fsj^<*2bo6*{VQoRmYh&PF2n%5$t!!(GDnS
zDfH%;pxM-GEid|uf$0aH4jpxNPZxIr1Itg1C5+{)k*z<^MBwfD9ZW}&Xl<8k?>Eba
zew*r5Ua?7$2z~6Ie!|swa-cAO#nRps!<$*#5~44Kt(P;VrTTaB5A@*ZvOY1_HQMT5
zHL={A5&JGqdI)5c=gc#VbuDtQF7t?|D^GATvq_gd_^)iC-cd2=YSIU`WfVLA-rHL3
z^vkwqe)WnQtrUX^!TT4ty}PVXfsnb5@esz~?2B$3p1H7i_OcF?^lvr=E^FV;__`HH
z7gU{SvTVLOVi)|{s9vG5kbYGU18I6m3Dt>Mg4@?>jh6GkHWIJPw*zx|oA@1AzL2D#
zUIb!7?1&J;<+`okz3dw8UhbOV>JO(&txd-ZAi2vrT0uAT%F6(C=03tjCOX-Rpl(oO
z(W-{6Nc(NU?33O0R0}v57e@O<1N~trJ*^z`%Dk+rMAlO+E$6Uj%rkp5g#LrFSLNyJ
zm;HWQwx=3WJ@<(QR@;Sdt^gnVRd%!=!!~#->lA@o?h|2PHNoqAHX;2icGs4qvTsR7
z_Li}?viDP+abA@|fFA&tskeq5?eG0Sh*ntom8gP
zk@UNhG|8th#m6Ew(tNjIb?`41h({rc;Iy>o5!UD{`TaBNd)DHbz_auCtlk#2aHp6=
zgn*aVahby&i3#8p9(bx5y&b2Mxw#_eR^6re{5mYXKfb~X?S_C+t>1pax~1=;RiTIgkzX|TNKIKV|>*QIxrq;=tATymb&b&&->ZdziZ1!a`+dE5B7B_6ueL?}
ztF1qkm{ABe#=M(+6Kb;bzoGl29iJ@LM9{2w`==`cy|I^ilDu)8}gelkNBx)y}ir5|L>kE?sW`_
zx#I#24vb>1mt;ueyaUR;dYjrEO*MV@uFk?CVuT>BE(HE~$>TbNE!9W$Vb_yokcKk>
z_HxUivoLZpt})*AtSp
z?>&C^mws`)l7IJ?k*b_yOGC2SfJd>x#qoNF-UD?Tt-*!h&dyx~Am2_K`ph^S(^uIU
z^IAp<=mg5<j+E1|PqiQi3_Wk)6!%GP8S9735q04@6L?73o~Cep6Wci7
zwi0B3;<3b|LwvdJ=Ac+xMgGzF5zLZLP^6^HbBU(W+<>uNC4OloFv;XY
z9<O(K)^I7&YIHIHg#izty-9B!uz!
znM{r`%M&-I5^Z!|L)fbFF?BDA)aJqPzL-_6!c^_Bk2>8j0~p_wTz;IZDx
z+k>^*eExROZ&QrR2Tu?Coe1rs8)hx=$6mA=JM%9sBkGv2Q6SUEnWL7CW#gk;@75+Q
zX-om6N7e8#6EmWCOrgUh;XKGM!mhkkwgtluEmMkY~Ye
z@XC}nW`niYPDBJTE`xjK!^|#(aO@sbJ{})*pIvWZ8u=g+-B8ZaJKf5&v)HDOtRmWgnA9#qng>ktFgN%xbL7`ANwbnyaDkq&URo<*;~AF
zxZePEXchm(MD1Q}h1i)HTv(5|h`LcU1Ww&^)gKcxyZ46=E39SRV&S!_XBDRG-p|RE
ziPx^SEisER(WhfA4W&7z&GRK5!AdyyOIJ8mp6ADreLaBsVKINx$n4E;0Efdx*FU-k
zBL9b`w~lM_|K7(5X=H>7NQ_WIq@`g4K~X_K(HG6=kPaC!ItCJ>BqWBSf*{=u(m6`H
z8_8|N24nnq|GtmUpZ8z)<8kiuJm-3zb6wY+=;)ouR!gn$FCgeF9YYV5jl-51Y$T*9
znXbP+Vp5r;1Juf?X9ACsypfaHN9kilEV_?jduv+DpTs3w;ct2X`ii%ey@k;wVjzJ~kwVYtxgyIV;*U%naGZ71_x9%>5O^S~F)7bR&F-^)4w
zhwvR*nAv7XZ^|@}B@>Eujym7ZX_m-s;Mxa?5W)~Gt+Bq>^mxWP-~MFGUnRMvb$C6|
z@)5EIy|xffHarEMutqQV$${cS1FBPWJ6PGcZ??L9TKoLXo^*wucD4VFQ9Fyw~IM14lSD^hTZNht`_7P*O8e?hzj{
z#vhbmA!u9<1eQG*xuz17UYw^X9m@1l;Ziojt24*5+${M<|7CZnB&_4!z-HZ#uPuY(
zg`ShixqKSi?lf3pp?P6WXkN)rmub87>q0%M$RMKWAdj-@bckoYDz{OK+gW?E(MsUn
zzz3%Jd>F?f!95A3B-$5m{)pdG(*0K5lJFx5!&_Nwpt!P8sC2(K9LWF6dT{Bj;P%mk
zt@9bKA6_zKz#X$oqn1r!^HGEL_k(xibgmbt^jBQFc%vUKzDdVtuT75LE8p-v7BB9q
zc#A^DKwg30zu&y9X!7Gw$@fS1T|{{PJr5$)IyaX8#Y12OH;zx}6z+!C9DU)Xiw-0*
z?s|0oNVw9|dgd^LzFByD0Q`Nb>^x22sXC?bxzG%%*;ko4l#Z*vPJq=bgalNJ2M1ie
z0e2nrYPuPzHXVz+5HZN{)c}}H*h$?4lom(|?$Y_5_2%ixIu~#Mcw6gi`lpx{E8|xy
zaXIS$WotKV$JnBNwlbT@Daty{SG?`b#aFt4YcJR+y-!!Q6ppb9cROf5Fvl`pLtqoO
zn|L76);DN-?%T826NwXX2>ycUE=%lov5+$8F$Oz({xg2*tZ#GtLuk5Guk+3u1wx%W
zuuj?9S?(uS{KP*`%ZjZ(W5`(U%4Kt=h6D1Emo2_wZfr=yZENwti^20hbwkYC%~=q2
z-&A?t_9XmK)?x(o8jtr_d0Qq~D_Y3lId7#+v}pG4|Ag5pSgxb^czScyCHAr|Gb?aD
zHc&p08|2sVWz>Jae&21W`j;}12_PJMEclTwO%
zk*wUTwo80gw5CrkFWI{Jz>O2gkQM&idG^K1z6W|8n{{CDKLxsM5ay*RhFS}H{A&!=
z+VVREa-hLh;P+o^6vmp3D7cEJ*SCFrey&*RpOKgN3L0x?H*@ts&&+;73d4K)@f{vBRM|P^f-FHZ
zAH5{m)4NNpIB@f*xRJ4n8z_`hRU`Z`my>(iH(TDk#D>Wa?uGux7yi1N{>8v!z6)6e
zyy-iq1he-`7ukbSMyF-?$zbv8>fQf(r|w(!HHes;4~WDf6~=zbvq8~mTvgT0*WGRr
zEvYTOC2(=T!aQ6w>9qpq=?!m3oG!W~i&Joj#=|qm9ANSb5me4XBU1U#erYA9TXDY$
zCj;^t*dko;@edUw8dXwX!Y0ZNoQ>GNuwvooOOd|zkfn-=2=nf!iU5t6^UN)Vo`i>)
zXDjJQti-YqP@uPmZy@#sO((F$XKO`OaqB${_KMGD3-b%RWS4u1mWSy_&*tI#)Z&Vs
zZuP6LFz1GZYBQLZ3-?Cr7XdL9e**6V21p8&$3bkwcNq%>~HW+D%Q&l!DRHYEC#Wxy+1OBZtj7@mG56~GPVw06iMLT(^tFw!RFz
zS)w@cZ$5RuYqYT;wNW0ZRCj>>hPAk8ip
zI&1`g<}>ouX-LhEb0f=#NgndYs|Ah)hxvxXq}W&C%L75$k(FPP<9zk1@e{Q4
z`-IBvE|EZdt>JUyTvy%S_?^}^P9c*sR|6#e2G@nOaeFx%DL1`v`Z?*Yx1S+y{Zjqa
zercEUTvN?{)*cx28qn(vI$M3iP{GaIuY1^j`TYlji6o5!#g+s|5_z&J>?}59K`Q^0
zG+fzLq{$-mC@e)z!?~GBMBy_mw(J%&SpjM8gI!>RAEbD}w$>{L<_uyViQVfKlv3~4
z(b0BTugDr~HEI>y?Jh2SM9zxN0T@0#qjB_EWbXKH^$JG1r(3&~hky2;dlBq=sD;Bt>sQ)%K*#zd{+vcaBPz1bfh|
z6Kuv>=L+Ve>`A%$oeO5^gjVr&q(UPQqhKYDtn5O58NiSCJi!q3
z?KrXlH^xOLZHod9NzuxOe5#rl}f)(~D@nlT)*GNHvO61a`}eKC?E|1
zF&LIkZzbVOKs)~AYbnHRwNLJk?hP{QfLkQMM`KVa*`A~GI==c2k1FO?%kGjZrSo7N
z_k`8uAGED~M02Q2ha*CK7(wAlNNlL-dsAS5kajK?P3ZK$P{a^BM8}LkJw40ywI?j|F5x-^KOz
zeF?7Pe*4s|38iTUF1Szp$83%@X~A`sPZZ~fqX4%mR<2-Pe`J8ThplDsPG=1!iR9m_
z^XxuP6B}fk+wpgD?W}%zktsi2p?Gb!g3m~zc=*kKhdM-%SBY3&Lt~i6^;`uR~leorw#JoOjtjeDP_DApAm2hWU#Xd=5RVX?U?s-yk4U
z=jbCQVLS>4D;Mr;Ez|zNnW}d4Hw$kJWH^t&lVwDakB^068i+MH|23u(2!cKh&13Lh
zWmyztQR8?Oh8X&IMGfcMT)k+Q{RA%8iuP@2m05F7B&YyYs9@Qzf#UlkayXJ%4-2`s
zKhv-X952aq&pk4l&R9)>N!)1!?eP6Tga^TGQCD2Iueq{8!fwv7pFhc3Di7w#K3Rc3&j@*RLP-^Z$@rQY+#^ndynivE^oG*gb(ht>1Zv^CL^P)`H8hs
zCHG~TRd4UtpSMhU0RH_fd#tVBUthedf&DgW>1u~hk`$tmqe(y1!jznzZt)xA9zwH+n`5q69Qt_`cwaZQ%YRw!x=_9K0$_Hq0I*!BJa
z7E^5e_xhfJ^sjeD2$|k%)_CjI<2#|`tf!^V3&1~)%kVa8&p@k*gh%aS
zLHUB*V|sT@qWImJQ#`v5BZP{!IXiXrw_9b508A;bF{wuR$UP5~m9xwWLd46aSm=cHeXP*4}
zfHzFRmiZ{Cevw+1SEE%iN49crwef$Vk$C=abjYNAsQw<0*o=DXa}6nsr07ZW&O=+0
z{;ADdlbsCpK{gL_-#y6Vy^{GU|5&d-hIN6sVWp+4MUwWbj7fo!oRK65eWQ;%;}j1r
z!oo&N1tRgqT;$uG6HcH3S6+U)1YAC>=PWTCv_}4#f-|}7p7upbVsVeX4>yi;aF<<>U;=p=|Sx$2?Grm}6cF&dWT6KgCyOU~d&H7Wd$i
z#Ght}Nv}PY*Bn&25jchXnuYs{KE3EnMJqTq-p?VX{&vL2jcCf#-*l>!Q6G)ih==y&
zY9Pj$3_#-$%HH4}*N!d+zMlF2`jj=u6ik1UHaTW!lcAu=H5p}1@>Vg`HAiS`haGeq
z?vW#oF=^W_t>ii?tned#so=^CUVgielYa*)w}q7ePErML66a;sP2%ji4R5uWP-``=
zz(w!ztlPqv$EAnvE>Ej3MzfiMX_Kf><;*WcUs?N6eJ9b;8|c$Ct+!@xd;Sg`rwJii
zlMH;#pNglhE*~T<$__cJtF96>MGqGgc)#mF{_GkAAN^DWjYK6~?wokR;xa4-_SMZj
z+k^jm^Nl);cR$n3YdfmPVN0t?upQ?S${VqJ5tos$nXB9Su6=T!pZEo&%4QE6L6llD
z1izZ9hE?YAA>G-!_SOWy9z@@x(HgPHw$5HI`h@+Amke5tE*NHgmsNHXLHJ(hZWm0-
z9NFfalXDDmkUN7#!MYgM)h2rBl
zzBC3U(Xpq1-n(3(hadaiPsYD*;^cXq>2|05DPp>y3~qFvg>mAaB1!^Dw&|q!GLao%
zW4hv>q$tp}w+Iz7X7ZrZWn%6ngz0*
z@B4q{#^i#8Y3YuqjN+AWWbm+{Y@Z@nbu<}5G1u*OG6ej81?NJ&^wF_bHr_+!;(72~
zpQct%x;|@gJ?MdVMBGgu-`S5iS8MW!oj&HgjoVr5rE9|8uB6t(#zcPxTkM@V_e6Qi
z{r=1Qcx)5%e~0Tb^^^`Gm7pUoWE>J7a8$aNBR0Z1o{I0GdAsw!RwZ#^Ta}Sf`HKp@
zy%?bbu*yXjQl%l44&b*ptkcfv;a~!l!;eYP(uReMSWaV(KwH
zqLLs^Rw^I=BRd-GS(8<~cewrw2uoP%sk`S1oOR-T$HgRW3^&op?E?
zJ`?&aYbDNx0n{kLeRbE34RRO=g4tMV1>xV?5M-Cr5OmFJ#g{_nUBI4BTKga~WjG+X
z%RnC%wjRcZ>>Jls26{YMObft$LSva1CS-0Vn4MtO5#%^7)GDiijZ#M(+t1`
zYfHy5S%bZ;o|^b`-K!4F=hyQCB^-6B%K`nmsby;b(U!v&q!=o2gM0v`e2U(jx(!W-
zG^|PwQ8nM#fFVy$FnM=-Z`M*-@@2R^z>e6~FMydoaiR)o*l>NN1lIP&S7CEaK9)6{
z^>|+1h+HvrI^u)JA4#{({Q@VS+GqvQm$lfq%zkncY2GEv
z$z)BRZ~Q?@z!OS%c1CWmPp`ZUl_TsgH@cxCySe^SpVAEW2I@JSp45T#8Mb9a;K?F#
z#1<+@Yavq~WpBv`B4E|w)9OBqzK1znlza80OtuY+Ocei7X3qCfOv!$wTZZw=0`?0X
zyf3SC11p*j{-RP~9gx6s!l_8E;MMdI2FVCJ=@%JL5(`qp|EgOytlghAA(ridx%=Iv
zq-~j6HE+m(*wSV-Wn-T5?10T>hn}Oxorjx<5kDP;^H1mPhwKg=(a*!aaHhoczZoug
z*FaO!vXI5N{f8?~J5OA@UMmoSW_41O~U
zk0XRF!IFSCU|XJRd$~6j*Xg_5#=nMtTVlcV@vuHfe?+sGO3bGeeDv~LQp8?-Fzj{=
zr=a);=*v>^Jbv@3aOw}uoy$xmA}~V>PX=>O!LIR1aJVX?y4mC!(J18CkEYQ
zf5#TR1Ng_Riz3SKxjr|3aPgeQjz=$rB<}sQcWUsNmK{m7<@NWjHuaY`W?%VOi?FNl!OXiA{BY+`I{;C~}5J8rW^^KT>v&&8mnZ^5AiO
z1{eAzz+w>YBODP=<3agtkQ_afbG@lFB6xh|KWN~@y=M>QGn*J@=dWvXKokp9>W$V1Wf;B_0#ufm*pqQ5>Br#YCNxoAuL<}Vo`c1
z3jC#;%P0Dme+p@+n7B`
z!3XW8=<7MH>HijT4^f?Ef&2UeO>V?bd43&_yX3ab!>8kyf(KnT5gOXqv+_b8JmGum<73q|4J2ff!1MN9M@IG(vE=|z!*khgbsyykS
znu6=|qv&RHV*nB$4t1u!^Rv1(w-eiOTC!c$rapZ7(=4R4*{^k+dprMccz6@Hz)`f6
zjAs!cM`zZ{9nz2jef8o6TAs{;hIp$lIg&7VF6|rdBObJRFWC8sm0ihqz^^cdoi~AY
zt?lIs*M)75ywtz(MC`FjVSiyi)B6b7i#7l2iPHqsh5l@DeyL+F!3y3@+I)xzaR26X
zEwymBg=|v_OJ1acntEgQ*?VMP>;%?f_xnF85m1!xB
z6)My74939?y0Ozaz|9oc{-*aWG$nqc0mZ#*3wo9D_B{2z8V;Wn&2@Ugh>79h=Dd3W`KWdcl0GDv5KvB68bV&@qCf~T|5KQP|5(xARqiPPQ@uRTFjjW=)`kioB+4YgYUj7b19euFKHOlFHUsTm@y$gK&FZt)
z(_e}Za(xAM;@RuHG+}lQn*^(;8Y%j8%tC#z3S-f=_m@IJWs2=hpAD+J%oC|A2btpsd&aNJvExx3Wt#?Arp)bq*o#BiXsY+6
z@ZZOSSYFzGKQTp6m?i&D2%t#x+y@Dmn=x))`Acx&7)mb^16donVt+hZkH6+lO4bU<
z25ipv=Bq%wR2N$|)vk5@mNnZ{=hQBTr(5e6yf3%W6bwHIO{gnM=R*63lWTRpBW@O~
zvQuTT%b0$dLmXoyrynRaaifb8;>;87i+QiNz+~oU?Hm1#&Mh;Ai3F}KR45&;!PY*l
z%@%T~O>LHYOT=>fCz%OGhDz~oG;egry1ZSIX~3=#c_6LR@`)=wJ3pTVlRPFgpm1H#
z93PK;$$t@N|2`e?vZGtS(WCq3NSP+)pRQhfd{$WV{Wr^>yO9DmMLV~Ix!2d)&esXhYwCn8?!XfnDb>f(G99<<^3%(v8UGDmn#2}qhq@2}9!De+TiIU1EZ
zo2=`j95P(T#D1`ziMsmgImg2NyXl8u@Wx$%qcz9qP8;Pdx`ZPf*Vtz{smJNImEB~X
zk-i60Jw_)`>N}AXFQlD)4=BQP{US(YSL!n^N%%HM!499MXL+~bcPMrb)C{3Ji8c7d
zqB)aN`Xs>zLwKCJeiwqE-xJnHh3Wac=Tz~RCVq-PR`Or~&>@xEFvpo<;=}px;yGcU
z_rwNS*=ou;)At5_=Pi-Q^`;JF*k;I4f}kDb=XMhHq+Wn+tKX^ARRX%l%YY~GJes+|
zQPxVyN__kUK)^3Z-ir$W?2hDQ*_>lsMvs@pr#{hBg7cL4JW0|5dw^gt-BSp^S)8
zJ?-F%#-3=_17n!D-fs_6QkOB+0SbZaei7cYx$e9qW*_tKydTJm7}_7DF$m;6WtE9>
zp5nUOV@x7Ut{e2{HD3rOwC(Ahs$z)MW9SxDrue{X=jhLEit|YShm2T9zUP^Mz~??6
zGIX;;KClL^tg?&^z1s#yBCwyiWHS{4dZ%NaevbD1>jD&NI}^XwvPNl2mwKhF
z3Nf@1!AmA%(>X-J%^1Wr>7uC0?$2~}L_}&aukpwWFTN5p9n>X@{dOF>-$_&LDw)AN-0_wQ)
z39Z4JsZQ%&zfT8iCILa^g3tq$L2wFQw7qx;0@@qy2kp4w&I)d9QQ_B7uV_J&V
z$3kt^6MJk^ePdM*R2;tlpEeJc_laBw{Z|4B&vR2X%_exx(=UmuBeDxVi0ufn`NTib2g`^x&aw5l5B3C~dEU$#*m_62t+
zHt?O#6=*`aw)o*+Rqz&8)(oD#9Sdg7G5CqERlt|ceF#Zqh~{Qe$-i59lb8;7hk`rk
zdBSkA(G~PiIQKY%s%vo^e}-dy}`CIRB!oG)2&Cxf7l9rH3)Gl*SWt}nGey<=5CcIWNi
zVb_1KhE-S7*(KpYtKwS&b=_?9ZU296R281~ccZYORmnvivr(AkaW1CfIqbQy`$#zc
zRl+9?Gp=E-H?A6SN%2r#M0d|*o%*8aRcBAupoiDs;4bn4>N9qsWbnv0ejCr2R|j0>
zdUJUf0AHc?9@hG%LTRi;vhn^OeRK2)ZKj>o!?)sO4uu=cy#k4_MmyUS1;9>x2zgJ*
zskrj|owEop=6ALrk}-`W(RGusq1UvsAUbgJbaVy)lBW}d4t@MbGVIq~iLERj<4n}`
z;8IrmUfTQ9(92=#mh%r{c3PyQ1<{si%#0GWlPm2O(ii+6k`FZ|UUKGJX;-J{jD9~L
zK70M=!E4FSAv`=`R!#~+J
z&}Ht?!cmZ13j4nfdbYvfq(}a=D@>yM+}`L+2suyv+U9MBm#fG;g`k9VpPqM$)YUEa
zqu5nl%DWffUsYwHkwZ2qTTs;3}urk
zzT(D!I6>lo;QoHTXy7vQiE*s__F!kkiH&B5L$861RnO(mnU-UR5MoN>u9-t`pP)HEff6*J+v7`tVYL39#lKIJ{>l4U#yY90*xt4n8
zt%8hZzo;Tyauo{P;EXt$dP{#c%N3T)Pd6Pr!#0kmdC{=UWOf-6yu5VQWPcv#Fw2$1
zlnz9ly6%em1e-#&3<#^|KJ7(-cU9=AQ`YH#Aa!%>P!9BHmk@Fb=Xa|xk@q=-mJWW`%Swf_(VMp4F|}l0va?j*7w-D4e;8%PEGijH$*id
zg;tZKKbQ>N|3apQ3fy)gHTfk(kuhc426!P>gfO0_cMFY@Q=K2OS5~_d>;!DNNblS|
zRLYV6SgEohdgbaUWj;<%P(gys8*N$+6VCsa1J@x+-vG=$e|<`!8unzIM`=Cj&VyFC
zlzPO$mCd~G2hD&X;L2C1DY60RZFJWu_K5#ejjOw&<;#eKWb?akx6;e{_=GbBVCcNv
z(VwJhuhw|wHALktB|}(#=3g*`@Uc*{tnb#Q;r74h;JnXCS3P7i$E~I(|*T!HtPvNO>!UxY>3eZc^cP@nXao|+8fD;#mzLlFvOVMt=$!M^6MAu
zNnV1W8&(oZyzZa^*IbRNr?+*27LG8ES92c^SPZV}{@{lW0-T0^DEE$Zq`>E~pkro&
z3%-5aJqo`zn%|InAN^Ex-2Ml4Nrh^@1?u7=x35s0JZQA1;I>}%Lz*Ii<8M6pW>KP_?fTwvy*m=TO
z@pXz4ByasnY#;2gHb~g3kj!zKuXWW5SYN)1yxZw2@6WMBdbM5|KrkLltI`p9u6w(w
z*4ddb;8UCR@?x25+pP)r=`0{%3EsfH#jzLag%S_s9?KS*Vx8oaOp9=JdW8wIXM7{c
z6r{%`C3bA+M$7nLi7MsCU~{S^2{tX0+M#w_EA_r%&0?-WJ4T*5+ru
zT9!jFyXt%9L!j9j8YW&0pn4637T-vrCI@Gxx~){;Tu0or6WP6s$^OVmWyFKA`i#yB
zWM(U=f52)F$&19?XGFNhzLNcr$i>Fow(1IZT8njCK^`aF=6Pz}Oe#~F3pjYiv$Jax
zRCJwwX+G9^t+u>G{FjERE^FBcdKcI+KUXxdm^IKMXEwQXIRh~wQSn@JXj->}!FtUc
z08P`SpO(CEGmD;e??ObpYfBg3Y7Ojl?}Z+wUUD(r<&QRqcw(%Y=+e73da*-iN|y*_
zt7!l8n`D@U;WUmqx{;*bg2Gl=tZr#d>BB#%Q1=(0@n0RK9d8)42le!Rn&B(l6y$)>
zzA@WMe6F9G`RC%(Ev-SV?L9{?`nPX6+p7$TzojL-3Obp{^&R<(&k#ShcoDSK`(4G)
z5@6&jH9@RfNf4rhNfL<{!vTOwsSoLE6Ko))3yK)-vOKnqWEr@GY`hM`4yT7;Ydu7X
zlYUK39B-^JBRk)2W=!>xfu)COvL(wKgO)xj$Hpt^vV7u4FWmT!rK0JmTM}VvV_YP#
zz>U}kHg^&kPc}mX!G=*hwm7(u+mc6r507Lc|3gO1C%OaNiqX$%mheNXXGnZU&uh5A
zC+Bs6Cj-#zV3RJXy(MLkE3(I&&Fz>fr}>WPA2#tjl@mAPE_Nv?^Mto-2(lnCnuh^({Z
z((_U+BqC%YHIu(`Df=)Z-*;D>y>?V07XGPy-E4TYbhbNxap{`I>qXzIlj{mUKPqW3
ziv=v1)Y;n4*E1}m;b^f~T`s?RcG3BW@$He^hQnT^dbnwAap1;Jm4jrgY#m~`vWyGt
z_n}hw#&1)LWBT_rK^i&?{S8mO?EFx+ILlVDLH3D*b|(LusWRakB?DOjy|hY?y+$oy
zxuO#}*4P|_qWgBANeC{+`~tB-=P$5gx)V|=RzAbyIL-yg-bGO@JRGd6Q4-tXV0?F@
z1q$8*ZzB;9JT(awErCxnA)Vx5KKH)ef1_L=xe7}TYM
zvuuN_@cVCG!=OsuCl;4q%PzV9TF&=;bV04MxEv+1xNL8oDo(hs^hwV8)mK5a1S>+o
zO&q{X|9c1R#H)j@7#5dl{C3@I+?U#k%Ebyd$b6%ViBhYN{(S2IsA2ABuS}r*oTlqP
zsG*YwukyxtP7PXlCziZ0qqk4dR^h`j)uDDW3A>50ficLm+UkS36
z_qKmPeT(HRF$IMy?;mowOi_Q^L*;<^8%5Rh)|S?x7GA}~hb%-zQ$4~~ah7+c5frHB
z8&;mowaXc74~~h1_GywoYCZ}+UUouV772<-$Ys3dNT|;5RY5GoCFII4%HFO6u4~nE
z`C2sDt`9V|f8bC>)$f)@VoCzajdGw%4#qoWkha#G;Lv4MHPfkr?}~*|Xd7ddCC6b}
zIqz>s7Pg7ezwVLjy7U6nWp>nc4r++(|9CtTQ|q$s?;-){_R2?3gSf+>CJ3mmwhfF1
zS{hT*smtvZAHNqWpL#mJpLWoCU>XaTW$gyiy>qnca3uBUh~bJ=-wXdV+O8&^E(EZn
zjOL`eI#XP9EC9of#-;gstS3BPwUQ(w06CEWAZD9u^v&bB@cDC*uI@f}h(&XV{1X8q
zR+fib04ap5?F&w~Sth1+>*iaJteQ8p0@nJ|&`$x)p%8pDvbG%lxH-;V(m?>Y-c8lr
z4mpc!gD)_(TxCJR?4eHX_G8FF7;SLtzrGm#Miygus9Cd@66LZ0DnY2~Ia}#rw$M>$
z=d3g9(Tx8T7_A5lPB~I0(1^&o8g5rQJ_Mq&FJ0zyL~Ijw8Jz7*YF%9fr(DcWU1KB>
zgbS+bW!U*_3nH30d&A;6h|fY9tn2JVwZN-sejIdmmciURGu@u&be}!Q&*$!bZqa*UZ#%IME=XwbybxHp|O}K
z@oQU9lIlPvpk=akz7O)J|D#JRjJXHBkaTtG?|kP-Q*Q=&w+F
zxsv2Vh&W2~aWPtUg$l$W^Cv6ZI}vMFA!sSq7+j>kbx|59QqrA;p_srDtf@n2(Cy
z$Bdq!F#eXh?jn5#`w+4uFQyF1
z0mcTsJ^}~*CV$e=)`9E*scw40H?|G&DSM40UjnN9H(fk*5!pbzsJ#sZu&(@IIEwD+
zL1TW*;yj&2DQ`+RUN0+aw6fM~Z>vYV)~jK!0soWZV|rEKWhUgC=sM>|Qz}@(MpTNzB$j_0}^*)D0XfxWv13IUUiG|
zvz+{$kGqq1`*_JnK`^79VRMc|E62f~Le#fZfslMUIo?_&v3f3nGts@G=hKRXnI!m?
z&LtreHCtR~Xx6t(GSpW4M4IsBEo8$p(EYNfH^VF4!rySr8`sI_%`DaQIT|mOZ9rPb
z7E)kmDX&{+sM}ExmqE1iBIw7jGBvD9--Z<>2RmwQZagIX#gEcncBCSw?Qkq|l
zmbfzivEl-+2aA<;U>kP6t???SjQFS@jMZxU3%Z!Dd(t|XS({EsA#$8~W^hem1r@4#
zn!aY8bB)OnGk3GQYG$G{$g`&Nr_~3Foi#ecwkQPI@|Y4?sag+bqUN9WQNmrHZml^h
zG&Z;>#O3%@s#|t4r!ut5DhemKD$g;vf@XBePNB-878qNt*2!7Ym+ia~p8*G{mb#gx
z5A#v~u|6jG{fTa5>-gy0`7V$ktaXQk;f@`_u@2lrDc302Mx|=DEoZs`l=*UOOHd&s
z>>Ml;^xqs*DWMvgRswN-&r
zolUvJS?Fws-h^5aZe_X^S4H^X1(Fuetp6^RvUni3Dzi3x$@w*$P|z`5Ko&
z%&q@M6S5f1dR_~uc9tn1T%?|!OEtGtq%)k}JSi$H`sPu_-|e0A!X=n=?dr6wBL2AND;-wb}T
zRsRZZ0lpbe>C4y$qEV;z9`K9dEo5y|Bh4n~&8Tp3{LR8$ck8(tC;NGiC5A=zc;YPZ
z$lvF%%k2I2=SuH}!EOKkkLgMOQLYG7|K1ePmvNeK-x~M=C)j12<^Ke7)6FmQyVFM%IiN0rO^P>X(mfv0+Z9f^K@EL>!o%@0BoFmY!^v-|YS^o^
z0O$GvIKj16gjXnn@#`Wa*IPI!0pMeShRp7MgEg#>#YzGaOlee&H1U4`MK3j_3Z5EJq5QVDAb|Im&R7vAxFpy1L7;BZr1uqhhf2bcKl&r7&8RC7oIwm!|G#
zb^4}_4PxncBij5s>IB@MJyQ^L6+|yYXJ1w*XLWOu0U{(^5W@hrjQI`3+xmk4Osyy$c5gS7HLHF|ev=y)+u
zv)XQ$(gKryCF?}$*h$?=AdQseEYT2`8t_>D$|eRXZEq!6B@G@RR4z)HS;kQWkTFn|
zw*b*N2fD;aG;(snI%)de!QMH=R>kI6XdJE1IO{mWy4msHds$
z_=FR~y!LHF&D=a}3OoU|kG$4Cn~6wRYk8lwc0dA8;BqsuKaxegj+VUM@7DbQBy^Y}dAn90xM)({h_=CwdQ
z#VTW&{8zs)KIx@sE*o-D9=YO`zu*e|E`QX87GCKs*6SCEz&nJ|-P+zx+aj-UcC&=lmS@;_hiVignM)yv
z45~ko?%qHn>Dt-2`%~7+7MaC3|J*rbIpFVf4cs&c+`sK<@IBP+u>sn{;v&e{EOH`rJ<
zSj<}>*b3vi$99+~o8Xr5-O{1qUg5y&=)l&EMsD%-!`O5W;6>N#1DQ5_P*J+9)ng|=
z_(|O{J5x}i?|m@SYIn-C*rSc7r?>k!-lit7>Vein9-W1M;?psYi~JQ^<<(VVoL#KK
zKM=?FrC6^%+nW{t*&vJf#th7hT-5xM&x0QJ#NbA
zA30>ke*u`QTJxEp)79(tsDO5K=@Nb+lQ*~B>+2~xd4HrUnAeI(u)eMe>ntqi!>~=}}DW!1FF1v6tiyq0f*P&3qGwcinqe_lhvCitSd64~wRQGKqgU
zZ9rUqW1)DUH0wEvP7A%g?B0vvJl-kmb|JQ|N-(=@&}F(!m=7xDtO1(&c+wQu|HSeJ
zJ~TEef=x4a;)4o?AnwTl?@&~V3KBv%TsD(g3_aRQbG@T(0gfJjt#(MSY1O#dtsBD@
zdz#;UgDMS8grH_?ud!e4YdatzDrq#?AA0BdWqd~>T8AwQLefsPE=O*g%sX+P>bf+;
zIT7pAinzmr%Z1A&94=wvfPg)`;J5;@s)OT}%a_9-t}0=}*4X_HSv)2b_aTebUgD=4
z?`t!V2z%#cnOk#BN$+Lq$j@%uisa%n0s&Frf4s*!y%DO&<#mLEy
zn1bZibZ0$p_)|z}+rhs{QmBQl8O(UHgi<*-K`~S@$EB%vfvH9xSJqOq
z{_SAK`DV19AKgt}u;Bmk^h8Qwf%QR+U&Vkrtn=2(T7x=3L!Sma&U3(ps<6}P8l|x=S3g^_QT~D`Yv}k&D&NMh
zco!@Kn~Vf}0AH4Gdw&UVIARN0jz3!3S{(Poh18b#hHq>)ZI=1OH5V_Q#zE2gaf-)p0RJCN-x<&5`$ui>J&Gc+YLtpSir7@`(bCr5O6?NF
z-kYMRy{cM8RcqGXE0or%8G9xO3Bi-!|9PIbd3S$u-{(5lIp=%6Z}#buX)loM{fTd7
zDaIcM@Ln!J+`@O5m3db|v4o)U8#H=eSG4U(--uyWM|H}PhYW9+#Fh|ro^1)xVYwBx
ztuTL9cWF7)Hmb#>TYJx<+g+7rHF9iH^L2?OG^i(am41&~0ouo@I}17Rb~pT*A9_v<
zXcdz~x74!1%%$kpCL-)_v%iqBrq>%!hQ+ee@+j^=LpvsitQDQX3v>A_OWgvQaV_em
zVQckQ30`X)7~)~|=5&k?>x(Y`AJyr&50=;XxUGNeU1cHUf;t?3QQe9|v9q&h8(U%#
zUa=iqNE=U>Tr?bcyBdgT{^_!Mf-E}KEgkYfdhV@75*}Hjt8hggLCOcPb%XWf8X~yv
z6uVcO4s9uHt8Pcn;e`{gy&y{=OX)qM^B)l#NqX&p#Mkbr>!rgT6b|dD1sV41mDEqn
zoyyn@$hKjTmGOI|1&kU*Z_yMTEl;m{UBIIQ2~TMyo{gQ*r3@?a0quoNpiT1ef~0!y
zC-B{q5H7iJ^VbAroG9OP0dgo`g`T{VPE}Z0U{m7MPeB;;c$By&=YstZj`loyiRcP9?fw4TUXTh
z1!y@37;}N)oL}g49Gh@amN5a>?vOSwFSHj+rh4b33clxi{zUX%q}#x`0#O~;(z+r0
z%c~t?*)VMp1?XH!w_)2ZFi?Ym@6}iZ2r;ag)PI8c^G9sOXDSfNuTeeh6)c`na#XiW
zPv6JFUM3jSXAC16unE*a*uVNGCea-LY!?Oj?#ow7{x!S+jOA_kc@IzG%In4k(cMPl
z5u`8rs+2tB@3Pb34;JO_0`@u`GnA>PckgPimFj+>g}WX-v+;FF%P*noR`{5VlsHaa
zfAEic^E(hIF%;03D!X474|KV1^~7D!D|gfdL{r{8!e6gDEIX&RhC2`Y(}*rAie*I;_pkS2aAipLin1KQjT(=
zmi#rL&F545BdC({j=JtnJ(eOu20DQE1)A-)E-8Y3-`+p~13WgMT?TJ!r#PW1U`(sf
z$?>6n!;aSQMWw%MEOxM1J^;{oT)t-LL)Ov!VgVJg&C!|o-Qa+DSkimwB&mh5+(@aS
z*Uk3DV8~Pfx1Zupu=7pYTD6e~$^fc2vK-o+4Qd64^ij7RtiNLH%y^TNnotwu^Q{_1
zxEPw?PSWc1JsjNbdeGN_IEAEZmHbx
z4Ypm5LCF;IZ^|yG@k_s^B8!j^SUlJcF59#hY>SSF46AQ=
zGujh#WMz02B-nLcp#0=6E#M?%nerrG;g9IbTTj@O1^m?o=kJh^i^J79wCY{S3GTz1
z_>KFwT-fy~MX$I^4mhV58DIGb#LRv8hBq{zJ?ykP?WcN8P;x2^Fn-;y=eG`8p?AaI
z;e1LoyUoRgTasC}`$`|)l@+LwV_2GlZSCS6Ezf8ibl`SO5kDIV*7&exqiL&D&flB&
zcPO0XA4Dc_)d4%gb^@8V&Hi;9ahQ9+9rzR6)o{=S8&nDCsEBzQsE1d1_v@$ilr^da
zm^H?7ipUHtc^!Tij&-l@?kNva9G2~@d9LK~bGbR`s&nk>?qA4pxgw|AEyRtq^KT1)xI$djcVi0HhkRK*32oFm7W@aoF42f
z7|-A|SVb7N-%D7R2+U_%Lz?h&hSz)f4sn5bPmBI^a3q$^68%2lHvVTCc5o(#P<6s_
z)h~W=NR8PfxcTRKnXQx?R={)JWvsCck@MfAvO+v{YQS0(MZPU{G
zF38C(W;XvdYZ*(^td#WkH!X1|xl!)epQ|a7x@|pB3j9|lYx>)pBfQB66sCNfd{pQ1
z?p)6TcZf(&TXcVL9ozBMZaS6&v=t@A^9E_FDXwi3V=yheziWL@7ot|9M9hMZKCw7d
zM-Kv5r-hz=w9^UIf-b7po#v$E^6l=_ha$Ybi3@=Krs-c6kIWy0UY}!wn?gNKZhx8{
zw^^dkopcx8NpFEvhPDR}k*cHx6T9j`9u+0j7#e5i+={bFW%c7^QS^)SVPi%9OnxL8
zx7Q*yH?7
zqukJGQk#CdYFPZWv6fE?3Wk|F|GUcy*Wu~@tU1dyMJh-BEq>dQu5oIGzT09%G^jn31ewwb}IDF_c&jsJhN-sNT#%j
zQDRB^Hiv7oHdbWu{ciJzw)3BcZ>ZzSq7hG&V&l#SHf%K6SmHs|&QwXOMw-DVXo@o0
zT|`V07(4(i{j&YKp+FpbP^=BFN&%7NdiZ2JRl96{N2DYmooGdic%l=&TrDiQO%K*@
zrhDJNL%;CK*iqVQz+F%68n^)5?(ah{PLo86I1cNt8daij9;dhDJBACv;(vRp0-@$0
z>WWQI58#`sfyUz2ehp)Ge7jU^Oua~wvVftu92vn{krKAA$D=}t3YtGMcZU3$b5b$=
zqvBh)mWp%MdB(yP+OO|B=S$4us`VkreS9!tG8e4Mb=j1LNed7kok2ED97zn7Erp7|
zZQbWgMDW0g!~NkYZx1eGI;W&Ct4a>
zp(SOGNJh_7b=eE-IW3jn{!rC!bp#>BJY#jAKflOeut3+#WI9+%O+64Zquf?#;!w_g
zb}=>%72@LWQe7l{d};??3780f!}12Raced%y?T9clArb=+T{C(p-(4zCmZflc1Uu1
zGTTR1c^UA485VA9t1*1~AOosVGg|Gpx{MtGWH9NLlKZE|z1x4@czV!{$GbsPekuSz
z(nq+-3K5rph7Uj~FVS`vM(XcsJgikQv0FHNM2;6DITRobQUB%0HWnUAD7Y
zzUQU?s79KrHOv(C4!%EtQ2~aS0&`H+wZUN=lPxPhdK`*UcO*LkL%0Yt+*x#V;*_2%
zFq)6>Dd1CUnJYO^XCy}e49dF{=_O8nQpXwGi+BuO?>_NAW}vTnpZu*Va=F+)Uiq4#2DRtR^Hcavo8hcODxJ730PRy?O>yZSEZJJg9L<8l-|4h4xUYgA2l*m2)|r=
z5s}85g4EE*77IC~L#6zdOhO6u0|ok^p8&P#2>J#Q}G;oCdGa-1Hw
zS(sh86V^@c4^(whQ^1~v<;*UO!VP#DordKz?Cdpt3h-)Xhqcl|w5B-U?>jUM4?&e|
zV5Dl@k2lSsGZ=3rN5}W~>+N%5&P;C-a^cKB5Bk_&w>}JJ1)YB|9Pc_hH`PkZU}znL
zTDAxk_Y7VsL-t)2yf-oq*ymp%w5HDf4%p;SPt|s5S_A)asL-dPIx+LdYXM>RX`zEi
zHI*}nG|xgsSmd*V)k))U7|3d}fu2n@@ohLFLX#5G;ND|F10Waq816W+(&6(Pqf9a0
z_Vgk`U}eNG9wOgwQ3Ll#+*1`F8=_oHaNBx8zN^P4C0KLmn>9F^=lxm{ie~TL8K-@^
zKpIxX`)SR{_Ciu|pH~m?yUs10m^s^Ru-Ey31#Mf8ZpiiMNCPFv;nB{^1D`&a$U+W9
zQQFWBee=IWFN}#h_0A>|yyqyvJS=(m*ERk}AE~N&f|oy?)}Y~zg9LxIDSTq{kP*q?
z{RzqL^^Pud7d)w*R#e(M49yGk6l_7Ci{B?#acN&taBvPtc&gn(MHcJGfe2q})4wu#
z;c8$R%3JPWFHqu?Gs#E+loAwO^0#Y;qdNo6XMJd6uZXgBZD^&~D&Vg&eP`3trVmfX
z9>3LvNs}g4O~0MHs>}F%`n`8`Aik`+$oU*)^?E8Ov(e)FJ#gC?+jx#mivp0We_Mw}
ziEHL0dj=p|cKiqr-zosF>(L|n+ZVsY((wmCUZ>guhLXfX2gzL=jTPUIqLU!%Q5ywg
z(S7#dvltQ&|E&5Dee%TW^=kEdQnt>0$yb56-As%Z(7^U2rGyddun`vQWHo$(QuMkK
zK<*jQOZ{UD-|&l|gIq~Mg*^H#;NQgD#ALNXWl_SA!MYcWnNHd-(U&1siL!8ie8`!o
zlKVz-c?$GHJIptKAUb?5juY+rk9xGSHqsPD7WU;D!g3}=q$vncTCu5}+E93D!MVZ+
zpd1b3@0RRBO9TiGUj;@ir*6lL#hM+J=aAwUd8wy}KqZk`_{4M1mFw
zBc1oi-P#bPeKD)>ujEFy+v<_WWF|_Fga5z)S-ig-%|-N;CNUNUzs6hfm9Ucur~g@Bj;Rqqty?&fg`7^a=#$A?E3{b>Dl>0T5)=jZ_70!xyU@~CxTA;j
z_#gHkRrG&~7okb;;2GkMTCNS`8s3lo_NA1tH}U_YA?
zh~x%xQ8Nl-`oV~X!`-Z|LkUowa#wKKDw}M1u@swS->`}AqOmBeTm1mhnz6I0-}D2_
z{SN0bdk7xc=S}qrd&lnqkozhnQ9d)jOtR=p#ahje?-
z()@UnzICTRw|@{$#l@U8;tftP!ZR4nt=oS8VY{hMoP{uS3*;z==;A0UX_J!!5=;RF
z>Ph^kT&wkd9qtOMP`n;Bpx#25i6Dc)X7b8GWhc;wYT}!cNjD0>rv5L`-{4JB(vRBO
zzB`au7T@Njc(&0=L6Wyb56#lXO?TF0KOXV$3e>o{M629^Z}%W9M6$7()XDwm#l!>
zS#5gr@+P0JhNTu?aBdEL*wWNI&BxMb&dR0l-;|Tt(cN(DwPC74w
z#edZH`L-K^Uy0g{!zN_vcV=rV@Fmsk6D7SHzS0wWnpfKuDa82^9vdA>pie+EkWOFF
zu))j~I8@tqO9$NDka2jeh3mc*B-gRQGkaLl_!7XuzkO~P7za=O!&}f$LEszNd(hKr
z#-IPezO-mK#nOl@&10L4zB=1{IiZP+HFw_3Ov~s@n$@~j1Wn8W;-Qrh+t6uPV@(Pt
zw3O2))&A5!$1g@gXJ~uAAzY{0Kroc1Es1MfvFJ7VSXAb@&Q?t=fbb!Ip(K~!IqcG?
zQ>B#Q|6ywfc{#8k={Kbonm1JFB}z+^jM*F>sti`fw9RE3oyiMv9Wvgg4XpUy0>o;%
z)D*sN_=s8U`b9nMzhc|2xR=y04oen#1?s}z#=dXA>xGV^e`JsZ{vmagrl1dqZ*l=Q
z1DCU`iiAa*C^1`jzs1jVvYT8KvBTDKx<{EMVvO^64oa>I5iXjqBP%dReaWXFL5^tn
zDav~=*LjAzcMlcw%t)|iXW*nGm>}CPRPZ^@`4Wk1#O~p#Ug-TudH%#Ka5!H48-9&Z
z2DMk1`dZ$eMwqHVr%36UGdM-9Pbiq~iey@VK{-dR?U@02eO?L+nGYn=NbJM-3%dM1
z(ay;{u}xj93Kwe=Mc&^68n!%ZoFlFTlvjx%B;Zr+H)e1;x=@p;%yBq6DsEJs?rxv59uQ0dr4!9?=5
zb)EcGd<-dIxdQOf2yf*Melk9iM_>DNt!dZ
zr3VU~kAFyengB}@W8>ba>_kK7i9wn2|#yL!|y$_0>yopB7&@;UJnol?5`9=}kfkf6Qv`%|HYA
zDXxR|?RNSyU-S@?lJ&Jy_MgL(euPjaXt(C%4Y-R;Ta=L9_E@*FRV>U=>zQ^a{%^K`Sx{fj{
zNLDMurVo#S$7S-B~`Sg%-&jzW6y6KMkw2{aF99dvyvTLhj6!mQ?vZCVI@m}
zhB4$`cXRllI_l~=i6^4RwJ!epeTdDke##%(OK0qoriv0pX3={z6v&CK9y{@pJqT~=
zV<%Mmf8Zj0PmuCH+4uEFHA7ThdF1N;&ZB!19kcK1HD(3OzY{nk5tqcPeHAV({XZB?
zB;xEnOOUYTXTX@}_Z~heDQyyHn{#n*Pe01~ywO`WSk#E%s&v35Y5UnV4b6!hq3b^K
znqj^=whAez(yH3X3e=x?mUGG^J(pONHw`QS8hRNs6xDdrVVmxOS}zQPkX9z~58AYxw6mGuDiEg}*W!Zq7%OZqWz4SnMz|2pYo*cy?UQsCr*m-is$vNk;`d3v
zxd)fDeXi#q0r_8}zslOCaUDL8h}cujJkAdv6`K#OHSn0HFbuI3uJhVe0-A{7*$`w`
zX#5!}KU^*>oQz;D7$;p%sNv^c<8}C8uXqt9s~`^itqJ}K?;Ahg)*|@$ac*g`?gX3(
z)bG)@Q6uUg(mcfrL)APYO^d;|qm2iHcb&$AmwJYT!c(j_4FnE*WUbP=*_m)B?!Jy6
z0SZa?G=bbt&u!>b!zNE%e77Vyl2VSv>fNhB?*ykO>CL)RAWtj^c-^1n($7%8;}ABQ^nO{6nGISc9dTMp
zdnZsblcg36$fl(}oGyyr_|8$0tH0eO`4CGONs-fc)i4C5lRr{a?^bTA1riOSkdgvH
z!?}~D?M`Z}BMwg#H6H@4Q`TcAA88+dBGY;vO8N*zVNxipk`wv=@Wf7$LU_SvJTu4}
zTuA%kke2q+hp+ftEC@T|Qn<;R;L|HAdEiBqkObV4^w2TV{;r8F~7tkxb3q
z>U}b_9h}E^+Kxb^2XdVXnbz_+|BCwojH;>yhsGG!h9wh*YM9N+;H*^Oxix+k?uu
zTz*25E+U4~8P04^lIlCIr6p#QT@SD&5dMsx6TCl-pDOONt7W^i@=U12hnL4v$yevF
zjfYC+Hcr9H6;KfHV!vjytm`<_^5p$Tt5gGN$5^ARmPO6>pd?b|UpW!CXcJQ|0=3M&
z>LSyO(172?>q=8fr)RQb-ycA8DfJ&N%nYCDsRkGZJf7HaGGvD%|LozD4p;)18q?P$
zZ+j~1&T5R+WgqYr$CbE=A`Izs&n{!)_qA;aUg=$&>UMhjfjPa(I>!S|(#K(Vv9AtC
zj!DR@VIH}M
z%Fu#=?h8U~j7WC4YUV->_yHZr`<`sMEsk=MpT}q`$X1L<^3nHikAw5i^7W`RZ!M?A
z?iU!iGG%a_73^{+S_RC%R{stk2C)!`bw?q5@19(v3BQYw-M9rNBh_{p$s=*(LfE0a
zl>Uk4;jLDdJR_I&BAbF3Kh@hrAX(J=dbD61DW`ppTdkj2sNN}a_K8~L{)M8_I(nEs4TASWNF9&Pw~
z7~e2jem5FPLV38WskE7S;cc;baHdMrt{Ezb2V)>QC%3_jP=$c1(b9MR>IEJeRL?u~
zl-wj(`D))G-#xt*R8C=3*bv&;*dW?_pS>QCUF(tf0L;cpx)gMl{~+0{$`gB1s*
zD693!c+WmaX|^()j0-{_uRO4(q7wjc`pNkk*Go4znoL8Hq2|*nS0ipvxbA*AxdXLF
zj(8R(#ni!Ann-N5cgJ}#*_nskEL00hfOXYs2p@;@NM`C)l)eI6r6BD?%P@sSz?q%i
z(w=|;{}y?r;N43bggCg!wQ%Xt(tU^`F`#|ZI8=l+eUE{?`qeqZqe0ytO}lw|0*0l}
zQVt}}bVoAl?jmw&HYme41z1%XY(D`ZImPJw?cpK3B}rwt9N;;|z0-js1-Lb$)sOcR
zAd1x_1|ht8>sN+reIK8mLr7zPKX^JvUn+Y>9PvM7i4l*N7+V&v
zt4EHmFq+(G%WR-5+cY2N^~-)<08(T?9a;W*fI9$8Oqhql4`)T>10NQqzY+Z_rL5x*
z%P=VAnxQ?2O?s^oU-)KWsS5K^L?FmkX!tnkwo~D9WmZo~lhW5l5h-
zY;OG&S3jaGsJrp~C(eayNp|V>{UC=sJaza}%3rjvS-J9)R-6&^V)H#~BL>SN))!6d
z9VsBjk3sJxIo9W?@T7I0Eq1iwyyE$c1+w=VuM1Z(szsDW~$?VQ2$GfKFAL}g)^P{
zruf4D;mW4KIFZ5q(VyRQyWYJE5-tIE7=Z+N*kRh_yPJ@|5}?r3=cr#?rbpP&%U&>$
zLV&a9cU>YkzYLA21%JI#49&Y5ahJzaj$iefoQJFui_)Dv1wD5W%9yw)eacN2iy(X<
zsQ|tm{RBKI%O~P^`Mn0epU4e?Zi$j=ci}gqJ`%6EX}9Oj_U6g^pbW}%90C&68I&3$
z&bGngu4@OFVSFBrCv-l()dZXuJ421;!)pV18_m{SgyF~sGXEffbdE}$y?$6}$%OMO
zzce>m&w*Ggc@ny73NG%EujXxp$_G;uBSO^CF_{bwGq}cmVlP^|1FkO>I_xN0SppvR
zq~9+M6<*f4tgyWWzwDi3do_+0GfnY0oS;LvIF``zs2BW)E@S^Oluu;Dbo{_;97mDp
zThUB4KZ8N1uQ)Te*5|YMqjy9avkL>VDYY{5tXQ+ptp13&inj61$;(8K8X~gQ82uUW
zEe3SJk|RYBHx>d$m5wnu_B?|9b=c?Xvylx!b!M2CP=drJgo^bk0YX^D;&oMTWXx+5
zJ$_z{uj^>;F-P)kS$zkC9V=}p;z3}hcCpyJN<*_eW_YNdKc(}$q
z&FFdP9&e`wbXTDysWh5}{h4c{JD!$+>8BOn&644__I9GDalCfBPe?U3@X>$TVS
z)JDFQV4qUZX@e~-&0qSq7CgXmn`5Z)tW(WZcKuk-l}_n)lQHtQ3*ShNfoq=fjr8iM
zvoY@K6XS{?6SKZYZJO}=NbVs#c5S*bWXdaAoYEJAq>qVD}IJr3n{>mY~EWDd>_BpG0K&{^yRh@
zg`3c`Fp1OvgLZ)o_wxU#D)UrMz@a6^h%DsCfw#5(cyzdgfS&J65Lmsko`jY1{c+`Y
zcabY{W#j@u%57QZ%g%GwqYS~1pBc@_SRfzbqxxw4(ba$cQGDrh?C{Rp6!;HciWw=$
zt`h#S<<+kdHZ&$fJ^n{otkkGt%fKCyCW((Z#=Rf1-Q@T6i^xSjj#P08B`ceXOsAL|
zB4U04O<}_@I&2tOHjrqW=bwpy6-&B4_bh+@dtYHK?9ca-slWAS;ETz0tJT|s5~#+m
zRM$n2q48aaHD)QrWAzMWvrvqorp-S7b8=_VejFWM0oJw&hmCv)C^`H2^A3V)j+tFd
zuDdzb)$^(T~p^nX9p>Jn|ZfiE(6>Jyxt0^*EYiW>V>z2()Dzt^4-(|Sy7J{s_6EWED;g1P+2V$HkU*f(QyL83qVssY(>
zvo28Ym41_S{r&*=W7}@KUZ`5lq}%JGZBE(1u3F&aTkcsorIikqYDRL!4{Y(_QPb%0
zoRl%yy5f=zA(|k^A{Iz=16l&M_9(RX(S(37eULMObl9BThjjeh9Z6u9u-&2P2
zEyVA2I#LivAi8dHPlBLt)Z){MT$Ryrt6sV5G~2l4qsB)I_4@@=k~XNN`+A;g*+Ja9
zqQolo;VaEQ!q1MaUXxo93_!LyLaE+doGi>Te#V?xw=RgW-ef
zt8UR+cR?(bEYBp|8~XUqm+PUX3IPlO?akLmiuE@(=E|)%+mu~jl;B%lB2PTkn%6~l
zW9viM{X?--wSk$EhbONb!1lphL15n~Px%1tc1O6V!4I>?n^)=?9nv?&1%=_$;zVHiJAPrq+8160ouybYbq#*6nRS$Up<{2dD<2}NwOaaA?lz)Y|X@Os-H^82vsaInG
z6La7UUcnbd43cm$b*#(kY2X76a2P??G6##a)H!y1<>m-Ifs7qMbUqN
zR&;G1ALv(*p8K1clM4^8+hw^m`L+GBeeyqp?F``$ewab*r)6FQMMEy$9H%4;60#&
zS#GRC2*K3c1hlS1SKznU28&O8$$X9zp1%^qqg|_vUe?;lF5#!g?DXA<%HG3DbMv~z
z`x6^p0Vg2VtJC)LAFbr;Tl4P7jNldY)Rp`yn(GVwIXgt_zjvy=n8GhBxc^2pC$+#R
z+wq;Yrxxt)V|*|RkW8X0XvIGWyA_s*IyAp_;(UvYe!T3CtvFcGe0CkF9U48UsCc)y
zTBsK)iu{LtYfO`Dg_TzSWWtAel)sFhGM8VCi$*bOWlff_MI}n`U~8|H5iVeZ|96
zZ6lQ>`XIBDvhS5iI@?OOWA>z;{4YO166jwctP)R&ZBTMmN9ni6|25OR-k0Fil8^c1
z&K>Bs7Z?MyLv)=K!*EiKMq!N>)}I_B?|B<=IW91FJ4lSt&p5M+xX3~w_eZ!mbu
z~g-$r_G`svd4O|p1
zKGWDMIs3fo1`6&s{{kZf{d4hkNFtq^gC1=`^4|t6l%Pffn;6Ff-+!`~6ryDQ-VtrG
zKI9dXFWNHR@k934+WuBq+08j1T#$KSIUez{Wj}!?B6SuivGWx8QN)#=JB_6lH3?$!
zEn5jdQ_+%1(+pChfS4+r0aQ-4o8p{0yUSQj=6DRfx1K?$!s8ns6@;nIAN*ciTL%j1
zeLq;Mw+c{uUrlI+_s}Z-iMesY^l~JL;&(}^yTf9oaxuf*XwZ7_QC~5XO4Zb}hcPyh
zF)@#s|M-32cLcY}UU>a!okia;`Px!rafq`{*W
z+#2@Flj7UmfN7b#nq4oINB}d?p@I2-jp4uj@
zV&Ty`@p#*}pv-}>5u-2+n=$qgBuAD-{9)CHZ(*GlX3BzoU^87b+TJ_TD%_AuI_%>X
z#``97IVs$F~p^~`A8wnC0L8-%b+?xiP--0juiWL
zf62RB)}!o{As+JdhfT4l_=((ugL~MoAq$Cg2RURh1m)9FpaaSW_iy$d@K$BG>4NKA
z)8fN#u8DY)lwBm^`L9EP4guV_@d3!oN51`6qZ#n?i-lGVg@WIBB0&xaQ)qf
zIu1ApilHIeICy&b1i(F_ZEV3|3&Ir&OUuMs!BD6S#h2~;;Jc0@+*)&g#RkyAs-0zy-a-s5M$*~kS&jq_4m
ziS3__x|5E30}RBrWibbr=o=~Q*SDP_4k7&3A8w|r(GCaFN6J