diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2118864f..4d69335a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: "12.x" + node-version: "14.x" - uses: c-hive/gha-yarn-cache@v1 - run: yarn install --frozen-lockfile - run: yarn lint @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: "12.x" + node-version: "14.x" - uses: c-hive/gha-yarn-cache@v1 - run: yarn install --frozen-lockfile - run: yarn test --coverage @@ -50,7 +50,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: "12.x" + node-version: "14.x" - uses: c-hive/gha-yarn-cache@v1 - run: yarn install --frozen-lockfile - run: yarn lint @@ -66,7 +66,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: "12.x" + node-version: "14.x" - uses: c-hive/gha-yarn-cache@v1 - run: yarn install --frozen-lockfile - run: yarn test --coverage --forceExit @@ -87,7 +87,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: "12.x" + node-version: "14.x" - uses: c-hive/gha-yarn-cache@v1 - run: yarn install --frozen-lockfile - run: yarn lint @@ -101,7 +101,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: "12.x" + node-version: "14.x" - uses: c-hive/gha-yarn-cache@v1 - run: yarn install --frozen-lockfile - run: yarn test --coverage diff --git a/.github/workflows/spotlight-staging.yml b/.github/workflows/spotlight-staging.yml index bbcf1caf..566832c9 100644 --- a/.github/workflows/spotlight-staging.yml +++ b/.github/workflows/spotlight-staging.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: "12.x" + node-version: "14.x" - uses: c-hive/gha-yarn-cache@v1 - name: Install dependencies run: yarn install --frozen-lockfile diff --git a/.nvmrc b/.nvmrc index be43e15f..54844bc4 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -12.* +14.* diff --git a/public-dashboard-client/package.json b/public-dashboard-client/package.json index e2684952..8a6717bb 100644 --- a/public-dashboard-client/package.json +++ b/public-dashboard-client/package.json @@ -38,10 +38,10 @@ "empty-lite": "^1.0.3", "env-cmd": "^10.1.0", "prop-types": "^15.7.2", - "react": "^16.13.1", + "react": "^17.0.0", "react-app-polyfill": "^1.0.6", "react-collapsed": "^3.0.0", - "react-dom": "^16.13.1", + "react-dom": "^17.0.0", "react-helmet": "^6.1.0", "react-measure": "^2.3.0", "react-scripts": "3.4.3", @@ -72,7 +72,8 @@ "development": [ "last 1 chrome version", "last 1 firefox version", - "last 1 safari version" + "last 1 safari version", + "ie 11" ] }, "resolutions": { diff --git a/spotlight-api/.nvmrc b/spotlight-api/.nvmrc new file mode 100644 index 00000000..776c1a01 --- /dev/null +++ b/spotlight-api/.nvmrc @@ -0,0 +1 @@ +10.* \ No newline at end of file diff --git a/spotlight-client/package.json b/spotlight-client/package.json index caa323e8..fee6c792 100644 --- a/spotlight-client/package.json +++ b/spotlight-client/package.json @@ -17,6 +17,7 @@ "dependencies": { "@auth0/auth0-spa-js": "^1.13.1", "@reach/router": "^1.3.4", + "@recidiviz/case-triage-components": "^0.2.2", "@types/classnames": "^2.2.11", "@types/d3-array": "^2.8.0", "@types/d3-color": "^2.0.1", @@ -32,8 +33,8 @@ "@types/lodash.xor": "^4.5.6", "@types/qs": "^6.9.5", "@types/reach__router": "^1.3.6", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", + "@types/react": "^17.0.0", + "@types/react-dom": "^17.0.0", "@types/react-measure": "^2.0.6", "@types/react-portal": "^4.0.2", "@types/react-simple-maps": "^1.0.3", @@ -65,15 +66,16 @@ "mobx-utils": "^6.0.1", "polished": "^4.0.5", "qs": "^6.9.4", - "react": "^16.13.1", + "react": "^17.0.0", "react-app-polyfill": "^1.0.6", "react-collapsed": "^3.0.1", - "react-dom": "^16.13.1", + "react-dom": "^17.0.0", "react-error-boundary": "^3.0.2", "react-helmet-async": "^1.0.7", "react-intersection-observer": "^8.31.0", "react-is": "^16.13.1", "react-measure": "^2.5.2", + "react-modal": "^3.12.1", "react-portal": "^4.2.1", "react-scripts": "3.4.3", "react-simple-maps": "^2.3.0", diff --git a/spotlight-client/src/MetricVizControls/MetricVizControls.test.tsx b/spotlight-client/src/MetricVizControls/MetricVizControls.test.tsx new file mode 100644 index 00000000..ddf34068 --- /dev/null +++ b/spotlight-client/src/MetricVizControls/MetricVizControls.test.tsx @@ -0,0 +1,69 @@ +// Recidiviz - a data platform for criminal justice reform +// Copyright (C) 2021 Recidiviz, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// ============================================================================= + +import { fireEvent, render, screen, within } from "@testing-library/react"; +import React from "react"; +import createMetricMapping from "../contentModels/createMetricMapping"; +import HistoricalPopulationBreakdownMetric from "../contentModels/HistoricalPopulationBreakdownMetric"; +import contentFixture from "../contentModels/__fixtures__/tenant_content_exhaustive"; +import MetricVizControls from "./MetricVizControls"; + +const testTenantId = "US_ND"; +const testMetricId = "ProbationPopulationHistorical"; +const testMetadataMapping = { + [testMetricId]: contentFixture.metrics[testMetricId], +}; + +// we can use any metric here, the behavior is generic +function getTestMetric() { + return createMetricMapping({ + localityLabelMapping: undefined, + metadataMapping: testMetadataMapping, + tenantId: testTenantId, + }).get(testMetricId) as HistoricalPopulationBreakdownMetric; +} + +test("download button", () => { + const metric = getTestMetric(); + jest.spyOn(metric, "download").mockImplementation(() => Promise.resolve()); + + render(); + + const download = screen.getByRole("button", { name: "Download Data" }); + expect(download).toBeVisible(); + fireEvent.click(download); + + expect(metric.download).toHaveBeenCalled(); +}); + +test("methodology modal", () => { + const metric = getTestMetric(); + render(); + + const methodology = screen.getByRole("button", { name: "Methodology" }); + + fireEvent.click(methodology); + + const modal = screen.getByRole("dialog"); + + expect(modal).toBeVisible(); + expect( + within(modal).getByRole("heading", { name: "Methodology" }) + ).toBeVisible(); + // this only works because the test metric has no HTML in it + expect(within(modal).getByText(metric.methodology)).toBeVisible(); +}); diff --git a/spotlight-client/src/MetricVizControls/MetricVizControls.tsx b/spotlight-client/src/MetricVizControls/MetricVizControls.tsx index 4d29f187..9ce09c49 100644 --- a/spotlight-client/src/MetricVizControls/MetricVizControls.tsx +++ b/spotlight-client/src/MetricVizControls/MetricVizControls.tsx @@ -15,13 +15,15 @@ // along with this program. If not, see . // ============================================================================= +import HTMLReactParser from "html-react-parser"; import { rem } from "polished"; -import React from "react"; +import React, { useState } from "react"; import styled from "styled-components/macro"; import downloadPath from "../assets/cloud-download.svg"; +import machineLearningPath from "../assets/machine-learning.svg"; import Metric from "../contentModels/Metric"; import { MetricRecord } from "../contentModels/types"; -import { colors, zIndex } from "../UiLibrary"; +import { colors, CopyBlock, Modal, ModalHeading, zIndex } from "../UiLibrary"; const Wrapper = styled.div` background: ${colors.background}; @@ -50,7 +52,7 @@ const FilterWrapper = styled.div` } `; -const DownloadButton = styled.button` +const Button = styled.button` background: none; border: none; color: ${colors.link}; @@ -60,13 +62,18 @@ const DownloadButton = styled.button` padding: none; `; -const DownloadIcon = styled.img.attrs({ src: downloadPath })` +const ButtonIcon = styled.img` height: ${rem(16)}; /* icon needs minor adjustment to align with text */ margin-bottom: ${rem(-2)}; width: ${rem(16)}; `; +const MethodologyCopy = styled(CopyBlock)` + line-height: 1.7; + margin-top: ${rem(16)}; +`; + type MetricVizControlsProps = { filters: React.ReactElement[]; metric: Metric; @@ -76,6 +83,8 @@ const MetricVizControls = ({ filters, metric, }: MetricVizControlsProps): React.ReactElement => { + const [showMethodology, setShowMethodology] = useState(false); + return ( @@ -87,9 +96,21 @@ const MetricVizControls = ({ ))} - metric.download()}> - Download Data - + + + setShowMethodology(false)} + > + Methodology + + {HTMLReactParser(metric.methodology)} + + ); diff --git a/spotlight-client/src/UiLibrary/Modal.tsx b/spotlight-client/src/UiLibrary/Modal.tsx new file mode 100644 index 00000000..948dd11e --- /dev/null +++ b/spotlight-client/src/UiLibrary/Modal.tsx @@ -0,0 +1,58 @@ +// Recidiviz - a data platform for criminal justice reform +// Copyright (C) 2021 Recidiviz, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// ============================================================================= + +import { Modal as ModalBase } from "@recidiviz/case-triage-components"; +import { rem, rgba } from "polished"; +import styled from "styled-components/macro"; +import { colors } from "."; +import animation from "./animation"; +import zIndex from "./zIndex"; + +export const Modal = styled(ModalBase).attrs({ + closeTimeoutMS: animation.defaultDuration, +})` + /* + the double ampersands are a trick to overcome + specificity in the imported component styles + */ + && .ReactModal__Overlay { + background: ${rgba(colors.modalOverlay, 0)}; + transition: background-color ${animation.defaultDuration}ms, + backdrop-filter ${animation.defaultDuration}ms; + z-index: ${zIndex.modal}; + + &.ReactModal__Overlay--after-open { + /* not all browsers support backdrop-filter but it's a nice progressive enhancement */ + backdrop-filter: blur(${rem(4)}); + background: ${rgba(colors.modalOverlay, 0.7)}; + } + + &.ReactModal__Overlay--before-close { + backdrop-filter: none; + background: ${rgba(colors.modalOverlay, 0)}; + } + } + + && .ReactModal__Content { + max-height: 90vh; + max-width: 90vw; + overflow: auto; + z-index: ${zIndex.modal + 1}; + } +`; + +export { ModalHeading } from "@recidiviz/case-triage-components"; diff --git a/spotlight-client/src/UiLibrary/colors.ts b/spotlight-client/src/UiLibrary/colors.ts index 77bedd01..352e76e8 100644 --- a/spotlight-client/src/UiLibrary/colors.ts +++ b/spotlight-client/src/UiLibrary/colors.ts @@ -57,6 +57,7 @@ export default { menuButtonOpen: pineBright, mobileMenuBackground: pineDark, mobileMenuRule: pine, + modalOverlay: gray, rule: gray, ruleHover: "#AFC1C3", text: pine, diff --git a/spotlight-client/src/UiLibrary/index.ts b/spotlight-client/src/UiLibrary/index.ts index 475af188..939a79c3 100644 --- a/spotlight-client/src/UiLibrary/index.ts +++ b/spotlight-client/src/UiLibrary/index.ts @@ -23,6 +23,7 @@ export { default as CopyBlock } from "./CopyBlock"; export { default as colors } from "./colors"; export * from "./Dropdown"; export { default as FixedBottomPanel } from "./FixedBottomPanel"; +export * from "./Modal"; export { default as PageSection } from "./PageSection"; export * from "./typography"; export { default as zIndex } from "./zIndex"; diff --git a/spotlight-client/src/assets/machine-learning.svg b/spotlight-client/src/assets/machine-learning.svg new file mode 100644 index 00000000..aa5e8d7e --- /dev/null +++ b/spotlight-client/src/assets/machine-learning.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/spotlight-client/src/contentApi/sources/methodologyBoilerplate.ts b/spotlight-client/src/contentApi/sources/methodologyBoilerplate.ts new file mode 100644 index 00000000..c8e5997d --- /dev/null +++ b/spotlight-client/src/contentApi/sources/methodologyBoilerplate.ts @@ -0,0 +1,26 @@ +// Recidiviz - a data platform for criminal justice reform +// Copyright (C) 2021 Recidiviz, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// ============================================================================= + +export const ageGroup = `In distributions by age, individuals are counted towards the +age group they fall into as of the reporting date.`; + +export const gender = `Gender distributions only include male and female due to +low numbers of other reported genders.`; + +export const raceOrEthnicity = `Distributions by race count individuals with more than +one reported race or ethnicity towards the racial or ethnic identity that is least +represented in the general population.`; diff --git a/spotlight-client/src/contentApi/sources/us_nd.ts b/spotlight-client/src/contentApi/sources/us_nd.ts index b7788a27..5d4a2787 100644 --- a/spotlight-client/src/contentApi/sources/us_nd.ts +++ b/spotlight-client/src/contentApi/sources/us_nd.ts @@ -16,6 +16,7 @@ // ============================================================================= import { TenantContent } from "../types"; +import { ageGroup, gender, raceOrEthnicity } from "./methodologyBoilerplate"; import programRegionsTopology from "./usNdProgramRegions"; // localities for both sentencing and probation @@ -32,6 +33,45 @@ const judicialDistricts = [ { id: "OTHER", label: "Other" }, ]; +const demographicsBoilerplate = `

${ageGroup} ${gender} ${raceOrEthnicity} +The “Other” category includes Asian and Native Hawaiian or other Pacific Islander +individuals due to low counts of these reported racial identities in North Dakota.

`; + +const sentencingBoilerplate = `

District selection filters the data to only individuals +whose sentence was imposed by a judge from a particular judicial district. Individuals are +linked to the judicial district associated with their charge (for individuals sentenced to +incarceration) or to the judicial district that encompasses the county in which +their offense took place (for individuals sentenced to probation). Some individuals have +multiple sentences resulting from multiple charges. When this occurs, one charge is considered +the “controlling” charge, meaning the sentence associated with this charge is currently the +most restrictive sentence being served. For individuals currently incarcerated, the sentence +associated with the controlling charge determines the judicial district in which the person is +counted. Individuals on supervision are counted in each judicial district for which they +are serving a sentence.

`; + +const prisonBoilerplate = `

This data concerns individuals in prison in North Dakota. +It does not include individuals incarcerated in county jails.

`; + +const probationBoilerplate = `

This data may include some individuals on probation in North +Dakota as part of the interstate compact program, in which North Dakota agrees to supervise +individuals who were charged and sentenced in a different state, but have a compelling reason +to serve their probation in North Dakota. Under the same program, individuals placed on probation +from a North Dakota court may occasionally serve their probation in a different state.

`; + +const probationDistrictBoilerplate = `

The districts associated with this data indicate individuals +whose probation sentence was imposed by a judge from a particular judicial district, determined by the +judicial district that encompasses the county in which the offense took place.

`; + +const paroleBoilerplate = `

This data may include some individuals on parole in North +Dakota as part of the interstate compact program, in which North Dakota agrees to supervise +the release of individuals who were charged, sentenced, and incarcerated in a different state, +but have a compelling reason to serve their parole in North Dakota. Under the same program, +individuals paroled from a North Dakota prison may occasionally serve their parole in a +different state.

`; + +const paroleOfficerBoilerplate = `

The offices associated with this data indicate individuals +who are being supervised by a parole officer stationed in that office.

`; + const content: TenantContent = { name: "North Dakota", description: @@ -58,120 +98,226 @@ const content: TenantContent = { SentencePopulationCurrent: { name: "Sentenced Population", description: "description TK", - methodology: - "This includes all individuals that are currently incarcerated, on parole, or on probation in North Dakota.", + methodology: `This data includes all individuals that are currently incarcerated, on parole, or on probation + in North Dakota. ${demographicsBoilerplate} ${sentencingBoilerplate}`, totalLabel: "Total people sentenced", }, SentenceTypesCurrent: { name: "Sentence Types", description: "description TK", - methodology: - "Incarceration includes any sentence that begins with a period of incarceration in a ND DOCR facility. Probation includes any sentence that begins with a period of probation under the supervision of a ND DOCR probation officer.

Of note, individuals’ current status (incarcerated or on supervision) may differ from their sentence category (incarceration or probation). Individuals now on parole after being incarcerated are still counted in the incarceration sentence category. Individuals who have had their probation revoked and are now in prison are likewise included in the probation sentence category because their sentence was first to probation.

It is possible for an individual to be serving both incarceration and probation sentences simultaneously. These individuals are counted in the “Both” category.

", + methodology: `Incarceration includes any sentence that begins with a period of incarceration in a ND DOCR facility. + Probation includes any sentence that begins with a period of probation under the supervision of a + ND DOCR probation officer.

Of note, individuals’ current status (incarcerated or on supervision) + may differ from their sentence category (incarceration or probation). Individuals now on parole after + being incarcerated are still counted in the incarceration sentence category. Individuals who have had + their probation revoked and are now in prison are likewise included in the probation sentence category + because their sentence was first to probation.

It is possible for an individual to be serving both + incarceration and probation sentences simultaneously. These individuals are counted in the “Both” category.

+ ${demographicsBoilerplate} ${sentencingBoilerplate}`, }, PrisonPopulationCurrent: { name: "Current Prison Population", description: "description TK", - methodology: - "This includes all individuals that are currently incarcerated in a ND DOCR facility. It does not include individuals incarcerated in county jails nor individuals currently serving their prison sentence in the community through the Community Placement Program.", + methodology: `This data includes all individuals that are currently incarcerated in a ND DOCR facility. + It does not include individuals incarcerated in county jails nor individuals currently + serving their prison sentence in the community through the Community Placement Program. + ${demographicsBoilerplate} ${prisonBoilerplate}`, totalLabel: "Total people in prison", }, PrisonPopulationHistorical: { name: "Historical Prison Population", description: "description TK", - methodology: - "This chart shows the number of people that were incarcerated in a ND DOCR facility on the first day of each month over the last 20 years. It does not include individuals incarcerated in county jails nor individuals serving their prison sentence in the community through the Community Placement Program.", + methodology: `This data includes the number of people that were incarcerated in a ND DOCR facility on the + first day of each month over the last 20 years. It does not include individuals incarcerated + in county jails nor individuals serving their prison sentence in the community through the + Community Placement Program. ${demographicsBoilerplate} ${prisonBoilerplate}`, }, PrisonAdmissionReasonsCurrent: { name: "Reason for Incarceration", description: "description TK", - methodology: - "This shows the original reason for admission for all individuals currently incarcerated in a ND DOCR facility. When an individual is admitted to a state prison, the reason for the admission is documented by prison officials. These categories are pulled from that documentation.", + methodology: `This data includes the original reason for admission for all individuals currently incarcerated + in a ND DOCR facility. When an individual is admitted to a state prison, the reason for the admission + is documented by prison officials. These categories are pulled from that documentation. + ${demographicsBoilerplate} ${prisonBoilerplate}`, }, PrisonStayLengthAggregate: { name: "Length of Prison Stay", description: "description TK", - methodology: - "This graph shows how long (in years) individuals spent in prison prior to their first official release for a specific sentence. It includes individuals released in the past 3 years who, prior to release, were serving a new sentence of incarceration or were incarcerated due to revocation of probation. It excludes individuals incarcerated due to revocation of parole. Individuals released from prison for a reason other than completion of sentence, commutation of sentence, parole, or death are also excluded. Of note, this graph does include time spent in the Community Placement Program prior to release as part of time served. Individuals serving life sentences will only be included upon their death.", + methodology: `This data reports how long (in years) individuals spent in prison prior to their + first official release for a specific sentence. It includes individuals released + in the past 3 years who, prior to release, were serving a new sentence of + incarceration or were incarcerated due to revocation of probation. It excludes + individuals incarcerated due to revocation of parole. Individuals released from + prison for a reason other than completion of sentence, commutation of sentence, + parole, or death are also excluded. Of note, this data does include time spent + in the Community Placement Program prior to release as part of time served. + Individuals serving life sentences will only be included upon their death. + ${demographicsBoilerplate} ${prisonBoilerplate}`, }, PrisonReleaseTypeAggregate: { name: "Placement After Prison", description: "description TK", - methodology: - "This includes all individuals released in the last 3 years, including releases directly from the Community Placement Program. When an individual is released from a state prison, the reason for the release is documented by prison officials. These categories are pulled from that documentation. Facility release reasons that do not typically correlate with an end to the period of incarceration, such as transfers between facilities, are not shown here.", + methodology: `This data includes all individuals released in the last 3 years, including releases + directly from the Community Placement Program. When an individual is released from a + state prison, the reason for the release is documented by prison officials. These + categories are pulled from that documentation. Facility release reasons that do not + typically correlate with an end to the period of incarceration, such as transfers + between facilities, are not shown here. ${demographicsBoilerplate} ${prisonBoilerplate}`, }, PrisonRecidivismRateHistorical: { name: "Cumulative Recidivism Rates", description: "description TK", - methodology: - "This chart shows reincarceration recidivism rates, which is the proportion of individuals released from a ND DOCR facility that return to a ND DOCR facility at some point in the future. The releases are grouped by the calendar year in which the release occurred, and the rates are calculated as the percentage of the people released that have returned to incarceration after each year since the release. Individuals are included in the release cohort if they were released for serving their sentence or were conditionally released onto supervision. Admissions to incarceration for new court commitments or due to revocations of supervision are counted as instances of reincarceration recidivism.", + methodology: `This data reports reincarceration recidivism rates, which is the proportion of individuals + released from a ND DOCR facility that return to a ND DOCR facility at some point in the + future. The releases are grouped by the calendar year in which the release occurred, and + the rates are calculated as the percentage of the people released that have returned to + incarceration after each year since the release. Individuals are included in the release + cohort if they were released for serving their sentence or were conditionally released into + supervision. Admissions to incarceration for new court commitments or due to revocations of + supervision are counted as instances of reincarceration recidivism. ${demographicsBoilerplate} + ${prisonBoilerplate}`, }, PrisonRecidivismRateSingleFollowupHistorical: { name: "Recidivism Rates Over Time", description: "description TK", - methodology: - "This chart shows the reincarceration recidivism rate for a set number years since the release, for the 10 most recent release cohorts.", + methodology: `This data reports the reincarceration recidivism rate for a set number of years + since the release, for the 10 most recent release cohorts. ${demographicsBoilerplate} + ${prisonBoilerplate}`, }, ProbationPopulationCurrent: { name: "Current Probation Population", description: "description TK", - methodology: - "This visualization counts people currently on probation in North Dakota.", + methodology: `This data includes people currently on probation in North Dakota. + ${demographicsBoilerplate} ${probationBoilerplate} ${probationDistrictBoilerplate}`, totalLabel: "Total people on probation", }, ProbationPopulationHistorical: { name: "Historical Probation Population", description: "description TK", - methodology: - "This chart shows the number of people that were on probation in North Dakota on the first day of each month over the last 20 years.", + methodology: `This data includes the number of people that were on probation in + North Dakota on the first day of each month over the last 20 years. + ${demographicsBoilerplate} ${probationBoilerplate}`, }, ProbationSuccessHistorical: { name: "Historical Probation Completion Rates", description: "description TK", - methodology: - "This chart looks at the percent of people projected to complete probation in a given month who have successfully completed probation by the end of that month.

Probation is considered successfully completed if the individual is discharged from probation positively or if a probation period expires. Unsuccessful completion of probation occurs when probation ends due to absconsion, revocation, or negative termination. Deaths, suspensions, and terminations marked as “other” are excluded from these calculations because they are neither successful nor unsuccessful.

Individuals whose probation is terminated prior to their projected completion month are counted in the month in which their probation is scheduled to complete, while individuals who have not yet completed probation by their projected completion date are excluded. For example, if 15 people are projected to complete probation in 12 months, 5 are revoked this month, 3 are discharged early in 8 months, 2 complete parole in 12 months, and 5 do not complete probation, the completion rate in 12 months will be 50%, as 10 of the people projected to complete probation will have actually completed probation, 5 of them successfully.

", + methodology: `This data reports the percentage of people projected to complete probation + in a given month who have successfully completed probation by the end of that month. +

Probation is considered successfully completed if the individual is discharged from + probation positively or if a probation period expires. Unsuccessful completion of probation + occurs when probation ends due to absconsion, revocation, or negative termination. Deaths, + suspensions, and terminations marked as “other” are excluded from these calculations because + they are neither successful nor unsuccessful.

Individuals whose probation is terminated + prior to their projected completion month are counted in the month in which their probation + is scheduled to complete, while individuals who have not yet completed probation by their + projected completion date are excluded. For example, if 15 people are projected to + complete probation in 12 months, 5 are revoked this month, 3 are discharged early in + 8 months, 2 complete parole in 12 months, and 5 do not complete probation, the completion + rate in 12 months will be 50%, as 10 of the people projected to complete probation will + have actually completed probation, 5 of them successfully.

${demographicsBoilerplate} + ${probationBoilerplate} ${probationDistrictBoilerplate}`, }, ProbationRevocationsAggregate: { name: "Reasons for Probation Revocation", description: "description TK", - methodology: - "This chart counts people who were incarcerated in a DOCR facility within the last 3 years because their probation was revoked. Revocations are included based on the date that the person was admitted to a DOCR facility because their probation was revoked, not the date of the probation case closure or causal violation or offense.

Revocation admissions are linked to supervision cases closed via revocation within 90 days of the admission. Each individual is counted once, even if they had multiple violation reasons or revocation proceedings from multiple supervision cases. If an individual had their probation revoked multiple times in the last 3 years, the most recent revocation is counted. When an individual does have multiple violation types leading to revocation, only the most severe violation is displayed. New offenses are considered more severe than absconsions, which are considered more severe than technical violations. Violations of “Unknown Type” indicate individuals who were admitted to prison for a supervision revocation where the violation that caused the revocation cannot yet be determined. Revocation admissions without a supervision case closed via revocation in the 90 day window will always be considered of “Unknown Type”.

Individuals occasionally serve probation and parole sentences simultaneously. For revoked individuals in this situation, their revocation admission is categorized as either a probation or a parole revocation, depending on who authorized the revocation admission (the parole board for parole revocations or the sentencing judge for probation revocations). This chart counts only individuals with probation revocation admissions. Individuals on both parole and probation with a parole revocation admission are included in the parole page.

", + methodology: `This data includes people who were incarcerated in a DOCR facility within the last + 3 years because their probation was revoked. Revocations are included based on the + date that the person was admitted to a DOCR facility because their probation was + revoked, not the date of the probation case closure or causal violation or offense. +

Revocation admissions are linked to supervision cases closed via revocation within + 90 days of the admission. Each individual is counted once, even if they had multiple + violation reasons or revocation proceedings from multiple supervision cases. If an + individual had their probation revoked multiple times in the last 3 years, the most + recent revocation is counted. When an individual does have multiple violation types + leading to revocation, only the most severe violation is displayed. New offenses are + considered more severe than absconsions, which are considered more severe than technical + violations. Violations of “Unknown Type” indicate individuals who were admitted to prison + for a supervision revocation where the violation that caused the revocation cannot yet be + determined. Revocation admissions without a supervision case closed via revocation in the + 90 day window will always be considered of “Unknown Type”.

Individuals occasionally + serve probation and parole sentences simultaneously. For revoked individuals in this situation, + their revocation admission is categorized as either a probation or a parole revocation, + depending on who authorized the revocation admission (the parole board for parole + revocations or the sentencing judge for probation revocations). This data includes + only individuals with probation revocation admissions. Individuals on both parole + and probation with a parole revocation admission are included in the parole page.

+ ${demographicsBoilerplate} ${probationBoilerplate}`, }, ProbationProgrammingCurrent: { name: "Free Through Recovery Program Participation in Probation", description: "description TK", - methodology: - "This chart counts the total number of people on probation who are actively enrolled in Free Through Recovery (FTR). Free Through Recovery is run jointly with the Department of Health and Human Services (DHS): as a result, FTR enrollment is aggregated into the 8 DHS service regions of the provider locations at which individuals are enrolled.", + methodology: `This data includes the total number of people on probation who are actively + enrolled in Free Through Recovery (FTR). Free Through Recovery is run jointly + with the Department of Health and Human Services (DHS): as a result, FTR enrollment + is aggregated into the 8 DHS service regions of the provider locations at which + individuals are enrolled. ${probationBoilerplate}`, }, ParolePopulationCurrent: { name: "Current Parole Population", description: "description TK", - methodology: - "This visualization counts people currently on parole in North Dakota.", + methodology: `This data includes people currently on parole in North Dakota. + ${demographicsBoilerplate} ${paroleBoilerplate} ${paroleOfficerBoilerplate}`, totalLabel: "Total people on parole", }, ParolePopulationHistorical: { name: "Historical Parole Population", description: "description TK", - methodology: - "This chart shows the number of people that were on parole in North Dakota on the first day of each month over the last 20 years.", + methodology: `This data includes the number of people that were on parole in North Dakota + on the first day of each month over the last 20 years. ${demographicsBoilerplate} + ${paroleBoilerplate}`, }, ParoleSuccessHistorical: { name: "Historical Parole Completion Rates", description: "description TK", - methodology: - "This chart looks at the percent of people projected to complete parole in a given month who have successfully completed parole by the end of that month.

Parole is considered successfully completed if an individual is discharged from parole positively or if a parole period expires. Unsuccessful completions of parole occur when the parole ends due to absconsion, a revocation, or a negative termination. Deaths, suspensions, and terminations marked as “other” are excluded from these calculations because they are neither successful nor unsuccessful.

Individuals whose parole is terminated prior to their projected completion month are counted in the month in which their parole is scheduled to complete, while individuals who have not yet completed parole by their projected completion date are excluded. For example, if 15 people are projected to complete parole in 12 months, 5 are revoked this month, 3 are discharged early in 8 months, 2 complete parole in 12 months, and 5 do not complete parole, the completion rate in 12 months will be 50%, as 10 of the people projected to complete parole will have actually completed parole, 5 of them successfully.

", + methodology: `This data reports the percentage of people projected to complete parole + in a given month who have successfully completed parole by the end of that month. +

Parole is considered successfully completed if an individual is discharged from + parole positively or if a parole period expires. Unsuccessful completions of parole occur + when the parole ends due to absconsion, a revocation, or a negative termination. Deaths, + suspensions, and terminations marked as “other” are excluded from these calculations + because they are neither successful nor unsuccessful.

Individuals whose parole + is terminated prior to their projected completion month are counted in the month in + which their parole is scheduled to complete, while individuals who have not yet + completed parole by their projected completion date are excluded. For example, if 15 + people are projected to complete parole in 12 months, 5 are revoked this month, 3 + are discharged early in 8 months, 2 complete parole in 12 months, and 5 do not + complete parole, the completion rate in 12 months will be 50%, as 10 of the people + projected to complete parole will have actually completed parole, 5 of them + successfully.

${demographicsBoilerplate} ${paroleBoilerplate}`, }, ParoleRevocationsAggregate: { name: "Reasons for Parole Revocation", description: "description TK", - methodology: - "This chart counts people who were incarcerated in a DOCR facility within the last 3 years because their parole was revoked. Revocations are included based on the date that the person was admitted to a DOCR facility because their parole was revoked, not the date of the parole case closure or causal violation or offense.

Revocation admissions are linked to parole cases closed via revocation within 90 days of the admission. Each individual is counted once, even if they had multiple violation reasons or revocation proceedings from multiple supervision cases. If an individual has had their parole revoked multiple times in the last 3 years, the most recent revocation is counted. When an individual does have multiple violation types leading to revocation, only the most severe violation is displayed. New offenses are considered more severe than absconsions, which are considered more severe than technical violations. Violations of “Unknown Type” indicate individuals who were admitted to prison for a supervision revocation where the violation that caused the revocation cannot yet be determined. Revocation admissions without a supervision case closed via revocation in the 90 day window will always be considered of “Unknown Type”.

Individuals occasionally serve probation and parole sentences simultaneously. For revoked individuals in this situation, their revocation admission is categorized as either a probation or a parole revocation, depending on who authorized the revocation admission (the parole board for parole revocations or the sentencing judge for probation revocations). This chart counts only individuals with parole revocation admissions. Individuals on both parole and probation with a probation revocation admission are included in the probation page.

", + methodology: `This data includes people who were incarcerated in a DOCR facility within the + last 3 years because their parole was revoked. Revocations are included based on the date + that the person was admitted to a DOCR facility because their parole was revoked, not the + date of the parole case closure or causal violation or offense.

Revocation admissions + are linked to parole cases closed via revocation within 90 days of the admission. Each + individual is counted once, even if they had multiple violation reasons or revocation + proceedings from multiple supervision cases. If an individual has had their parole revoked + multiple times in the last 3 years, the most recent revocation is counted. When an + individual does have multiple violation types leading to revocation, only the most + severe violation is displayed. New offenses are considered more severe than absconsions, + which are considered more severe than technical violations. Violations of “Unknown Type” + indicate individuals who were admitted to prison for a supervision revocation where the + violation that caused the revocation cannot yet be determined. Revocation admissions + without a supervision case closed via revocation in the 90 day window will always be + considered of “Unknown Type”.

Individuals occasionally serve probation and parole + sentences simultaneously. For revoked individuals in this situation, their revocation + admission is categorized as either a probation or a parole revocation, depending on + who authorized the revocation admission (the parole board for parole revocations or + the sentencing judge for probation revocations). This data includes only individuals + with parole revocation admissions. Individuals on both parole and probation with a + probation revocation admission are included in the probation page.

+ ${demographicsBoilerplate} ${paroleBoilerplate}`, }, ParoleProgrammingCurrent: { name: "Free Through Recovery Program Participation in Parole", description: "description TK", - methodology: - "This chart counts the total number of people on parole who are actively enrolled in Free Through Recovery (FTR). Free Through Recovery is run jointly with the Department of Health and Human Services (DHS): as a result, FTR enrollment is aggregated into the 8 DHS service regions of the provider locations at which individuals are enrolled.", + methodology: `This data includes the total number of people on parole who are actively enrolled + in Free Through Recovery (FTR). Free Through Recovery is run jointly with the Department of + Health and Human Services (DHS): as a result, FTR enrollment is aggregated into the 8 DHS service + regions of the provider locations at which individuals are enrolled. ${paroleBoilerplate}`, }, }, systemNarratives: { diff --git a/spotlight-client/src/contentModels/Metric.test.ts b/spotlight-client/src/contentModels/Metric.test.ts index 5b6d9438..567ed649 100644 --- a/spotlight-client/src/contentModels/Metric.test.ts +++ b/spotlight-client/src/contentModels/Metric.test.ts @@ -251,7 +251,9 @@ describe("data download", () => { expect(recordsFromCsv[0]).toEqual(expectedRecord); // the file in the archive is plain text but methodology can contain HTML tags - expect(readmeContents).toBe(stripHtml(metric.methodology).result); + expect(readmeContents).toBe( + stripHtml(metric.methodology).result.replace(/\s+/g, " ") + ); // @ts-expect-error typedefs for `test.each` are wrong, `done` will be a function done(); diff --git a/spotlight-client/src/contentModels/Metric.ts b/spotlight-client/src/contentModels/Metric.ts index 6c3b40a6..7f5d63ae 100644 --- a/spotlight-client/src/contentModels/Metric.ts +++ b/spotlight-client/src/contentModels/Metric.ts @@ -232,7 +232,10 @@ export default abstract class Metric { // this assertion is safe because we are waiting for it in the reaction above const data = csvFormat(this.allRecords as RecordFormat[]); zip.file(`${zipName}/data.csv`, data); - zip.file(`${zipName}/README.txt`, stripHtml(this.methodology).result); + zip.file( + `${zipName}/README.txt`, + stripHtml(this.methodology).result.replace(/\s+/g, " ") + ); zip .generateAsync({ type: "blob" }) diff --git a/spotlight-client/src/index.tsx b/spotlight-client/src/index.tsx index caaaeafb..787d6dd7 100644 --- a/spotlight-client/src/index.tsx +++ b/spotlight-client/src/index.tsx @@ -22,6 +22,7 @@ import "intersection-observer"; import { configure } from "mobx"; import React from "react"; import ReactDOM from "react-dom"; +import ReactModal from "react-modal"; import App from "./App"; configure({ @@ -33,4 +34,6 @@ configure({ observableRequiresReaction: true, }); -ReactDOM.render(, document.getElementById("root")); +ReactDOM.render(, document.getElementById("root"), () => { + ReactModal.setAppElement("#root"); +}); diff --git a/yarn.lock b/yarn.lock index 5cfd8190..d968b5b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1145,6 +1145,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.13.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.9.tgz#97dbe2116e2630c489f22e0656decd60aaa1fcee" + integrity sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.10.4", "@babel/template@^7.4.0", "@babel/template@^7.8.6": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" @@ -1196,6 +1203,42 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@emotion/cache@^10.0.27": + version "10.0.29" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" + integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== + dependencies: + "@emotion/sheet" "0.9.4" + "@emotion/stylis" "0.8.5" + "@emotion/utils" "0.11.3" + "@emotion/weak-memoize" "0.2.5" + +"@emotion/core@^10.0.14": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3" + integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/cache" "^10.0.27" + "@emotion/css" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +"@emotion/css@^10.0.27": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== + dependencies: + "@emotion/serialize" "^0.11.15" + "@emotion/utils" "0.11.3" + babel-plugin-emotion "^10.0.27" + +"@emotion/hash@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + "@emotion/is-prop-valid@^0.8.8": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" @@ -1208,21 +1251,57 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/stylis@^0.8.4": +"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": + version "0.11.16" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" + integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== + dependencies: + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/unitless" "0.7.5" + "@emotion/utils" "0.11.3" + csstype "^2.5.7" + +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + +"@emotion/stylis@0.8.5", "@emotion/stylis@^0.8.4": version "0.8.5" resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@^0.7.4": +"@emotion/unitless@0.7.5", "@emotion/unitless@^0.7.4": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== + +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + "@essentials/raf@^1.1.3": version "1.2.0" resolved "https://registry.yarnpkg.com/@essentials/raf/-/raf-1.2.0.tgz#2755670021618433aa437453dc98ad4bc8436177" integrity sha512-AWJvpprE2o7ATMb7HBYMVUVmPJBCt2wZp2rY7d+rAcNSMvzLbDepy9KFeqqrPZh+s9aIpbw1LgmuAW7kuRFgrQ== +"@fontsource/libre-baskerville@^4.1.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@fontsource/libre-baskerville/-/libre-baskerville-4.2.1.tgz#1088749068e5ffa1c2689cd5b1318f8429300bb4" + integrity sha512-ARLzJooty+BuZa8rCYdAiLdINiHI3+JKiitgs7sJm4I39sEC883WjcWhzGQVKIkSsOzmmKfvetxKOWDzuQFE4w== + +"@fontsource/libre-franklin@^4.1.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@fontsource/libre-franklin/-/libre-franklin-4.2.1.tgz#45b7867c975eeed897f74613564c7c0a03b987b8" + integrity sha512-u2qcrPqU38nOhs4YrVuEegOiSl6strEQ+AkjH8D+yrbFzay+wxHqD8W9IeHjFY4Vn84O8d1bvxeNtjVkS+96UQ== + "@google-cloud/common@^3.3.0": version "3.4.1" resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-3.4.1.tgz#a1920d73c38437923b4b134e245c392d36c442e9" @@ -1661,6 +1740,42 @@ resolved "https://registry.yarnpkg.com/@react-hook/previous/-/previous-1.0.1.tgz#61f499e855873dcdb64e7b98f302194548f267f4" integrity sha512-O7VaRLDEHRy1hxh03CmtWRxDhCwIVQBBkf1kYdYqUP3KNrPnQMIVIYYYQpHIIiNcS1BO6zmBKM4bugFDNgP8Iw== +"@recidiviz/case-triage-components@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@recidiviz/case-triage-components/-/case-triage-components-0.2.2.tgz#95c770158ae43cff5c0e8615f7b3e2541f0513fa" + integrity sha512-ySr5UdXZUROy1OQIKLE4iCZRN7D7JAqVbfQLCUEO3nxXFAtkAkdctcYzb0pV9mJGI4mZjShwShbkUQV0My7BTw== + dependencies: + "@fontsource/libre-baskerville" "^4.1.0" + "@fontsource/libre-franklin" "^4.1.0" + "@types/prop-types" "^15.7.3" + "@types/react-modal" "^3.12.0" + dayjs "^1.10.3" + moment "^2.29.1" + polished "^4.1.0" + postcss "^8.2.4" + postcss-url "^10.1.1" + postcss-webfont "^3.1.1" + prop-types "^15.7.2" + react "^17.0.0" + react-customizable-progressbar "^1.0.2" + react-dom "^17.0.0" + react-modal "^3.12.1" + react-multi-carousel "^2.5.5" + react-toast-notifications "^2.4.3" + rollup-plugin-sourcemaps "^0.6.3" + rollup-plugin-url "^3.0.1" + styled-components "^5.2.1" + web-vitals "^1.0.1" + +"@rollup/pluginutils@^3.0.9": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sentry/browser@5.27.3": version "5.27.3" resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.27.3.tgz#02e78a4502ee99988d3cbb0075a11ec44b503871" @@ -2055,6 +2170,11 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/geojson@*": version "7946.0.7" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" @@ -2172,7 +2292,7 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prop-types@*": +"@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== @@ -2195,13 +2315,20 @@ "@types/history" "*" "@types/react" "*" -"@types/react-dom@*", "@types/react-dom@^16.9.0": +"@types/react-dom@*": version "16.9.9" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.9.tgz#d2d0a6f720a0206369ccbefff752ba37b9583136" integrity sha512-jE16FNWO3Logq/Lf+yvEAjKzhpST/Eac8EMd1i4dgZdMczfgqC8EjpxwNgEe3SExHYLliabXDh9DEhhqnlXJhg== dependencies: "@types/react" "*" +"@types/react-dom@^17.0.0": + version "17.0.1" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.1.tgz#d92d77d020bfb083e07cc8e0ac9f933599a4d56a" + integrity sha512-yIVyopxQb8IDZ7SOHeTovurFq+fXiPICa+GV3gp0Xedsl+MwQlMLKmvrnEjFbQxjliH5YVAEWFh975eVNmKj7Q== + dependencies: + "@types/react" "*" + "@types/react-measure@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/react-measure/-/react-measure-2.0.6.tgz#d66efad1960ea8b38eef9d8cc3cc857e7767b09e" @@ -2209,6 +2336,13 @@ dependencies: "@types/react" "*" +"@types/react-modal@^3.12.0": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@types/react-modal/-/react-modal-3.12.0.tgz#91fa86a76fd7fc57e36d2cf9b76efe5735a855a1" + integrity sha512-UnHu/YO73NZLwqFpju/c0tqiswR0UHIfeO16rkfLVJUIMfQsl7X0CBm99H5XXgBMe/PgtQ/Rkud72iuRBr1TeA== + dependencies: + "@types/react" "*" + "@types/react-native@*": version "0.63.40" resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.63.40.tgz#66b11824a6aadb0dde0db87bd8aff58165c7a8f8" @@ -2232,7 +2366,7 @@ "@types/geojson" "*" "@types/react" "*" -"@types/react@*", "@types/react@^16.9.0": +"@types/react@*": version "16.9.55" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.55.tgz#47078587f5bfe028a23b6b46c7b94ac0d436acff" integrity sha512-6KLe6lkILeRwyyy7yG9rULKJ0sXplUsl98MGoCfpteXf9sPWFWWMknDcsvubcpaTdBuxtsLF6HDUwdApZL/xIg== @@ -2240,6 +2374,14 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/react@^17.0.0": + version "17.0.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.2.tgz#3de24c4efef902dd9795a49c75f760cbe4f7a5a8" + integrity sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -2870,7 +3012,7 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.1.1: +aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== @@ -2887,7 +3029,15 @@ archiver-utils@^1.3.0: normalize-path "^2.0.0" readable-stream "^2.0.0" -argparse@^1.0.7: +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.6, argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -3096,6 +3246,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -3188,6 +3343,22 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-emotion@^10.0.27: + version "10.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz#a1fe3503cff80abfd0bdda14abd2e8e57a79d17d" + integrity sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/serialize" "^0.11.16" + babel-plugin-macros "^2.0.0" + babel-plugin-syntax-jsx "^6.18.0" + convert-source-map "^1.5.0" + escape-string-regexp "^1.0.5" + find-root "^1.1.0" + source-map "^0.5.7" + babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -3205,7 +3376,7 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@2.8.0: +babel-plugin-macros@2.8.0, babel-plugin-macros@^2.0.0: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== @@ -3363,7 +3534,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -bindings@^1.5.0: +bindings@^1.3.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -3625,6 +3796,13 @@ buffer@^5.1.0: base64-js "^1.3.1" ieee754 "^1.1.13" +bufferstreams@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-2.0.1.tgz#441b267c2fc3fee02bb1d929289da113903bd5ef" + integrity sha512-ZswyIoBfFb3cVDsnZLLj2IDJ/0ppYdil/v2EGlZXvoefO689FokEmFEldhN5dV7R2QBxFneqTJOMIpfqhj+n0g== + dependencies: + readable-stream "^2.3.6" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4056,6 +4234,11 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4116,7 +4299,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2, commander@^2.11.0, commander@^2.15.1, commander@^2.20.0: +commander@2, commander@^2.11.0, commander@^2.12.2, commander@^2.15.1, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4235,6 +4418,11 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + constant-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" @@ -4271,7 +4459,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -4407,7 +4595,7 @@ crc32-stream@^2.0.0: crc "^3.4.4" readable-stream "^2.0.0" -crc@^3.4.4: +crc@^3.4.4, crc@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== @@ -4767,11 +4955,26 @@ cssstyle@^2.2.0: dependencies: cssom "~0.3.6" +csstype@^2.5.7: + version "2.6.16" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.16.tgz#544d69f547013b85a40d15bff75db38f34fe9c39" + integrity sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q== + csstype@^3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.4.tgz#b156d7be03b84ff425c9a0a4b1e5f4da9c5ca888" integrity sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA== +cubic2quad@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cubic2quad/-/cubic2quad-1.1.1.tgz#69b19c61a3f5b41ecf2f1d5fae8fb03415aa8b15" + integrity sha1-abGcYaP1tB7PLx1fro+wNBWqixU= + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -5170,6 +5373,11 @@ date-fns@*, date-fns@^2.14.0, date-fns@^2.16.1: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== +dayjs@^1.10.3: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5305,6 +5513,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -5439,6 +5652,14 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-helpers@^5.0.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" + integrity sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -6140,6 +6361,16 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -6213,6 +6444,11 @@ execa@^4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +exenv@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -6551,6 +6787,11 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@4.1.0, find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -6731,6 +6972,23 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -6800,6 +7058,20 @@ functions-have-names@^1.2.0: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gaxios@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-3.2.0.tgz#11b6f0e8fb08d94a10d4d58b044ad3bec6dd486a" @@ -6848,6 +7120,11 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +geometry-interfaces@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz#9e82af6700ca639a675299f08e1f5fbc4a79d48d" + integrity sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -7055,6 +7332,11 @@ graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.1.3: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -7128,6 +7410,11 @@ has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -7916,6 +8203,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -8026,6 +8320,11 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" @@ -8104,6 +8403,11 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -8641,6 +8945,11 @@ jest@24.9.0: import-local "^2.0.0" jest-cli "^24.9.0" +jju@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -8792,6 +9101,13 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-parse-helpfulerror@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" + integrity sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w= + dependencies: + jju "^1.1.0" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -8854,6 +9170,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -9215,6 +9540,11 @@ lodash.xor@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6" integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY= +lodash@4, lodash@^4.17.10: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + "lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5, lodash@^4.8.0: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" @@ -9261,6 +9591,17 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4 dependencies: js-tokens "^3.0.0 || ^4.0.0" +lowdb@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-0.14.0.tgz#cce4e6affe867c6cd4b196b382d3359b4d39efb5" + integrity sha1-zOTmr/6GfGzUsZazgtM1m00577U= + dependencies: + graceful-fs "^4.1.3" + is-promise "^2.1.0" + json-parse-helpfulerror "^1.0.3" + lodash "4" + steno "^0.4.1" + lower-case@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" @@ -9304,6 +9645,13 @@ lz-string@^1.4.4: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= +make-dir@3.1.0, make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -9312,13 +9660,6 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -9430,6 +9771,11 @@ methods@1.1.2, methods@^1.1.2, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +microbuffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/microbuffer/-/microbuffer-1.0.0.tgz#8b3832ed40c87d51f47bb234913a698a756d19d2" + integrity sha1-izgy7UDIfVH0e7I0kTppinVtGdI= + microevent.ts@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" @@ -9492,7 +9838,7 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.2.0, mime@^2.4.4, mime@^2.4.6: +mime@2.4.6, mime@^2.2.0, mime@^2.4.4, mime@^2.4.6: version "2.4.6" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== @@ -9565,6 +9911,14 @@ minipass-pipeline@^1.2.2: dependencies: minipass "^3.0.0" +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + minipass@^3.0.0, minipass@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" @@ -9572,6 +9926,13 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -9604,7 +9965,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -9626,6 +9987,11 @@ mobx@^6.0.4: resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.0.4.tgz#8fc3e3629a3346f8afddf5bd954411974744dad1" integrity sha512-wT2QJT9tW19VSHo9x7RPKU3z/I2Ps6wUS8Kb1OO+kzmg7UY3n4AkcaYG6jq95Lp1R9ohjC/NGYuT2PtuvBjhFg== +moment@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + morgan@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -9687,11 +10053,16 @@ n-readlines@^1.0.1: resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== -nan@^2.12.1: +nan@^2.10.0, nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -9714,6 +10085,13 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +neatequal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/neatequal/-/neatequal-1.0.0.tgz#2ee1211bc9fa6e4c55715fd210bb05602eb1ae3b" + integrity sha1-LuEhG8n6bkxVcV/SELsFYC6xrjs= + dependencies: + varstream "^0.3.2" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -9768,11 +10146,35 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-file-cache@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/node-file-cache/-/node-file-cache-1.0.2.tgz#237e33ca24fda360e86bf618b75cab619ef2ece3" + integrity sha1-I34zyiT9o2Doa/YYt1yrYZ7y7OM= + dependencies: + lowdb "^0.14.0" + node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-gyp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-4.0.0.tgz#972654af4e5dd0cd2a19081b4b46fe0442ba6f45" + integrity sha512-2XiryJ8sICNo6ej8d0idXDEMKfVfFK7kekGCtJAuelGsYHQxhj13KTf95swTCN2dZ/4lTfZ84Fu31jqJEEgjWA== + dependencies: + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^4.4.8" + which "1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -9844,6 +10246,13 @@ nodemon@^2.0.4: undefsafe "^2.0.3" update-notifier "^4.1.0" +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -9927,6 +10336,16 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +"npmlog@0 || 1 || 2 || 3 || 4": + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -9939,6 +10358,11 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + nwsapi@^2.0.7, nwsapi@^2.1.3, nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -10145,11 +10569,24 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-tmpdir@~1.0.2: +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -10260,7 +10697,7 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pako@~1.0.2, pako@~1.0.5: +pako@^1.0.0, pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -10474,7 +10911,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -10579,6 +11016,13 @@ polished@^4.0.5: dependencies: "@babel/runtime" "^7.12.5" +polished@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.1.1.tgz#40442cc973348e466f2918cdf647531bb6c29bfb" + integrity sha512-4MZTrfPMPRLD7ac8b+2JZxei58zw6N1hFkdBDERif5Tlj19y3vPoPusrLG+mJIlPTGnUlKw3+yWz0BazvMx1vg== + dependencies: + "@babel/runtime" "^7.12.5" + polygon-offset@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/polygon-offset/-/polygon-offset-0.3.1.tgz#69a6565f0b27fa76b5270d5c079b0ba2c8f0bba3" @@ -11225,6 +11669,16 @@ postcss-unique-selectors@^4.0.1: postcss "^7.0.0" uniqs "^2.0.0" +postcss-url@^10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-10.1.1.tgz#f58b4ec684a7b662c170357150eddcbc04cefa24" + integrity sha512-cYeRNcXUMiM1sr3UgHkY+zMuqhSmJaLeP3VOZWWqShBDMB10DlrK5KfciLK0LGr7xKDPP5nH7Q2odvDHQSrP9A== + dependencies: + make-dir "3.1.0" + mime "2.4.6" + minimatch "3.0.4" + xxhashjs "0.2.2" + postcss-value-parser@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" @@ -11244,6 +11698,23 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-webfont@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-webfont/-/postcss-webfont-3.1.1.tgz#61ed34839cc761d763cd6973b0c2ff31cb6cfbcd" + integrity sha512-k6kKz4DXsYFhxIcgOZ7sgmyEUFCGaDqzzsYK7TlyyeIucqNK5QKrFSCidRcl59CJ3kr/Ynxv5oLvWZU5fTXT+A== + dependencies: + crc "^3.8.0" + fs-extra "^9.0.0" + glob "^7.1.6" + node-file-cache "^1.0.2" + postcss "^7.0.30" + string-template "^1.0.0" + svg2ttf "^4.3.0" + svgicons2svgfont "^9.1.1" + ttf2eot "^2.0.0" + ttf2woff "^2.0.1" + ttf2woff2 "^3.0.0" + postcss@7.0.21: version "7.0.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" @@ -11253,7 +11724,7 @@ postcss@7.0.21: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== @@ -11262,6 +11733,15 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, po source-map "^0.6.1" supports-color "^6.1.0" +postcss@^8.2.4: + version "8.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" + integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== + dependencies: + colorette "^1.2.1" + nanoid "^3.1.20" + source-map "^0.6.1" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -11674,6 +12154,11 @@ react-collapsed@^3.0.0, react-collapsed@^3.0.1: raf "^3.4.1" tiny-warning "^1.0.3" +react-customizable-progressbar@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/react-customizable-progressbar/-/react-customizable-progressbar-1.0.2.tgz#5f231a4e47638ab203ebe3fa0382cff2142ac99b" + integrity sha512-PJTNgeXT/sGGN7U9ahYGqpJEX1SzkcMOhzRBdO5npkMJDbZwyXq4Elp7C2brEhRlItEnaTPzts+CFAFzosmh/w== + react-dev-utils@^10.2.1: version "10.2.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" @@ -11704,15 +12189,14 @@ react-dev-utils@^10.2.1: strip-ansi "6.0.0" text-table "0.2.0" -react-dom@^16.13.1: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" - integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== +react-dom@^17.0.0: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" + scheduler "^0.20.1" react-error-boundary@^3.0.2: version "3.0.2" @@ -11767,7 +12251,7 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== -react-lifecycles-compat@^3.0.4: +react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== @@ -11782,6 +12266,21 @@ react-measure@^2.3.0, react-measure@^2.5.2: prop-types "^15.6.2" resize-observer-polyfill "^1.5.0" +react-modal@^3.12.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.12.1.tgz#38c33f70d81c33d02ff1ed115530443a3dc2afd3" + integrity sha512-WGuXn7Fq31PbFJwtWmOk+jFtGC7E9tJVbFX0lts8ZoS5EPi9+WWylUJWLKKVm3H4GlQ7ZxY7R6tLlbSIBQ5oZA== + dependencies: + exenv "^1.2.0" + prop-types "^15.5.10" + react-lifecycles-compat "^3.0.0" + warning "^4.0.3" + +react-multi-carousel@^2.5.5: + version "2.6.1" + resolved "https://registry.yarnpkg.com/react-multi-carousel/-/react-multi-carousel-2.6.1.tgz#43871c8c50aab96f64769d59e2e3b88a77e0ea8b" + integrity sha512-N0YfKqEYc9ElyGMrvukyVDMkYae76GDY4+1pXXPLvRj9uLFuaa4rCj31RWbNP8VEE2A2Sp3TSLV2yXVoLUUD8w== + react-portal@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-4.2.1.tgz#12c1599238c06fb08a9800f3070bea2a3f78b1a6" @@ -11893,14 +12392,31 @@ react-stickyfill@^0.2.5: Stickyfill "git+https://github.com/seleckis/stickyfill.git" prop-types "^15.5.10" -react@^16.13.1: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" - integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== +react-toast-notifications@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/react-toast-notifications/-/react-toast-notifications-2.4.3.tgz#ebf2ee776615a97906cef214352cfd9fe800c583" + integrity sha512-Ya/i2dCjN95Ytb/pwbAVmDMSKQwGeeGOhUThtjFQx2XAFKE+fQnodLlIylhgZfsInxdUXPFGFnzTdGS8JafuLA== + dependencies: + "@emotion/core" "^10.0.14" + react-transition-group "^4.4.1" + +react-transition-group@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^17.0.0: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" read-pkg-up@^2.0.0: version "2.0.0" @@ -11936,7 +12452,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -11949,6 +12465,16 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" @@ -12320,6 +12846,13 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -12327,13 +12860,6 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -12342,6 +12868,29 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-sourcemaps@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed" + integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw== + dependencies: + "@rollup/pluginutils" "^3.0.9" + source-map-resolve "^0.6.0" + +rollup-plugin-url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-url/-/rollup-plugin-url-3.0.1.tgz#6362fd31d7ce6d078dc5adffbd844f080de61bd7" + integrity sha512-fQVrxlW335snHfPqZ7a0JIkkYEIrLeFobpAxRMQnyv7xQeJOY1yOd84STIdCaLYPoGzwOq8waOdGipNH181kzg== + dependencies: + mime "^2.4.4" + rollup-pluginutils "^2.8.2" + +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + roughjs-es5@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/roughjs-es5/-/roughjs-es5-0.1.0.tgz#7ba4d5fc490948fd75bcab75d94e7106f49f0af6" @@ -12455,10 +13004,10 @@ saxes@^5.0.0: dependencies: xmlchars "^2.2.0" -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== +scheduler@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -12615,6 +13164,11 @@ semver@^7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -12673,7 +13227,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -12969,7 +13523,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -13093,6 +13647,13 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +steno@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" + integrity sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs= + dependencies: + graceful-fs "^4.1.3" + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -13188,6 +13749,11 @@ string-strip-html@^8.2.2: ranges-push "^5.0.5" string-left-right "^4.0.5" +string-template@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" + integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= + string-trim-spaces-only@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/string-trim-spaces-only/-/string-trim-spaces-only-3.0.5.tgz#27d314975f9bb709cca288c794ee33dfd4829d09" @@ -13195,6 +13761,23 @@ string-trim-spaces-only@^3.0.5: dependencies: "@babel/runtime" "^7.12.13" +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -13213,6 +13796,16 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.fromcodepoint@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz#8d978333c0bc92538f50f383e4888f3e5619d653" + integrity sha1-jZeDM8C8klOPUPOD5IiPPlYZ1lM= + +string.prototype.codepointat@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc" + integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg== + string.prototype.matchall@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" @@ -13256,6 +13849,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -13481,6 +14079,39 @@ svg-path-bounding-box@1.0.4: dependencies: svgpath "^2.0.0" +svg-pathdata@^5.0.0: + version "5.0.5" + resolved "https://registry.yarnpkg.com/svg-pathdata/-/svg-pathdata-5.0.5.tgz#65e8d765642ba15fe15434444087d082bc526b29" + integrity sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow== + +svg2ttf@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/svg2ttf/-/svg2ttf-4.3.0.tgz#433440c7e9062f8fdcec3cad721cd08a2c7e51e3" + integrity sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA== + dependencies: + argparse "^1.0.6" + cubic2quad "^1.0.0" + lodash "^4.17.10" + microbuffer "^1.0.0" + svgpath "^2.1.5" + xmldom "~0.1.22" + +svgicons2svgfont@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/svgicons2svgfont/-/svgicons2svgfont-9.1.1.tgz#655d30c256176f6e29c96058609ef0a9b0ebf2df" + integrity sha512-iOj7lqHP/oMrLg7S2Iv89LOJUfmIuePefXcs5ul4IsKwcYvL/T/Buahz+nQQJygyuvEMBBXqnCRmnvJggHeJzA== + dependencies: + commander "^2.12.2" + geometry-interfaces "^1.1.4" + glob "^7.1.2" + neatequal "^1.0.0" + readable-stream "^2.3.3" + sax "^1.2.4" + string.fromcodepoint "^0.2.1" + string.prototype.codepointat "^0.2.0" + svg-pathdata "^5.0.0" + transformation-matrix-js "^2.7.1" + svgo@^1.0.0, svgo@^1.2.2: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" @@ -13505,6 +14136,11 @@ svgpath@^2.0.0: resolved "https://registry.yarnpkg.com/svgpath/-/svgpath-2.3.0.tgz#efc76705deab6bd1774e9f0ed038bb661b5e4d23" integrity sha512-N/4UDu3Y2ICik0daMmFW1tplw0XPs1nVIEVYkTiQfj9/JQZeEtAKaSYwheCwje1I4pQ5r22fGpoaNIvGgsyJyg== +svgpath@^2.1.5: + version "2.3.1" + resolved "https://registry.yarnpkg.com/svgpath/-/svgpath-2.3.1.tgz#b102334bebd2244b4818460ba2ebad52716a0d43" + integrity sha512-wNz6lCoj+99GMoyU7SozTfPqiLHz6WcJYZ30Z+F4lF/gPtxWHBCpZ4DhoDI0+oZ0dObKyYsJdSPGbL2mJq/qCg== + symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -13530,6 +14166,19 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar@^4.4.8: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + teeny-request@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c" @@ -13785,6 +14434,11 @@ tr46@^2.0.2: dependencies: punycode "^2.1.1" +transformation-matrix-js@^2.7.1: + version "2.7.6" + resolved "https://registry.yarnpkg.com/transformation-matrix-js/-/transformation-matrix-js-2.7.6.tgz#25c7ff055c99b8528ffbd4c4a2684be6c9d5ef60" + integrity sha512-1CxDIZmCQ3vA0GGnkdMQqxUXVm3xXAFmglPYRS1hr37LzSg22TC7QAWOT38OmdUvMEs/rqcnkFoAsqvzdiluDg== + ts-pnp@1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" @@ -13822,6 +14476,33 @@ tsutils@^3.17.1: dependencies: tslib "^1.8.1" +ttf2eot@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ttf2eot/-/ttf2eot-2.0.0.tgz#8e6337a585abd1608a0c84958ab483ce69f6654b" + integrity sha1-jmM3pYWr0WCKDISVirSDzmn2ZUs= + dependencies: + argparse "^1.0.6" + microbuffer "^1.0.0" + +ttf2woff2@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ttf2woff2/-/ttf2woff2-3.0.0.tgz#afb64a603f62f396680bd0fc33b312de0c882ee6" + integrity sha512-5/Web6B0lF/STNAQ0d5vAlRRquuWsNj8wOmKQ9ql9Bsgbx8MsLnNzaBG9vBcSE4s4Ry1QOr/MyUrDUIVgVPEfw== + dependencies: + bindings "^1.3.0" + bufferstreams "^2.0.1" + nan "^2.10.0" + node-gyp "^4.0.0" + +ttf2woff@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ttf2woff/-/ttf2woff-2.0.2.tgz#09a7cee59abd3c15282b57ed84ac7c7770749f1f" + integrity sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA== + dependencies: + argparse "^1.0.6" + microbuffer "^1.0.0" + pako "^1.0.0" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -13982,6 +14663,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -14167,6 +14853,13 @@ var-clean@^1.0.0: resolved "https://registry.yarnpkg.com/var-clean/-/var-clean-1.0.1.tgz#dfa9920df19a77af2baf8aa4b66f7fc029dedf23" integrity sha1-36mSDfGad68rr4qktm9/wCne3yM= +varstream@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/varstream/-/varstream-0.3.2.tgz#18ac6494765f3ff1a35ad9a4be053bec188a5de1" + integrity sha1-GKxklHZfP/GjWtmkvgU77BiKXeE= + dependencies: + readable-stream "^1.0.33" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -14270,6 +14963,11 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +web-vitals@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.0.tgz#7f410d9a1f7a1cd5d952806b45776204b47dc274" + integrity sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -14465,7 +15163,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -14479,6 +15177,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -14728,6 +15433,11 @@ xmlchars@^2.1.1, xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xmldom@~0.1.22: + version "0.1.31" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" + integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== + xregexp@^4.3.0: version "4.4.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.0.tgz#29660f5d6567cd2ef981dd4a50cb05d22c10719d" @@ -14740,12 +15450,19 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xxhashjs@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.2: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==