diff --git a/.eslintrc.js b/.eslintrc.js index 90a18b6bef..484e6c37ad 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,7 +8,7 @@ module.exports = { ], ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features sourceType: "module", // Allows for the use of imports - tsconfigRootDir: "." + tsconfigRootDir: ".", }, plugins: ["react", "@typescript-eslint"], extends: [ @@ -16,8 +16,11 @@ module.exports = { "plugin:@typescript-eslint/eslint-recommended", // conflict resolution between above and below rulesets. "plugin:@typescript-eslint/recommended", // Uses the recommended rules from the @typescript-eslint/eslint-plugin "plugin:@typescript-eslint/recommended-requiring-type-checking", // additional rules that take a little longer to run + "plugin:import/errors", // check for imports not resolving correctly + "plugin:import/warnings", + "plugin:import/typescript", "prettier/@typescript-eslint", // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier - "plugin:prettier/recommended" // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. + "plugin:prettier/recommended", // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. ], rules: { // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs diff --git a/.gitignore b/.gitignore index 904fd394c8..e1ad88a291 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ storybook-static # Cypress test output videos apps/**/cypress/videos +apps/**/cypress/screenshots # Complied Typescript dist @@ -76,4 +77,6 @@ yarn-error.log # Yarn Integrity file .yarn-integrity -.vscode/ \ No newline at end of file +# IDE configs +.idea +.vscode/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..dbee3f49ec --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.9](https://github.com/Exygy/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) + + +### Reverts + +* Revert "Getting layout component ready for Google Analytics" ([7ca55ec](https://github.com/Exygy/bloom/commit/7ca55ec94c1f377a8e40645f9cc61780b7c1cefa)) diff --git a/README.md b/README.md index b79541edb1..a090dd91e0 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,15 @@ yarn dev:all yarn test:all ``` +### Versioning + +We are using [lerna](https://lerna.js.org/) as a package versioning tool. It helps with keeping multiple package versions in sync. +To upgrade version, first commit your changes to feature branch and push it to github. Then run +``` +yarn new-version +``` +It will upgrade dependencies, commit them to github and create a release with a tag. + ## Contributing Contributions to the core Bloom applications and services are welcomed. To help us meet the project's goals around quality and maintainability, we ask that all contributors read, understand, and agree to these guidelines. diff --git a/apps/public-ala/cypress/integration/navigation.ts b/apps/public-ala/cypress/integration/navigation.ts index 15edd3d64d..1226ac962d 100644 --- a/apps/public-ala/cypress/integration/navigation.ts +++ b/apps/public-ala/cypress/integration/navigation.ts @@ -1,48 +1,44 @@ -describe("Navigating around the site", function() { - it("Loads the homepage directly", function() { +describe("Navigating around the site", function () { + it("Loads the homepage directly", function () { cy.visit("http://localhost:3000") // Check that the homepage banner text is present on the page cy.contains("Apply for affordable housing") }) - it("Loads the listings page directly", function() { + it("Loads the listings page directly", function () { cy.visit("http://localhost:3000/listings") // Check that the listings page banner text is present on the page cy.contains("Rent affordable housing") }) - it("Loads a listing page directly", function() { + it("Loads a listing page directly", function () { cy.visit("http://localhost:3000/listing/Uvbk5qurpB2WI9V6WnNdH") // Check that the listing page sidebar apply section text is present on the page cy.contains("Get a Paper Application") }) - it("Loads a non-listing-related page directly", function() { + it("Loads a non-listing-related page directly", function () { cy.visit("http://localhost:3000/disclaimer") // Check that the Disclaimer page banner text is present on the page cy.contains("Endorsement Disclaimers") }) - it("Can navigate to all page types after initial site load", function() { + it("Can navigate to all page types after initial site load", function () { cy.visit("http://localhost:3000") // Click on the Disclaimer page link in the footer - cy.get("footer a") - .contains("Disclaimer") - .click() + cy.get("footer a").contains("Disclaimer").click() // Should be on the disclaimer page cy.location("pathname").should("equal", "/disclaimer") cy.contains("Endorsement Disclaimers") // Click on the listings page link in the header nav - cy.get(".navbar") - .contains("Listings") - .click() + cy.get(".navbar").contains("Listings").click() // Should be on the listings page cy.location("pathname").should("equal", "/listings") @@ -52,9 +48,7 @@ describe("Navigating around the site", function() { cy.get("article") .first() .within(() => { - cy.get("a") - .last() - .click() + cy.get("a").last().click() }) // Should be on the listing page diff --git a/apps/public-ala/cypress/integration/pages/HousingCounselors.ts b/apps/public-ala/cypress/integration/pages/HousingCounselors.ts index 93d41ff026..1c3f982967 100644 --- a/apps/public-ala/cypress/integration/pages/HousingCounselors.ts +++ b/apps/public-ala/cypress/integration/pages/HousingCounselors.ts @@ -1,10 +1,8 @@ -describe("Housing counselors page", function() { - it("renders the provided list of counselors", function() { +describe("Housing counselors page", function () { + it("renders the provided list of counselors", function () { cy.visit("http://localhost:3000/housing-counselors") cy.contains("Housing Counselors") cy.get("article").should("have.length.of.at.least", 1) - cy.get("article") - .first() - .contains("Language Services: ") + cy.get("article").first().contains("Language Services: ") }) }) diff --git a/apps/public-ala/layouts/application.tsx b/apps/public-ala/layouts/application.tsx index 67462fba36..c6a8c3b8c1 100644 --- a/apps/public-ala/layouts/application.tsx +++ b/apps/public-ala/layouts/application.tsx @@ -4,7 +4,7 @@ import { t, LocalizedLink, SiteHeader } from "@bloom-housing/ui-components" import AlamedaFooter from "../components/AlamedaFooter" import SVG from "react-inlinesvg" -const Layout = props => ( +const Layout = (props) => (
{t("nav.siteTitle")} diff --git a/apps/public-ala/next.config.js b/apps/public-ala/next.config.js index 6c8cfcbacf..af4f8b1fff 100644 --- a/apps/public-ala/next.config.js +++ b/apps/public-ala/next.config.js @@ -38,16 +38,16 @@ module.exports = withCSS( env: { listingServiceUrl: LISTING_SERVICE_URL, mapBoxToken: MAPBOX_TOKEN, - housingCounselorServiceUrl: HOUSING_COUNSELOR_SERVICE_URL + housingCounselorServiceUrl: HOUSING_COUNSELOR_SERVICE_URL, + gtmKey: process.env.GTM_KEY || null, }, sassLoaderOptions: { - prependData: tailwindVars + prependData: tailwindVars, }, // exportPathMap adapted from https://github.com/zeit/next.js/blob/canary/examples/with-static-export/next.config.js async exportPathMap() { // we fetch our list of listings, this allow us to dynamically generate the exported pages let listings = [] - try { const response = await axios.get(LISTING_SERVICE_URL) listings = response.data.listings @@ -59,10 +59,15 @@ module.exports = withCSS( const listingPaths = listings.reduce( (listingPaths, listing) => Object.assign({}, listingPaths, { - [`/listing/${listing.id}`]: { + [`/listing/${listing.id}/${listing.urlSlug}`]: { page: "/listing", - query: { id: listing.id } - } + query: { id: listing.id }, + }, + // Create a redirect so that the base ID redirects to the ID with URL slug + [`/listing/${listing.id}`]: { + page: "/redirect", + query: { to: `/listing/${listing.id}/${listing.urlSlug}` }, + }, }), {} ) @@ -72,18 +77,18 @@ module.exports = withCSS( "/": { page: "/" }, "/listings": { page: "/listings" }, "/housing-counselors": { page: "/HousingCounselors" }, - "/additional-resources": { page: "/AdditionalResources" } + "/additional-resources": { page: "/AdditionalResources" }, }) const languages = ["es"] // add new language codes here const languagePaths = {} Object.entries(translatablePaths).forEach(([key, value]) => { languagePaths[key] = value - languages.forEach(language => { + languages.forEach((language) => { const query = Object.assign({}, value.query) query.language = language languagePaths[`/${language}${key.replace(/^\/$/, "")}`] = { ...value, - query: query + query: query, } }) }) @@ -91,9 +96,9 @@ module.exports = withCSS( // combine the map of all various types of page paths return Object.assign({}, languagePaths, { "/disclaimer": { page: "/disclaimer" }, - "/privacy": { page: "/privacy" } + "/privacy": { page: "/privacy" }, }) - } + }, }) ) ) diff --git a/apps/public-ala/package.json b/apps/public-ala/package.json index 67fe07bfbd..ce69bf1427 100644 --- a/apps/public-ala/package.json +++ b/apps/public-ala/package.json @@ -1,6 +1,6 @@ { "name": "@bloom-housing/public-ala", - "version": "0.0.2", + "version": "0.1.0", "description": "Public web app reference implementation for the Bloom affordable housing system", "main": "index.js", "license": "GPL-3.0", @@ -15,8 +15,8 @@ "dev:all": "concurrently \"yarn dev:listings\" \"yarn dev\"" }, "dependencies": { - "@bloom-housing/core": "^0.0.8", - "@bloom-housing/ui-components": "^0.0.8", + "@bloom-housing/core": "^0.1.0", + "@bloom-housing/ui-components": "^0.1.0", "@mdx-js/loader": "1.5.5", "@next/mdx": "9.2.0", "@zeit/next-css": "^1.0.1", @@ -24,24 +24,25 @@ "axios": "^0.19.2", "dotenv": "^8.2.0", "moment": "^2.24.0", - "nanoid": "^3.0.0", + "nanoid": "^3.1.7", "next": "9.2.0", "next-plugin-custom-babel-config": "^1.0.2", "node-polyglot": "^2.4.0", - "node-sass": "^4.12.0", + "node-sass": "^4.14.1", "react": "16.12.0", "react-dom": "16.12.0", + "react-hook-form": "^5.2.0", "react-inlinesvg": "^1.2.0" }, "devDependencies": { - "@types/node": "^12.12.31", + "@types/node": "^12.12.39", "@types/react": "^16.9.19", - "concurrently": "^5.1.0", - "cypress": "^4.2.0", + "concurrently": "^5.2.0", + "cypress": "^4.5.0", "js-levenshtein": "^1.1.6", "next-transpile-modules": "^3.0.1", "sass-loader": "^8.0.2", "typescript": "^3.8.3", - "webpack": "^4.42.1" + "webpack": "^4.43.0" } } diff --git a/apps/public-ala/page_content/locale_overrides/es.json b/apps/public-ala/page_content/locale_overrides/es.json index f8b89f11d5..90e27dcb0b 100644 --- a/apps/public-ala/page_content/locale_overrides/es.json +++ b/apps/public-ala/page_content/locale_overrides/es.json @@ -5,4 +5,4 @@ "pageDescription": { "additionalResources": "Lo alentamos a buscar otros recursos de vivienda asequible." } -} \ No newline at end of file +} diff --git a/apps/public-ala/pages/AdditionalResources.tsx b/apps/public-ala/pages/AdditionalResources.tsx index a67844a931..5edab6fe35 100644 --- a/apps/public-ala/pages/AdditionalResources.tsx +++ b/apps/public-ala/pages/AdditionalResources.tsx @@ -9,12 +9,12 @@ export default () => { const pageTitle = t("pageTitle.additionalResources") const subTitle = t("pageDescription.additionalResources") - const LinedH4 = props =>

- const serifEm = props => + const LinedH4 = (props) =>

+ const serifEm = (props) => const components = { h4: LinedH4, - em: serifEm + em: serifEm, } return ( diff --git a/apps/public-ala/pages/HousingCounselors.tsx b/apps/public-ala/pages/HousingCounselors.tsx index 4db0d66ca6..f4a7d8cc43 100644 --- a/apps/public-ala/pages/HousingCounselors.tsx +++ b/apps/public-ala/pages/HousingCounselors.tsx @@ -32,7 +32,7 @@ export default class extends Component { {t("pageTitle.housingCounselors")} - {this.props.counselors.map(c => { + {this.props.counselors.map((c) => { return (
diff --git a/apps/public-ala/pages/_app.jsx b/apps/public-ala/pages/_app.jsx index 9f5f90e8ba..abed12b3ff 100644 --- a/apps/public-ala/pages/_app.jsx +++ b/apps/public-ala/pages/_app.jsx @@ -22,8 +22,8 @@ class MyApp extends App { es: spanishTranslations, custom: { general: await import("../page_content/locale_overrides/general.json"), - es: await import("../page_content/locale_overrides/es.json") - } + es: await import("../page_content/locale_overrides/es.json"), + }, } return { pageProps, translations } } diff --git a/apps/public-ala/pages/listing.tsx b/apps/public-ala/pages/listing.tsx index 1fc6a0f8db..b44795731d 100644 --- a/apps/public-ala/pages/listing.tsx +++ b/apps/public-ala/pages/listing.tsx @@ -27,7 +27,7 @@ import { getOccupancyDescription, groupNonReservedAndReservedSummaries, occupancyTable, - t + t, } from "@bloom-housing/ui-components" import Layout from "../layouts/application" @@ -42,7 +42,7 @@ export default class extends Component { try { const response = await axios.get(process.env.listingServiceUrl) - listing = response.data.listings.find(l => l.id == listingId) + listing = response.data.listings.find((l) => l.id == listingId) } catch (error) { console.log(error) } @@ -63,11 +63,11 @@ export default class extends Component { unitType: t("t.unitType"), minimumIncome: t("t.minimumIncome"), rent: t("t.rent"), - availability: t("t.availability") + availability: t("t.availability"), } const amiValues = listing.unitsSummarized.amiPercentages - .map(percent => { + .map((percent) => { const percentInt = parseInt(percent, 10) return percentInt }) @@ -86,14 +86,14 @@ export default class extends Component { const occupancyDescription = getOccupancyDescription(listing) const occupancyHeaders = { unitType: t("t.unitType"), - occupancy: t("t.occupancy") + occupancy: t("t.occupancy"), } const occupancyData = occupancyTable(listing) const pageTitle = `${listing.name} - ${t("nav.siteTitle")}` const metaDescription = t("pageDescription.listing", { regionName: t("region.name"), - listingName: listing.name + listingName: listing.name, }) const metaImage = listing.imageUrl @@ -152,8 +152,8 @@ export default class extends Component {
{amiValues.length > 1 && - amiValues.map(percent => { - const byAMI = listing.unitsSummarized.byAMI.find(item => { + amiValues.map((percent) => { + const byAMI = listing.unitsSummarized.byAMI.find((item) => { return parseInt(item.percent, 10) == percent }) diff --git a/apps/public-ala/pages/listings.tsx b/apps/public-ala/pages/listings.tsx index 3a917a7a2b..3d5f237b84 100644 --- a/apps/public-ala/pages/listings.tsx +++ b/apps/public-ala/pages/listings.tsx @@ -8,7 +8,7 @@ import { MetaTags, PageHeader, openDateState, - t + t, } from "@bloom-housing/ui-components" import { Listing } from "@bloom-housing/core" import Layout from "../layouts/application" diff --git a/apps/public-ala/pages/redirect.tsx b/apps/public-ala/pages/redirect.tsx new file mode 100644 index 0000000000..53d5ebdc89 --- /dev/null +++ b/apps/public-ala/pages/redirect.tsx @@ -0,0 +1,18 @@ +import React from "react" +import { NextPage } from "next" +import Head from "next/head" + +interface RedirectProps { + to: string +} + +const Redirect: NextPage = ({ to }) => ( + + + +) + +/* eslint-disable @typescript-eslint/unbound-method */ +Redirect.getInitialProps = ({ query: { to } }) => Promise.resolve({ to: to as string }) + +export default Redirect diff --git a/apps/public-ala/postcss.config.js b/apps/public-ala/postcss.config.js index 135d68c543..cdd6a5a62c 100644 --- a/apps/public-ala/postcss.config.js +++ b/apps/public-ala/postcss.config.js @@ -1,5 +1,5 @@ /*eslint-env node*/ module.exports = { - plugins: [require("tailwindcss"), require("autoprefixer")] + plugins: [require("tailwindcss"), require("autoprefixer")], } diff --git a/apps/public-reference/.env.template b/apps/public-reference/.env.template index d9c0bd3083..52c3d270ba 100644 --- a/apps/public-reference/.env.template +++ b/apps/public-reference/.env.template @@ -2,4 +2,7 @@ LISTING_SERVICE_URL=http://localhost:3001 HOUSING_COUNSELOR_SERVICE_URL=https://housing.sfgov.org/assets/housing_counselors-7b0f260dac22dfa20871edd36135b62f1a25a9dad78faf2cf8e8e2514b80cf61.json NEXTJS_PORT=3000 -MAPBOX_TOKEN=pk.eyJ1IjoibWplZHJhcyIsImEiOiJjazI2OHA5YzQycTBpM29xdDVwbXNyMDlwIn0.XS5ilGzTh_yVl3XY-8UKeA \ No newline at end of file +MAPBOX_TOKEN=pk.eyJ1IjoibWplZHJhcyIsImEiOiJjazI2OHA5YzQycTBpM29xdDVwbXNyMDlwIn0.XS5ilGzTh_yVl3XY-8UKeA + +# this GTM key is for local development only +GTM_KEY=GTM-KF22FJP diff --git a/apps/public-reference/CHANGELOG.md b/apps/public-reference/CHANGELOG.md new file mode 100644 index 0000000000..836c698e71 --- /dev/null +++ b/apps/public-reference/CHANGELOG.md @@ -0,0 +1,11 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.9](https://github.com/bloom-housing/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) + + +### Reverts + +* Revert "Getting layout component ready for Google Analytics" ([7ca55ec](https://github.com/bloom-housing/bloom/commit/7ca55ec94c1f377a8e40645f9cc61780b7c1cefa)) diff --git a/apps/public-reference/cypress.json b/apps/public-reference/cypress.json index 0967ef424b..83ef78b41d 100644 --- a/apps/public-reference/cypress.json +++ b/apps/public-reference/cypress.json @@ -1 +1,6 @@ -{} +{ + "baseUrl": "http://localhost:3000", + "defaultCommandTimeout": 10000, + "projectId": "bloom-public-reference" +} + diff --git a/apps/public-reference/cypress/integration/navigation.ts b/apps/public-reference/cypress/integration/navigation.ts index 15edd3d64d..d985c73ed5 100644 --- a/apps/public-reference/cypress/integration/navigation.ts +++ b/apps/public-reference/cypress/integration/navigation.ts @@ -1,48 +1,57 @@ -describe("Navigating around the site", function() { - it("Loads the homepage directly", function() { - cy.visit("http://localhost:3000") +describe("Navigating around the site", () => { + it("Loads the homepage directly", () => { + cy.visit("/") // Check that the homepage banner text is present on the page cy.contains("Apply for affordable housing") }) - it("Loads the listings page directly", function() { - cy.visit("http://localhost:3000/listings") + it("Loads the listings page directly", () => { + cy.visit("/listings") // Check that the listings page banner text is present on the page cy.contains("Rent affordable housing") }) - it("Loads a listing page directly", function() { - cy.visit("http://localhost:3000/listing/Uvbk5qurpB2WI9V6WnNdH") + it("Loads a listing page directly by id", () => { + cy.visit("/listing/Uvbk5qurpB2WI9V6WnNdH") // Check that the listing page sidebar apply section text is present on the page cy.contains("Get a Paper Application") + + // Check that the URL got re-written with a URL slug + cy.location("pathname").should( + "eq", + "/listing/Uvbk5qurpB2WI9V6WnNdH/archer_studios_98_archer_street_san_jose_ca" + ) }) - it("Loads a non-listing-related page directly", function() { - cy.visit("http://localhost:3000/disclaimer") + it("Loads a listing page directly with a full url", () => { + cy.visit("/listing/Uvbk5qurpB2WI9V6WnNdH/archer_studios_98_archer_street_san_jose_ca") + + // Check that the listing page sidebar apply section text is present on the page + cy.contains("Get a Paper Application") + }) + + it("Loads a non-listing-related page directly", () => { + cy.visit("/disclaimer") // Check that the Disclaimer page banner text is present on the page cy.contains("Endorsement Disclaimers") }) - it("Can navigate to all page types after initial site load", function() { - cy.visit("http://localhost:3000") + it("Can navigate to all page types after initial site load", () => { + cy.visit("/") // Click on the Disclaimer page link in the footer - cy.get("footer a") - .contains("Disclaimer") - .click() + cy.get("footer a").contains("Disclaimer").click() // Should be on the disclaimer page cy.location("pathname").should("equal", "/disclaimer") cy.contains("Endorsement Disclaimers") // Click on the listings page link in the header nav - cy.get(".navbar") - .contains("Listings") - .click() + cy.get(".navbar").contains("Listings").click() // Should be on the listings page cy.location("pathname").should("equal", "/listings") @@ -52,9 +61,7 @@ describe("Navigating around the site", function() { cy.get("article") .first() .within(() => { - cy.get("a") - .last() - .click() + cy.get("a").last().click() }) // Should be on the listing page @@ -69,7 +76,7 @@ describe("Navigating around the site", function() { }) // Check that the homepage banner text is present on the page - cy.url().should("eq", "http://localhost:3000/") + cy.url().should("eq", `${Cypress.config("baseUrl")}/`) cy.contains("Apply for affordable housing") }) }) diff --git a/apps/public-reference/cypress/integration/pages/HousingCounselors.ts b/apps/public-reference/cypress/integration/pages/HousingCounselors.ts index 93d41ff026..371bfb7623 100644 --- a/apps/public-reference/cypress/integration/pages/HousingCounselors.ts +++ b/apps/public-reference/cypress/integration/pages/HousingCounselors.ts @@ -1,10 +1,15 @@ -describe("Housing counselors page", function() { - it("renders the provided list of counselors", function() { - cy.visit("http://localhost:3000/housing-counselors") +describe("Housing counselors page", () => { + it("renders the provided list of counselors", () => { + cy.visit("/housing-counselors") cy.contains("Housing Counselors") cy.get("article").should("have.length.of.at.least", 1) - cy.get("article") - .first() - .contains("Language Services: ") + + cy.get("article").then((val) => { + if (val.attr("data-counselor")) { + cy.get("article").contains("Language Services: ") + } else { + cy.get("article").contains("None found") + } + }) }) }) diff --git a/apps/public-reference/cypress/integration/pages/applications_new.ts b/apps/public-reference/cypress/integration/pages/applications_new.ts new file mode 100644 index 0000000000..a29b097d58 --- /dev/null +++ b/apps/public-reference/cypress/integration/pages/applications_new.ts @@ -0,0 +1,31 @@ +describe("New applications page", function () { + it("renders the new application form", function () { + cy.visit("/applications/new") + cy.contains("New Application") + cy.get("form").should("have.length.of.at.least", 1) + cy.get("form").contains("First Name") + }) + + it("validates form fields", function () { + cy.visit("/applications/new") + + // Click on the Disclaimer page link in the footer + cy.get("form input[name=firstname]").type("First Name") + + cy.get("form button").last().click() + + cy.get("form").contains("Please enter a Last Name") + + cy.get("form").should("not.contain", "Please enter a First Name") + }) + + it("goes to step 2", function () { + cy.visit("/applications/new") + cy.get("form input[name=firstname]").type("First Name") + cy.get("form input[name=lastname]").type("Last Name") + cy.get("form input[name=age]").type(42) + cy.get("form#applications-new button").last().click() + + cy.get("form#applications-step2").contains("State") + }) +}) diff --git a/apps/public-reference/layouts/application.tsx b/apps/public-reference/layouts/application.tsx index 92ebaec045..6a0f43f2a7 100644 --- a/apps/public-reference/layouts/application.tsx +++ b/apps/public-reference/layouts/application.tsx @@ -7,11 +7,11 @@ import { SiteFooter, FooterNav, FooterSection, - ExygyFooter + ExygyFooter, } from "@bloom-housing/ui-components" import SVG from "react-inlinesvg" -const Layout = props => ( +const Layout = (props) => (
{t("nav.siteTitle")} diff --git a/apps/public-reference/layouts/forms.tsx b/apps/public-reference/layouts/forms.tsx new file mode 100644 index 0000000000..fe1a7d1d29 --- /dev/null +++ b/apps/public-reference/layouts/forms.tsx @@ -0,0 +1,11 @@ +import Layout from "./application" + +export default (props) => { + return ( + +
+
{props.children}
+
+
+ ) +} diff --git a/apps/public-reference/lib/AppSubmissionContext.ts b/apps/public-reference/lib/AppSubmissionContext.ts new file mode 100644 index 0000000000..cb041b8221 --- /dev/null +++ b/apps/public-reference/lib/AppSubmissionContext.ts @@ -0,0 +1,25 @@ +import React from "react" + +export const blankApplication = () => { + return { + loaded: false, + completedStep: 0, + name: "", + age: null, + liveInSF: null, + housingStatus: "", + address: { + street: "", + street2: "", + city: "", + state: "", + zipcode: "", + }, + } +} + +export const AppSubmissionContext = React.createContext({ + application: blankApplication(), + /* eslint-disable */ + syncApplication: data => {} +}) diff --git a/apps/public-reference/lib/ApplicationConductor.ts b/apps/public-reference/lib/ApplicationConductor.ts new file mode 100644 index 0000000000..999b5b9956 --- /dev/null +++ b/apps/public-reference/lib/ApplicationConductor.ts @@ -0,0 +1,48 @@ +import { blankApplication } from "../lib/AppSubmissionContext" + +export const loadApplicationFromAutosave = () => { + if (typeof window != "undefined") { + const autosavedApplication = window.localStorage.getItem("bloom-app-autosave") + if (autosavedApplication) { + const application = JSON.parse(autosavedApplication) + application.loaded = true + return application + } + } + + return null +} + +export default class ApplicationConductor { + application = {} as Record + context = null + + constructor(application, context) { + this.application = application + this.context = context + } + + totalNumberOfSteps() { + return 2 + } + + advanceToNextStep() { + this.application.completedStep += 1 + } + + sync() { + setTimeout(() => { + if (typeof window != "undefined") { + window.localStorage.setItem("bloom-app-autosave", JSON.stringify(this.application)) + } + }, 800) + } + + reset() { + this.application = blankApplication() + this.context.syncApplication(this.application) + if (typeof window != "undefined") { + window.localStorage.removeItem("bloom-app-autosave") + } + } +} diff --git a/apps/public-reference/netlify.toml b/apps/public-reference/netlify.toml index 3f794a9cb7..124cd6067e 100644 --- a/apps/public-reference/netlify.toml +++ b/apps/public-reference/netlify.toml @@ -2,4 +2,11 @@ NODE_VERSION = "12.16.1" YARN_VERSION = "1.22.4" -NEXT_TELEMETRY_DISABLED = "1" \ No newline at end of file +NEXT_TELEMETRY_DISABLED = "1" +LISTING_SERVICE_URL = "https://listings.bloom.exygy.dev/" + +[context.production.environment] +GTM_KEY = "GTM-W8LH9F9" + +[context.branch-deploy.environment] +GTM_KEY = "GTM-KF22FJP" diff --git a/apps/public-reference/next.config.js b/apps/public-reference/next.config.js index df2961b2e5..b8ced89b44 100644 --- a/apps/public-reference/next.config.js +++ b/apps/public-reference/next.config.js @@ -39,10 +39,10 @@ module.exports = withCSS( listingServiceUrl: LISTING_SERVICE_URL, mapBoxToken: MAPBOX_TOKEN, housingCounselorServiceUrl: HOUSING_COUNSELOR_SERVICE_URL, - gtmKey: process.env.GTM_KEY || null + gtmKey: process.env.GTM_KEY || null, }, sassLoaderOptions: { - prependData: tailwindVars + prependData: tailwindVars, }, // exportPathMap adapted from https://github.com/zeit/next.js/blob/canary/examples/with-static-export/next.config.js async exportPathMap() { @@ -59,10 +59,15 @@ module.exports = withCSS( const listingPaths = listings.reduce( (listingPaths, listing) => Object.assign({}, listingPaths, { - [`/listing/${listing.id}`]: { + [`/listing/${listing.id}/${listing.urlSlug}`]: { page: "/listing", - query: { id: listing.id } - } + query: { id: listing.id }, + }, + // Create a redirect so that the base ID redirects to the ID with URL slug + [`/listing/${listing.id}`]: { + page: "/redirect", + query: { to: `/listing/${listing.id}/${listing.urlSlug}` }, + }, }), {} ) @@ -71,18 +76,18 @@ module.exports = withCSS( const translatablePaths = Object.assign({}, listingPaths, { "/": { page: "/" }, "/listings": { page: "/listings" }, - "/housing-counselors": { page: "/HousingCounselors" } + "/housing-counselors": { page: "/HousingCounselors" }, }) const languages = ["es"] // add new language codes here const languagePaths = {} Object.entries(translatablePaths).forEach(([key, value]) => { languagePaths[key] = value - languages.forEach(language => { + languages.forEach((language) => { const query = Object.assign({}, value.query) query.language = language languagePaths[`/${language}${key.replace(/^\/$/, "")}`] = { ...value, - query: query + query: query, } }) }) @@ -90,9 +95,12 @@ module.exports = withCSS( // combine the map of all various types of page paths return Object.assign({}, languagePaths, { "/disclaimer": { page: "/disclaimer" }, - "/privacy": { page: "/privacy" } + "/privacy": { page: "/privacy" }, + "/applications/new": { page: "/applications/new" }, + "/applications/step2": { page: "/applications/step2" }, + "/applications/complete": { page: "/applications/complete" }, }) - } + }, }) ) ) diff --git a/apps/public-reference/package.json b/apps/public-reference/package.json index 490cfc55d5..1a09f7a01b 100644 --- a/apps/public-reference/package.json +++ b/apps/public-reference/package.json @@ -1,6 +1,6 @@ { "name": "@bloom-housing/public-reference", - "version": "0.0.8", + "version": "0.1.0", "description": "Public web app reference implementation for the Bloom affordable housing system", "main": "index.js", "license": "GPL-3.0", @@ -15,32 +15,33 @@ "dev:all": "concurrently \"yarn dev:listings\" \"yarn dev\"" }, "dependencies": { - "@bloom-housing/core": "^0.0.8", - "@bloom-housing/ui-components": "^0.0.8", + "@bloom-housing/core": "^0.1.0", + "@bloom-housing/ui-components": "^0.1.0", "@mdx-js/loader": "1.5.5", "@next/mdx": "9.2.0", "@zeit/next-sass": "^1.0.1", "axios": "^0.19.2", "dotenv": "^8.2.0", "moment": "^2.24.0", - "nanoid": "^3.0.0", + "nanoid": "^3.1.7", "next": "9.2.0", "next-plugin-custom-babel-config": "^1.0.2", "node-polyglot": "^2.4.0", - "node-sass": "^4.12.0", + "node-sass": "^4.14.1", "react": "16.12.0", "react-dom": "16.12.0", + "react-hook-form": "^5.2.0", "react-inlinesvg": "^1.2.0" }, "devDependencies": { - "@types/node": "^12.12.31", + "@types/node": "^12.12.39", "@types/react": "^16.9.19", - "concurrently": "^5.1.0", - "cypress": "^4.2.0", + "concurrently": "^5.2.0", + "cypress": "^4.5.0", "js-levenshtein": "^1.1.6", "next-transpile-modules": "^3.0.1", "sass-loader": "^8.0.2", "typescript": "^3.8.3", - "webpack": "^4.42.1" + "webpack": "^4.43.0" } } diff --git a/apps/public-reference/page_content/applications/complete.mdx b/apps/public-reference/page_content/applications/complete.mdx new file mode 100644 index 0000000000..b1ced583b8 --- /dev/null +++ b/apps/public-reference/page_content/applications/complete.mdx @@ -0,0 +1,5 @@ +## Thank you for your submission! + +--- + +We'll be in touch. diff --git a/apps/public-reference/page_content/applications/new.mdx b/apps/public-reference/page_content/applications/new.mdx new file mode 100644 index 0000000000..b262b67852 --- /dev/null +++ b/apps/public-reference/page_content/applications/new.mdx @@ -0,0 +1,5 @@ +## Here's the New Application page. + +--- + +And here's some Markdown **content** to introduce the _form_. diff --git a/apps/public-reference/page_content/applications/step2.mdx b/apps/public-reference/page_content/applications/step2.mdx new file mode 100644 index 0000000000..bc8fe5e938 --- /dev/null +++ b/apps/public-reference/page_content/applications/step2.mdx @@ -0,0 +1,3 @@ +## What's Your Address? + +--- diff --git a/apps/public-reference/pages/HousingCounselors.tsx b/apps/public-reference/pages/HousingCounselors.tsx index 4db0d66ca6..69bf8ff30a 100644 --- a/apps/public-reference/pages/HousingCounselors.tsx +++ b/apps/public-reference/pages/HousingCounselors.tsx @@ -32,13 +32,22 @@ export default class extends Component { {t("pageTitle.housingCounselors")} - {this.props.counselors.map(c => { + {this.props.counselors.map((c) => { return ( -
+
) })} + {this.props.counselors.length == 0 && ( +
+

None found.

+
+ )} ) } diff --git a/apps/public-reference/pages/_app.jsx b/apps/public-reference/pages/_app.jsx index 76ad9bbde8..a71c41c0b6 100644 --- a/apps/public-reference/pages/_app.jsx +++ b/apps/public-reference/pages/_app.jsx @@ -4,8 +4,23 @@ import Router from "next/router" import "@bloom-housing/ui-components/styles/index.scss" import { addTranslation } from "@bloom-housing/ui-components" import { headScript, bodyTopTag, pageChangeHandler } from "../src/customScripts" +import { AppSubmissionContext, blankApplication } from "../lib/AppSubmissionContext" +import { loadApplicationFromAutosave } from "../lib/ApplicationConductor" class MyApp extends App { + constructor(props) { + super(props) + + // Load autosaved listing application, if any + const autosavedApplication = loadApplicationFromAutosave() + this.state = { application: autosavedApplication || blankApplication() } + } + + // This gets passed along through the context + syncApplication = (data) => { + this.setState({ application: data }) + } + static async getInitialProps({ Component, ctx }) { let pageProps = {} // you can add custom props that pass down to all pages here @@ -22,10 +37,10 @@ class MyApp extends App { general: generalTranslations, es: spanishTranslations, custom: { - general: await import("../page_content/locale_overrides/general.json") + general: await import("../page_content/locale_overrides/general.json"), // Uncomment to add additional language overrides // es: await import("../page_content/locale_overrides/es.json") - } + }, } return { pageProps, translations } } @@ -72,7 +87,16 @@ class MyApp extends App { } } - return + return ( + + + + ) } } diff --git a/apps/public-reference/pages/applications/complete.tsx b/apps/public-reference/pages/applications/complete.tsx new file mode 100644 index 0000000000..194921f6fd --- /dev/null +++ b/apps/public-reference/pages/applications/complete.tsx @@ -0,0 +1,75 @@ +import Router from "next/router" +import { Button, onClientSide, MultistepProgress } from "@bloom-housing/ui-components" +import FormsLayout from "../../layouts/forms" +import PageContent from "../../page_content/applications/complete.mdx" +import { AppSubmissionContext } from "../../lib/AppSubmissionContext" +import ApplicationConductor from "../../lib/ApplicationConductor" +import { useContext } from "react" + +export default () => { + const context = useContext(AppSubmissionContext) + const { application } = context + const conductor = new ApplicationConductor(application, context) + const currentPageStep = 3 // The End + + const cardClasses = ["p-10", "bg-white", "mb-10", "border", "border-gray-450", "rounded-lg"].join( + " " + ) + + return ( + +
+
+ 55 TRITON PARK LANE UNITS 510 516 APPLICATION +
+ + +
+ +
+
+ +
+ +
+
+

Submission:

+
+ Name: {context.application.name || "n/a"} +
+ Age: {context.application.age || "n/a"} +
+ Live/Work in SF? {context.application.liveInSF ? "yes" : "no"} +
+ Housing Status: {context.application.housingStatus || "n/a"} +
+ Address: {context.application.address.street || "n/a"} +
+ Address 2: {context.application.address.street2 || "n/a"} +
+ City: {context.application.address.city || "n/a"} +
+ State: {context.application.address.state || "n/a"} +
+ Zipcode: {context.application.address.zipcode || "n/a"} +
+
+ +
+ +
+
+
+ ) +} diff --git a/apps/public-reference/pages/applications/new.tsx b/apps/public-reference/pages/applications/new.tsx new file mode 100644 index 0000000000..4f5a9bd7b6 --- /dev/null +++ b/apps/public-reference/pages/applications/new.tsx @@ -0,0 +1,131 @@ +import Router from "next/router" +import { Button, Field, MultistepProgress } from "@bloom-housing/ui-components" +import FormsLayout from "../../layouts/forms" +import PageContent from "../../page_content/applications/new.mdx" +import { useForm } from "react-hook-form" +import { AppSubmissionContext } from "../../lib/AppSubmissionContext" +import ApplicationConductor from "../../lib/ApplicationConductor" +import Step1 from "../../src/forms/applications/step1" +import { useContext } from "react" + +export default () => { + const context = useContext(AppSubmissionContext) + const { application } = context + const conductor = new ApplicationConductor(application, context) + const currentPageStep = 1 + + /* Form Handler */ + const { register, handleSubmit, errors } = useForm() + const onSubmit = (data) => { + console.log(data) + + const submission = new Step1(conductor) + submission.save(data) + + Router.push("/applications/step2").then(() => window.scrollTo(0, 0)) + } + + const cardClasses = ["p-10", "bg-white", "mb-10", "border", "border-gray-450", "rounded-lg"].join( + " " + ) + + return ( + +
+
+ 55 TRITON PARK LANE UNITS 510 516 APPLICATION +
+ + +
+ +
+
+ +
+ +
+
+ + + +
+ + + +
+ + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+ ) +} diff --git a/apps/public-reference/pages/applications/step2.tsx b/apps/public-reference/pages/applications/step2.tsx new file mode 100644 index 0000000000..33013a03a1 --- /dev/null +++ b/apps/public-reference/pages/applications/step2.tsx @@ -0,0 +1,147 @@ +import Router from "next/router" +import { Button, ErrorMessage, MultistepProgress } from "@bloom-housing/ui-components" +import FormsLayout from "../../layouts/forms" +import PageContent from "../../page_content/applications/step2.mdx" +import { useForm } from "react-hook-form" +import { AppSubmissionContext } from "../../lib/AppSubmissionContext" +import ApplicationConductor from "../../lib/ApplicationConductor" +import Step2 from "../../src/forms/applications/step2" +import { useContext } from "react" + +export default () => { + const context = useContext(AppSubmissionContext) + const { application } = context + const conductor = new ApplicationConductor(application, context) + const currentPageStep = 2 + + /* Form Handler */ + const { register, handleSubmit, errors } = useForm() + const onSubmit = (data) => { + console.log(data) + + const submission = new Step2(conductor) + submission.save(data) + + Router.push("/applications/complete").then(() => window.scrollTo(0, 0)) + } + + const cardClasses = ["p-10", "bg-white", "mb-10", "border", "border-gray-450", "rounded-lg"].join( + " " + ) + + return ( + +
+
+ 55 TRITON PARK LANE UNITS 510 516 APPLICATION +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+ Please choose your State +
+ +
+
+ +
+ +
+ Please enter your Street Address +
+ +
+ +
+ +
+
+
+ +
+
+ +
+ +
+ Please enter your City +
+ +
+ +
+ +
+ Please enter your Zipcode +
+
+ +
+ +
+
+
+
+ ) +} diff --git a/apps/public-reference/pages/listing.tsx b/apps/public-reference/pages/listing.tsx index 1fc6a0f8db..314d8d9b99 100644 --- a/apps/public-reference/pages/listing.tsx +++ b/apps/public-reference/pages/listing.tsx @@ -9,6 +9,7 @@ import { ApplicationStatus, BasicTable, Description, + ExpandableText, GroupedTable, GroupedTableGroup, Headers, @@ -27,7 +28,7 @@ import { getOccupancyDescription, groupNonReservedAndReservedSummaries, occupancyTable, - t + t, } from "@bloom-housing/ui-components" import Layout from "../layouts/application" @@ -42,7 +43,7 @@ export default class extends Component { try { const response = await axios.get(process.env.listingServiceUrl) - listing = response.data.listings.find(l => l.id == listingId) + listing = response.data.listings.find((l) => l.id == listingId) } catch (error) { console.log(error) } @@ -63,11 +64,11 @@ export default class extends Component { unitType: t("t.unitType"), minimumIncome: t("t.minimumIncome"), rent: t("t.rent"), - availability: t("t.availability") + availability: t("t.availability"), } const amiValues = listing.unitsSummarized.amiPercentages - .map(percent => { + .map((percent) => { const percentInt = parseInt(percent, 10) return percentInt }) @@ -86,14 +87,14 @@ export default class extends Component { const occupancyDescription = getOccupancyDescription(listing) const occupancyHeaders = { unitType: t("t.unitType"), - occupancy: t("t.occupancy") + occupancy: t("t.occupancy"), } const occupancyData = occupancyTable(listing) const pageTitle = `${listing.name} - ${t("nav.siteTitle")}` const metaDescription = t("pageDescription.listing", { regionName: t("region.name"), - listingName: listing.name + listingName: listing.name, }) const metaImage = listing.imageUrl @@ -146,14 +147,14 @@ export default class extends Component {
-
+
{amiValues.length > 1 && - amiValues.map(percent => { - const byAMI = listing.unitsSummarized.byAMI.find(item => { + amiValues.map((percent) => { + const byAMI = listing.unitsSummarized.byAMI.find((item) => { return parseInt(item.percent, 10) == percent }) @@ -221,13 +222,19 @@ export default class extends Component { > <> -

{listing.creditHistory}

+ + {listing.creditHistory} +
-

{listing.rentalHistory}

+ + {listing.rentalHistory} +
-

{listing.criminalBackground}

+ + {listing.criminalBackground} +
{buildingSelectionCriteria} diff --git a/apps/public-reference/pages/listings.tsx b/apps/public-reference/pages/listings.tsx index 3a917a7a2b..3d5f237b84 100644 --- a/apps/public-reference/pages/listings.tsx +++ b/apps/public-reference/pages/listings.tsx @@ -8,7 +8,7 @@ import { MetaTags, PageHeader, openDateState, - t + t, } from "@bloom-housing/ui-components" import { Listing } from "@bloom-housing/core" import Layout from "../layouts/application" diff --git a/apps/public-reference/pages/redirect.tsx b/apps/public-reference/pages/redirect.tsx new file mode 100644 index 0000000000..53d5ebdc89 --- /dev/null +++ b/apps/public-reference/pages/redirect.tsx @@ -0,0 +1,18 @@ +import React from "react" +import { NextPage } from "next" +import Head from "next/head" + +interface RedirectProps { + to: string +} + +const Redirect: NextPage = ({ to }) => ( + + + +) + +/* eslint-disable @typescript-eslint/unbound-method */ +Redirect.getInitialProps = ({ query: { to } }) => Promise.resolve({ to: to as string }) + +export default Redirect diff --git a/apps/public-reference/postcss.config.js b/apps/public-reference/postcss.config.js index 135d68c543..cdd6a5a62c 100644 --- a/apps/public-reference/postcss.config.js +++ b/apps/public-reference/postcss.config.js @@ -1,5 +1,5 @@ /*eslint-env node*/ module.exports = { - plugins: [require("tailwindcss"), require("autoprefixer")] + plugins: [require("tailwindcss"), require("autoprefixer")], } diff --git a/apps/public-reference/public/images/arrow-down.png b/apps/public-reference/public/images/arrow-down.png new file mode 100644 index 0000000000..02b605ee91 Binary files /dev/null and b/apps/public-reference/public/images/arrow-down.png differ diff --git a/apps/public-reference/public/images/arrow-down.svg b/apps/public-reference/public/images/arrow-down.svg new file mode 100644 index 0000000000..dfc0949b02 --- /dev/null +++ b/apps/public-reference/public/images/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/public-reference/public/images/check.png b/apps/public-reference/public/images/check.png new file mode 100755 index 0000000000..8f1fb0e871 Binary files /dev/null and b/apps/public-reference/public/images/check.png differ diff --git a/apps/public-reference/public/images/check.svg b/apps/public-reference/public/images/check.svg new file mode 100644 index 0000000000..442c604ecb --- /dev/null +++ b/apps/public-reference/public/images/check.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/apps/public-reference/src/forms/applications/step1.ts b/apps/public-reference/src/forms/applications/step1.ts new file mode 100644 index 0000000000..b2f29a5cef --- /dev/null +++ b/apps/public-reference/src/forms/applications/step1.ts @@ -0,0 +1,26 @@ +import ApplicationConductor from "../../../lib/ApplicationConductor" + +export default class { + conductor = null as ApplicationConductor + application = {} as Record + + constructor(conductor) { + this.conductor = conductor + this.application = conductor.application + } + + save(formData) { + // Pull in all the form values that match application fields + for (const [key, value] of Object.entries(formData)) { + if (typeof this.application[key] != "undefined") { + this.application[key] = value + } + } + + // Custom data transformations + this.application.name = `${formData.firstname} ${formData.lastname}` + + this.conductor.advanceToNextStep() + this.conductor.sync() + } +} diff --git a/apps/public-reference/src/forms/applications/step2.ts b/apps/public-reference/src/forms/applications/step2.ts new file mode 100644 index 0000000000..ac23ab3952 --- /dev/null +++ b/apps/public-reference/src/forms/applications/step2.ts @@ -0,0 +1,17 @@ +import ApplicationConductor from "../../../lib/ApplicationConductor" + +export default class { + conductor = null as ApplicationConductor + application = {} as Record + + constructor(conductor) { + this.conductor = conductor + this.application = conductor.application + } + + save(formData) { + this.application.address = formData + this.conductor.advanceToNextStep() + this.conductor.sync() + } +} diff --git a/apps/public-sj/components/WelcomeHeader.scss b/apps/public-sj/components/WelcomeHeader.scss index aa6d239296..8c2f955a48 100644 --- a/apps/public-sj/components/WelcomeHeader.scss +++ b/apps/public-sj/components/WelcomeHeader.scss @@ -7,7 +7,7 @@ @apply max-w-5xl; @apply m-auto; @apply text-right; - + li { @apply mr-6; @apply inline-block; @@ -18,4 +18,4 @@ @apply font-semibold; } } -} \ No newline at end of file +} diff --git a/apps/public-sj/components/WelcomeHeader.tsx b/apps/public-sj/components/WelcomeHeader.tsx index c49e108892..49aeee7b7d 100644 --- a/apps/public-sj/components/WelcomeHeader.tsx +++ b/apps/public-sj/components/WelcomeHeader.tsx @@ -3,7 +3,7 @@ import * as React from "react" import "./WelcomeHeader.scss" import { LocalizedLink } from "@bloom-housing/ui-components" -const WelcomeHeader = props => ( +const WelcomeHeader = (props) => (
  • diff --git a/apps/public-sj/cypress/integration/navigation.ts b/apps/public-sj/cypress/integration/navigation.ts index 15edd3d64d..1226ac962d 100644 --- a/apps/public-sj/cypress/integration/navigation.ts +++ b/apps/public-sj/cypress/integration/navigation.ts @@ -1,48 +1,44 @@ -describe("Navigating around the site", function() { - it("Loads the homepage directly", function() { +describe("Navigating around the site", function () { + it("Loads the homepage directly", function () { cy.visit("http://localhost:3000") // Check that the homepage banner text is present on the page cy.contains("Apply for affordable housing") }) - it("Loads the listings page directly", function() { + it("Loads the listings page directly", function () { cy.visit("http://localhost:3000/listings") // Check that the listings page banner text is present on the page cy.contains("Rent affordable housing") }) - it("Loads a listing page directly", function() { + it("Loads a listing page directly", function () { cy.visit("http://localhost:3000/listing/Uvbk5qurpB2WI9V6WnNdH") // Check that the listing page sidebar apply section text is present on the page cy.contains("Get a Paper Application") }) - it("Loads a non-listing-related page directly", function() { + it("Loads a non-listing-related page directly", function () { cy.visit("http://localhost:3000/disclaimer") // Check that the Disclaimer page banner text is present on the page cy.contains("Endorsement Disclaimers") }) - it("Can navigate to all page types after initial site load", function() { + it("Can navigate to all page types after initial site load", function () { cy.visit("http://localhost:3000") // Click on the Disclaimer page link in the footer - cy.get("footer a") - .contains("Disclaimer") - .click() + cy.get("footer a").contains("Disclaimer").click() // Should be on the disclaimer page cy.location("pathname").should("equal", "/disclaimer") cy.contains("Endorsement Disclaimers") // Click on the listings page link in the header nav - cy.get(".navbar") - .contains("Listings") - .click() + cy.get(".navbar").contains("Listings").click() // Should be on the listings page cy.location("pathname").should("equal", "/listings") @@ -52,9 +48,7 @@ describe("Navigating around the site", function() { cy.get("article") .first() .within(() => { - cy.get("a") - .last() - .click() + cy.get("a").last().click() }) // Should be on the listing page diff --git a/apps/public-sj/cypress/integration/pages/HousingCounselors.ts b/apps/public-sj/cypress/integration/pages/HousingCounselors.ts index 93d41ff026..1c3f982967 100644 --- a/apps/public-sj/cypress/integration/pages/HousingCounselors.ts +++ b/apps/public-sj/cypress/integration/pages/HousingCounselors.ts @@ -1,10 +1,8 @@ -describe("Housing counselors page", function() { - it("renders the provided list of counselors", function() { +describe("Housing counselors page", function () { + it("renders the provided list of counselors", function () { cy.visit("http://localhost:3000/housing-counselors") cy.contains("Housing Counselors") cy.get("article").should("have.length.of.at.least", 1) - cy.get("article") - .first() - .contains("Language Services: ") + cy.get("article").first().contains("Language Services: ") }) }) diff --git a/apps/public-sj/layouts/application.tsx b/apps/public-sj/layouts/application.tsx index cfdae59ef0..41725ac364 100644 --- a/apps/public-sj/layouts/application.tsx +++ b/apps/public-sj/layouts/application.tsx @@ -9,7 +9,7 @@ import { LocalizedLink, SiteFooter, SiteHeader, - t + t, } from "@bloom-housing/ui-components" const notice = ( @@ -18,7 +18,7 @@ const notice = ( ) -const Layout = props => ( +const Layout = (props) => (
    {t("nav.siteTitle")} diff --git a/apps/public-sj/next.config.js b/apps/public-sj/next.config.js index e322012481..984061ebad 100644 --- a/apps/public-sj/next.config.js +++ b/apps/public-sj/next.config.js @@ -38,16 +38,16 @@ module.exports = withCSS( env: { listingServiceUrl: LISTING_SERVICE_URL, mapBoxToken: MAPBOX_TOKEN, - housingCounselorServiceUrl: HOUSING_COUNSELOR_SERVICE_URL + housingCounselorServiceUrl: HOUSING_COUNSELOR_SERVICE_URL, + gtmKey: process.env.GTM_KEY || null, }, sassLoaderOptions: { - prependData: tailwindVars + prependData: tailwindVars, }, // exportPathMap adapted from https://github.com/zeit/next.js/blob/canary/examples/with-static-export/next.config.js async exportPathMap() { // we fetch our list of listings, this allow us to dynamically generate the exported pages let listings = [] - try { const response = await axios.get(LISTING_SERVICE_URL) listings = response.data.listings @@ -59,10 +59,15 @@ module.exports = withCSS( const listingPaths = listings.reduce( (listingPaths, listing) => Object.assign({}, listingPaths, { - [`/listing/${listing.id}`]: { + [`/listing/${listing.id}/${listing.urlSlug}`]: { page: "/listing", - query: { id: listing.id } - } + query: { id: listing.id }, + }, + // Create a redirect so that the base ID redirects to the ID with URL slug + [`/listing/${listing.id}`]: { + page: "/redirect", + query: { to: `/listing/${listing.id}/${listing.urlSlug}` }, + }, }), {} ) @@ -71,18 +76,18 @@ module.exports = withCSS( const translatablePaths = Object.assign({}, listingPaths, { "/": { page: "/" }, "/listings": { page: "/listings" }, - "/housing-counselors": { page: "/HousingCounselors" } + "/housing-counselors": { page: "/HousingCounselors" }, }) const languages = ["es"] // add new language codes here const languagePaths = {} Object.entries(translatablePaths).forEach(([key, value]) => { languagePaths[key] = value - languages.forEach(language => { + languages.forEach((language) => { const query = Object.assign({}, value.query) query.language = language languagePaths[`/${language}${key.replace(/^\/$/, "")}`] = { ...value, - query: query + query: query, } }) }) @@ -93,9 +98,9 @@ module.exports = withCSS( "/privacy": { page: "/privacy" }, "/welcome": { page: "/welcome" }, "/welcome-es": { page: "/welcome-es" }, - "/welcome-vi": { page: "/welcome-vi" } + "/welcome-vi": { page: "/welcome-vi" }, }) - } + }, }) ) ) diff --git a/apps/public-sj/package.json b/apps/public-sj/package.json index 61c2fb8425..c4844ff5f3 100644 --- a/apps/public-sj/package.json +++ b/apps/public-sj/package.json @@ -1,6 +1,6 @@ { "name": "@housingbayarea/public-sj", - "version": "0.0.8", + "version": "0.1.0", "description": "Public web app for the City of San Jose using the Bloom affordable housing system", "main": "index.js", "license": "GPL-3.0", @@ -15,8 +15,8 @@ "dev:all": "concurrently \"yarn dev:listings\" \"yarn dev\"" }, "dependencies": { - "@bloom-housing/core": "^0.0.8", - "@bloom-housing/ui-components": "^0.0.8", + "@bloom-housing/core": "^0.1.0", + "@bloom-housing/ui-components": "^0.1.0", "@mdx-js/loader": "1.5.5", "@next/mdx": "9.2.0", "@zeit/next-css": "^1.0.1", @@ -24,24 +24,25 @@ "axios": "^0.19.2", "dotenv": "^8.2.0", "moment": "^2.24.0", - "nanoid": "^3.0.0", + "nanoid": "^3.1.7", "next": "9.2.0", "next-plugin-custom-babel-config": "^1.0.2", "node-polyglot": "^2.4.0", - "node-sass": "^4.12.0", + "node-sass": "^4.14.1", "react": "16.12.0", "react-dom": "16.12.0", + "react-hook-form": "^5.2.0", "react-inlinesvg": "^1.2.0" }, "devDependencies": { - "@types/node": "^12.12.31", + "@types/node": "^12.12.39", "@types/react": "^16.9.19", - "concurrently": "^5.1.0", - "cypress": "^4.2.0", + "concurrently": "^5.2.0", + "cypress": "^4.5.0", "js-levenshtein": "^1.1.6", "next-transpile-modules": "^3.0.1", "sass-loader": "^8.0.2", "typescript": "^3.8.3", - "webpack": "^4.42.1" + "webpack": "^4.43.0" } } diff --git a/apps/public-sj/pages/HousingCounselors.tsx b/apps/public-sj/pages/HousingCounselors.tsx index d121e6a979..08f4232613 100644 --- a/apps/public-sj/pages/HousingCounselors.tsx +++ b/apps/public-sj/pages/HousingCounselors.tsx @@ -33,7 +33,7 @@ export default class extends Component { {t("pageTitle.housingCounselors")} {this.props.counselors && - this.props.counselors.map(c => { + this.props.counselors.map((c) => { return (
    diff --git a/apps/public-sj/pages/_app.jsx b/apps/public-sj/pages/_app.jsx index f7c859e0fa..7ee4e1cc5f 100644 --- a/apps/public-sj/pages/_app.jsx +++ b/apps/public-sj/pages/_app.jsx @@ -21,10 +21,10 @@ class MyApp extends App { general: generalTranslations, es: spanishTranslations, custom: { - general: await import("../page_content/locale_overrides/general.json") + general: await import("../page_content/locale_overrides/general.json"), // Uncomment to add additional language overrides // es: await import("../page_content/locale_overrides/es.json") - } + }, } return { pageProps, translations } } diff --git a/apps/public-sj/pages/listing.tsx b/apps/public-sj/pages/listing.tsx index 228b0d9844..ef7d8cd108 100644 --- a/apps/public-sj/pages/listing.tsx +++ b/apps/public-sj/pages/listing.tsx @@ -27,7 +27,7 @@ import { getOccupancyDescription, groupNonReservedAndReservedSummaries, occupancyTable, - t + t, } from "@bloom-housing/ui-components" import Layout from "../layouts/application" @@ -42,7 +42,7 @@ export default class extends Component { try { const response = await axios.get(process.env.listingServiceUrl) - listing = response.data.listings.find(l => l.id == listingId) + listing = response.data.listings.find((l) => l.id == listingId) } catch (error) { console.log(error) } @@ -63,11 +63,11 @@ export default class extends Component { unitType: "Unit Type", minimumIncome: "Minimum Income", rent: "Rent", - availability: "Availability" + availability: "Availability", } const amiValues = listing.unitsSummarized.amiPercentages - .map(percent => { + .map((percent) => { const percentInt = parseInt(percent, 10) return percentInt }) @@ -86,14 +86,14 @@ export default class extends Component { const occupancyDescription = getOccupancyDescription(listing) const occupancyHeaders = { unitType: t("t.unitType"), - occupancy: t("t.occupancy") + occupancy: t("t.occupancy"), } const occupancyData = occupancyTable(listing) const pageTitle = `${listing.name} - ${t("nav.siteTitle")}` const metaDescription = t("pageDescription.listing", { regionName: t("region.name"), - listingName: listing.name + listingName: listing.name, }) const metaImage = listing.imageUrl @@ -151,8 +151,8 @@ export default class extends Component {
    {amiValues.length > 1 && - amiValues.map(percent => { - const byAMI = listing.unitsSummarized.byAMI.find(item => { + amiValues.map((percent) => { + const byAMI = listing.unitsSummarized.byAMI.find((item) => { return parseInt(item.percent, 10) == percent }) diff --git a/apps/public-sj/pages/listings.tsx b/apps/public-sj/pages/listings.tsx index 1fccf33a5e..705410c522 100644 --- a/apps/public-sj/pages/listings.tsx +++ b/apps/public-sj/pages/listings.tsx @@ -10,7 +10,7 @@ import { MetaTags, PageHeader, openDateState, - t + t, } from "@bloom-housing/ui-components" export interface ListingsProps { diff --git a/apps/public-sj/pages/redirect.tsx b/apps/public-sj/pages/redirect.tsx new file mode 100644 index 0000000000..53d5ebdc89 --- /dev/null +++ b/apps/public-sj/pages/redirect.tsx @@ -0,0 +1,18 @@ +import React from "react" +import { NextPage } from "next" +import Head from "next/head" + +interface RedirectProps { + to: string +} + +const Redirect: NextPage = ({ to }) => ( + + + +) + +/* eslint-disable @typescript-eslint/unbound-method */ +Redirect.getInitialProps = ({ query: { to } }) => Promise.resolve({ to: to as string }) + +export default Redirect diff --git a/apps/public-sj/postcss.config.js b/apps/public-sj/postcss.config.js index 135d68c543..cdd6a5a62c 100644 --- a/apps/public-sj/postcss.config.js +++ b/apps/public-sj/postcss.config.js @@ -1,5 +1,5 @@ /*eslint-env node*/ module.exports = { - plugins: [require("tailwindcss"), require("autoprefixer")] + plugins: [require("tailwindcss"), require("autoprefixer")], } diff --git a/apps/public-smc/cypress/integration/navigation.ts b/apps/public-smc/cypress/integration/navigation.ts index 15edd3d64d..1226ac962d 100644 --- a/apps/public-smc/cypress/integration/navigation.ts +++ b/apps/public-smc/cypress/integration/navigation.ts @@ -1,48 +1,44 @@ -describe("Navigating around the site", function() { - it("Loads the homepage directly", function() { +describe("Navigating around the site", function () { + it("Loads the homepage directly", function () { cy.visit("http://localhost:3000") // Check that the homepage banner text is present on the page cy.contains("Apply for affordable housing") }) - it("Loads the listings page directly", function() { + it("Loads the listings page directly", function () { cy.visit("http://localhost:3000/listings") // Check that the listings page banner text is present on the page cy.contains("Rent affordable housing") }) - it("Loads a listing page directly", function() { + it("Loads a listing page directly", function () { cy.visit("http://localhost:3000/listing/Uvbk5qurpB2WI9V6WnNdH") // Check that the listing page sidebar apply section text is present on the page cy.contains("Get a Paper Application") }) - it("Loads a non-listing-related page directly", function() { + it("Loads a non-listing-related page directly", function () { cy.visit("http://localhost:3000/disclaimer") // Check that the Disclaimer page banner text is present on the page cy.contains("Endorsement Disclaimers") }) - it("Can navigate to all page types after initial site load", function() { + it("Can navigate to all page types after initial site load", function () { cy.visit("http://localhost:3000") // Click on the Disclaimer page link in the footer - cy.get("footer a") - .contains("Disclaimer") - .click() + cy.get("footer a").contains("Disclaimer").click() // Should be on the disclaimer page cy.location("pathname").should("equal", "/disclaimer") cy.contains("Endorsement Disclaimers") // Click on the listings page link in the header nav - cy.get(".navbar") - .contains("Listings") - .click() + cy.get(".navbar").contains("Listings").click() // Should be on the listings page cy.location("pathname").should("equal", "/listings") @@ -52,9 +48,7 @@ describe("Navigating around the site", function() { cy.get("article") .first() .within(() => { - cy.get("a") - .last() - .click() + cy.get("a").last().click() }) // Should be on the listing page diff --git a/apps/public-smc/cypress/integration/pages/HousingCounselors.ts b/apps/public-smc/cypress/integration/pages/HousingCounselors.ts index 93d41ff026..1c3f982967 100644 --- a/apps/public-smc/cypress/integration/pages/HousingCounselors.ts +++ b/apps/public-smc/cypress/integration/pages/HousingCounselors.ts @@ -1,10 +1,8 @@ -describe("Housing counselors page", function() { - it("renders the provided list of counselors", function() { +describe("Housing counselors page", function () { + it("renders the provided list of counselors", function () { cy.visit("http://localhost:3000/housing-counselors") cy.contains("Housing Counselors") cy.get("article").should("have.length.of.at.least", 1) - cy.get("article") - .first() - .contains("Language Services: ") + cy.get("article").first().contains("Language Services: ") }) }) diff --git a/apps/public-smc/layouts/application.tsx b/apps/public-smc/layouts/application.tsx index 9b6bd91f96..35c8792f6c 100644 --- a/apps/public-smc/layouts/application.tsx +++ b/apps/public-smc/layouts/application.tsx @@ -8,11 +8,11 @@ import { LocalizedLink, SiteFooter, SiteHeader, - t + t, } from "@bloom-housing/ui-components" const notice = We love to get your feedback -const Layout = props => ( +const Layout = (props) => (
    {t("nav.siteTitle")} diff --git a/apps/public-smc/next.config.js b/apps/public-smc/next.config.js index 1774fdb580..7c1a7d18d4 100644 --- a/apps/public-smc/next.config.js +++ b/apps/public-smc/next.config.js @@ -38,10 +38,11 @@ module.exports = withCSS( env: { listingServiceUrl: LISTING_SERVICE_URL, mapBoxToken: MAPBOX_TOKEN, - housingCounselorServiceUrl: HOUSING_COUNSELOR_SERVICE_URL + housingCounselorServiceUrl: HOUSING_COUNSELOR_SERVICE_URL, + gtmKey: process.env.GTM_KEY || null, }, sassLoaderOptions: { - prependData: tailwindVars + prependData: tailwindVars, }, // exportPathMap adapted from https://github.com/zeit/next.js/blob/canary/examples/with-static-export/next.config.js async exportPathMap() { @@ -59,10 +60,15 @@ module.exports = withCSS( const listingPaths = listings.reduce( (listingPaths, listing) => Object.assign({}, listingPaths, { - [`/listing/${listing.id}`]: { + [`/listing/${listing.id}/${listing.urlSlug}`]: { page: "/listing", - query: { id: listing.id } - } + query: { id: listing.id }, + }, + // Create a redirect so that the base ID redirects to the ID with URL slug + [`/listing/${listing.id}`]: { + page: "/redirect", + query: { to: `/listing/${listing.id}/${listing.urlSlug}` }, + }, }), {} ) @@ -71,18 +77,18 @@ module.exports = withCSS( const translatablePaths = Object.assign({}, listingPaths, { "/": { page: "/" }, "/listings": { page: "/listings" }, - "/housing-counselors": { page: "/HousingCounselors" } + "/housing-counselors": { page: "/HousingCounselors" }, }) const languages = ["es"] // add new language codes here const languagePaths = {} Object.entries(translatablePaths).forEach(([key, value]) => { languagePaths[key] = value - languages.forEach(language => { + languages.forEach((language) => { const query = Object.assign({}, value.query) query.language = language languagePaths[`/${language}${key.replace(/^\/$/, "")}`] = { ...value, - query: query + query: query, } }) }) @@ -91,9 +97,9 @@ module.exports = withCSS( return Object.assign({}, languagePaths, { "/additional-resources": { page: "/AdditionalResources" }, "/disclaimer": { page: "/disclaimer" }, - "/privacy": { page: "/privacy" } + "/privacy": { page: "/privacy" }, }) - } + }, }) ) ) diff --git a/apps/public-smc/package.json b/apps/public-smc/package.json index 2e028245f8..280cdfd28c 100644 --- a/apps/public-smc/package.json +++ b/apps/public-smc/package.json @@ -1,6 +1,6 @@ { "name": "@housingbayarea/public-smc", - "version": "0.0.8", + "version": "0.1.0", "description": "Public web app for the County of San Mateo using the Bloom affordable housing system", "main": "index.js", "license": "GPL-3.0", @@ -15,8 +15,8 @@ "dev:all": "concurrently \"yarn dev:listings\" \"yarn dev\"" }, "dependencies": { - "@bloom-housing/core": "^0.0.8", - "@bloom-housing/ui-components": "^0.0.8", + "@bloom-housing/core": "^0.1.0", + "@bloom-housing/ui-components": "^0.1.0", "@mdx-js/loader": "1.5.5", "@next/mdx": "9.2.0", "@zeit/next-css": "^1.0.1", @@ -24,24 +24,25 @@ "axios": "^0.19.2", "dotenv": "^8.2.0", "moment": "^2.24.0", - "nanoid": "^3.0.0", + "nanoid": "^3.1.7", "next": "9.2.0", "next-plugin-custom-babel-config": "^1.0.2", "node-polyglot": "^2.4.0", - "node-sass": "^4.12.0", + "node-sass": "^4.14.1", "react": "16.12.0", "react-dom": "16.12.0", + "react-hook-form": "^5.2.0", "react-inlinesvg": "^1.2.0" }, "devDependencies": { - "@types/node": "^12.12.31", + "@types/node": "^12.12.39", "@types/react": "^16.9.19", - "concurrently": "^5.1.0", - "cypress": "^4.2.0", + "concurrently": "^5.2.0", + "cypress": "^4.5.0", "js-levenshtein": "^1.1.6", "next-transpile-modules": "^3.0.1", "sass-loader": "^8.0.2", "typescript": "^3.8.3", - "webpack": "^4.42.1" + "webpack": "^4.43.0" } } diff --git a/apps/public-smc/pages/AdditionalResources.scss b/apps/public-smc/pages/AdditionalResources.scss index 9fdc4409a5..bf3c30685a 100644 --- a/apps/public-smc/pages/AdditionalResources.scss +++ b/apps/public-smc/pages/AdditionalResources.scss @@ -1,12 +1,11 @@ .sidebar { - box-shadow: -3px 0px 3px -1px rgba(0,0,0,0.1); + box-shadow: -3px 0px 3px -1px rgba(0, 0, 0, 0.1); @apply w-full; @apply flex; @apply flex-col; @apply p-8; } - @screen md { .sidebar { @apply w-1/3; @@ -58,8 +57,8 @@ h3 { @apply mb-2; } - p{ + p { @apply text-sm; @apply text-gray-800; } -} \ No newline at end of file +} diff --git a/apps/public-smc/pages/AdditionalResources.tsx b/apps/public-smc/pages/AdditionalResources.tsx index d42bd80f0d..9d7102ff1e 100644 --- a/apps/public-smc/pages/AdditionalResources.tsx +++ b/apps/public-smc/pages/AdditionalResources.tsx @@ -2,7 +2,7 @@ import Layout from "../layouts/application" import { PageHeader } from "@bloom-housing/ui-components" import "./AdditionalResources.scss" -const Card = props => { +const Card = (props) => { return (

    diff --git a/apps/public-smc/pages/HousingCounselors.tsx b/apps/public-smc/pages/HousingCounselors.tsx index d7b55b8d45..3289d5e47f 100644 --- a/apps/public-smc/pages/HousingCounselors.tsx +++ b/apps/public-smc/pages/HousingCounselors.tsx @@ -32,7 +32,7 @@ export default class extends Component { {t("pageTitle.housingCounselors")} {this.props.counselors && - this.props.counselors.map(c => { + this.props.counselors.map((c) => { return (
    diff --git a/apps/public-smc/pages/_app.jsx b/apps/public-smc/pages/_app.jsx index e3bdfa5b68..2f29271be7 100644 --- a/apps/public-smc/pages/_app.jsx +++ b/apps/public-smc/pages/_app.jsx @@ -20,10 +20,10 @@ class MyApp extends App { general: generalTranslations, es: spanishTranslations, custom: { - general: await import("../page_content/locale_overrides/general.json") + general: await import("../page_content/locale_overrides/general.json"), // Uncomment to add additional language overrides // es: await import("../page_content/locale_overrides/es.json") - } + }, } return { pageProps, translations } } diff --git a/apps/public-smc/pages/listing.tsx b/apps/public-smc/pages/listing.tsx index 8a4b29a296..f1b543821c 100644 --- a/apps/public-smc/pages/listing.tsx +++ b/apps/public-smc/pages/listing.tsx @@ -27,7 +27,7 @@ import { getOccupancyDescription, groupNonReservedAndReservedSummaries, occupancyTable, - t + t, } from "@bloom-housing/ui-components" import Layout from "../layouts/application" interface ListingProps { @@ -41,7 +41,7 @@ export default class extends Component { try { const response = await axios.get(process.env.listingServiceUrl) - listing = response.data.listings.find(l => l.id == listingId) + listing = response.data.listings.find((l) => l.id == listingId) } catch (error) { console.log(error) } @@ -62,11 +62,11 @@ export default class extends Component { unitType: "Unit Type", minimumIncome: "Minimum Income", rent: "Rent", - availability: "Availability" + availability: "Availability", } const amiValues = listing.unitsSummarized.amiPercentages - .map(percent => { + .map((percent) => { const percentInt = parseInt(percent, 10) return percentInt }) @@ -85,14 +85,14 @@ export default class extends Component { const occupancyDescription = getOccupancyDescription(listing) const occupancyHeaders = { unitType: t("t.unitType"), - occupancy: t("t.occupancy") + occupancy: t("t.occupancy"), } const occupancyData = occupancyTable(listing) const pageTitle = `${listing.name} - ${t("nav.siteTitle")}` const metaDescription = t("pageDescription.listing", { regionName: t("region.name"), - listingName: listing.name + listingName: listing.name, }) const metaImage = listing.imageUrl @@ -149,8 +149,8 @@ export default class extends Component {
    {amiValues.length > 1 && - amiValues.map(percent => { - const byAMI = listing.unitsSummarized.byAMI.find(item => { + amiValues.map((percent) => { + const byAMI = listing.unitsSummarized.byAMI.find((item) => { return parseInt(item.percent, 10) == percent }) diff --git a/apps/public-smc/pages/listings.tsx b/apps/public-smc/pages/listings.tsx index 1fccf33a5e..705410c522 100644 --- a/apps/public-smc/pages/listings.tsx +++ b/apps/public-smc/pages/listings.tsx @@ -10,7 +10,7 @@ import { MetaTags, PageHeader, openDateState, - t + t, } from "@bloom-housing/ui-components" export interface ListingsProps { diff --git a/apps/public-smc/pages/redirect.tsx b/apps/public-smc/pages/redirect.tsx new file mode 100644 index 0000000000..53d5ebdc89 --- /dev/null +++ b/apps/public-smc/pages/redirect.tsx @@ -0,0 +1,18 @@ +import React from "react" +import { NextPage } from "next" +import Head from "next/head" + +interface RedirectProps { + to: string +} + +const Redirect: NextPage = ({ to }) => ( + + + +) + +/* eslint-disable @typescript-eslint/unbound-method */ +Redirect.getInitialProps = ({ query: { to } }) => Promise.resolve({ to: to as string }) + +export default Redirect diff --git a/apps/public-smc/postcss.config.js b/apps/public-smc/postcss.config.js index 135d68c543..cdd6a5a62c 100644 --- a/apps/public-smc/postcss.config.js +++ b/apps/public-smc/postcss.config.js @@ -1,5 +1,5 @@ /*eslint-env node*/ module.exports = { - plugins: [require("tailwindcss"), require("autoprefixer")] + plugins: [require("tailwindcss"), require("autoprefixer")], } diff --git a/docs/Analytics.md b/docs/Analytics.md new file mode 100644 index 0000000000..26b4e59b58 --- /dev/null +++ b/docs/Analytics.md @@ -0,0 +1,28 @@ +# Setting up User Analytics + +User Analytics within the Bloom reference apps is handled by Google Analytics (GA). In order to support additional analytics or tag integrations in the future, the default implementation is to use Google Tag Manager (GTM) from the reference code, which is then set up to call GA from within the GTM console. + +## GA and GTM Console Setup + +A basic setup can be accomplished by: + +1. Setting up a new Property in the GA console for each new app to be deployed + +2. Setting up a new matching Container in the GTM console + +3. Creating a GA tag in the new GTM container that is linked to the GA property with the correct GA tag + +4. Setting up triggers on the GA tag in GTM for both Page Views and History Changes. + * NOTE: without the History Change trigger set up, only some pages will be captured, since react / next.js do not do a full page load to trigger the GTM page view event in all cases. + +5. Setting up GTM and GA events for any external links that need to be tracked, e.g. the download of a PDF application or referral to an external website. + +## GTM Tag Setup in Environment Variables / Code + +Once all of the GTM and GA provisioning and configuration has been completed, the code-side changes should be as simple as setting the GTM_KEY environment variable to the key from the container created above. This should be set in .env for a local dev environment (see `.env.template`), or in netlify.toml for those apps being deployed via Netlify. + +See `apps/public-reference/src/customScripts.ts` for use of the GTM_KEY, noting that translation to gtmKey in process.env is automatic. + +## Netlify Analytics + +As a complement to Google Analytics, we also recommend enabling analytics on the Netlify platform for apps that are deployed there. In addition to providing a point of comparison / validation for the GA data, it also tracks things like 404s or other HTTP errors that may prevent GA from loading in the first place. \ No newline at end of file diff --git a/docs/DeployAppsNetlify.md b/docs/DeployAppsNetlify.md index 8c6e49d44b..28de5bbd4e 100644 --- a/docs/DeployAppsNetlify.md +++ b/docs/DeployAppsNetlify.md @@ -16,3 +16,5 @@ In addition to those environment variables defined in .env.template for the rele - NODE_VERSION - YARN_VERSION + +Note that there is a `netlify.toml` file in each reference app directory so that settings can be specified in a version controlled manner. If there are any environment variables that should not be publically accessible as part of the source, they can be set direcly in the Netlify console so long as they're not in the toml file. diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000000..03079826f8 --- /dev/null +++ b/lerna.json @@ -0,0 +1,10 @@ +{ + "packages": [ + "apps/public-reference", + "services/listings", + "shared/*" + ], + "version": "0.1.0", + "npmClient": "yarn", + "useWorkspaces": true +} diff --git a/package.json b/package.json index f4af0dbb09..102df0859f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bloom-housing", - "version": "0.0.8", + "version": "0.0.10", "description": "Bloom is a system to manage processes for affordable housing", "workspaces": [ "shared/core", @@ -16,40 +16,43 @@ "private": true, "scripts": { "dev:app:public": "export $(cat services/listings/.env | xargs) && wait-on \"http://localhost:${PORT:-3001}/\" && cd apps/public-reference && yarn dev", + "test:app:public": "export $(cat services/listings/.env | xargs) && wait-on \"http://localhost:${PORT:-3001}/\" && cd apps/public-reference && yarn test", + "dev:listings": "cd services/listings && yarn dev", "dev:app:ala": "export $(cat services/listings/.env | xargs) && wait-on \"http://localhost:${PORT:-3001}/\" && cd apps/public-ala && yarn dev", "dev:app:sj": "export $(cat services/listings/.env | xargs) && wait-on \"http://localhost:${PORT:-3001}/\" && cd apps/public-sj && yarn dev", "dev:app:smc": "export $(cat services/listings/.env | xargs) && wait-on \"http://localhost:${PORT:-3001}/\" && cd apps/public-smc && yarn dev", - "dev:listings": "cd services/listings && yarn dev", - "dev:all": "concurrently \"yarn dev:listings\" \"yarn dev:app:public\"", "dev:ala": "concurrently \"yarn dev:listings\" \"yarn dev:app:ala\"", "dev:sj": "concurrently \"yarn dev:listings\" \"yarn dev:app:sj\"", "dev:smc": "concurrently \"yarn dev:listings\" \"yarn dev:app:smc\"", - "test:app:public": "export $(cat services/listings/.env | xargs) && wait-on \"http://localhost:${PORT:-3001}/\" && cd apps/public-reference && yarn test", + "new-version": "lerna version --conventional-commits --yes", "test:shared:ui": "cd shared/ui-components && yarn test", "test:services:listings": "cd services/listings && yarn test", "test:apps": "concurrently \"yarn dev:listings\" \"yarn test:app:public\"", + "lint": "eslint '**/*.ts' '**/*.tsx' '**/*.js' --ignore-pattern 'node_modules' --ignore-pattern 'storybook-static/' --ignore-pattern '.next/' --ignore-pattern 'dist/'", "debug": "ts-node-dev --inspect --respawn --transpileOnly services/listings/src/index.ts" }, "devDependencies": { "@storybook/react": "^5.3.14", - "@types/jest": "^25.1.4", - "@typescript-eslint/eslint-plugin": "^2.25.0", - "@typescript-eslint/parser": "^2.25.0", - "concurrently": "^5.1.0", + "@types/jest": "^25.2.2", + "@typescript-eslint/eslint-plugin": "^2.31.0", + "@typescript-eslint/parser": "^2.31.0", + "concurrently": "^5.2.0", "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.1", - "eslint-plugin-prettier": "^3.1.2", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-react": "^7.19.0", - "husky": "^4.2.3", - "jest": "^25.2.3", - "lint-staged": "^10.0.9", - "prettier": "^1.19.1", + "husky": "^4.2.5", + "jest": "^25.5.4", + "lerna": "^3.21.0", + "lint-staged": "^10.2.2", + "prettier": "^2.0.5", "react": "16.12.0", "react-test-renderer": "16.12.0", "rimraf": "^3.0.2", - "ts-jest": "^25.2.1", + "ts-jest": "^25.5.1", "typescript": "^3.8.3", - "wait-on": "^4.0.1" + "wait-on": "^5.0.0" }, "prettier": { "singleQuote": false, diff --git a/services/listings/CHANGELOG.md b/services/listings/CHANGELOG.md new file mode 100644 index 0000000000..71052eb171 --- /dev/null +++ b/services/listings/CHANGELOG.md @@ -0,0 +1,8 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.9](https://github.com/bloom-housing/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) + +**Note:** Version bump only for package @bloom-housing/listings-service diff --git a/services/listings/__tests__/index.test.ts b/services/listings/__tests__/index.test.ts index 1a3fb0abd3..76d88cdae3 100644 --- a/services/listings/__tests__/index.test.ts +++ b/services/listings/__tests__/index.test.ts @@ -10,7 +10,7 @@ describe("GET /", () => { expect(req.body.listings.length).toEqual(allListings.length) }) - afterAll(async done => { + afterAll(async (done) => { application.close() await done() }) @@ -21,7 +21,7 @@ describe("JSONPath queries", () => { const query = "/?jsonpath=%24%5B%3F(%40.applicationAddress.city%3D%3D%22San+Jose%22)%5D" const req = await request(application).get(query) let sjListings = (await listingsLoader("listings")) as Listing[] - sjListings = sjListings.filter(item => { + sjListings = sjListings.filter((item) => { return item.applicationAddress.city == "San Jose" }) expect(req.body.listings.length).toEqual(sjListings.length) @@ -33,7 +33,7 @@ describe("JSONPath queries", () => { expect(req.body.listings.length).toEqual(0) }) - afterAll(async done => { + afterAll(async (done) => { application.close() await done() }) diff --git a/services/listings/__tests__/lib/unit_transformations.test.ts b/services/listings/__tests__/lib/unit_transformations.test.ts index 51b794bb60..dc2c6ca08b 100644 --- a/services/listings/__tests__/lib/unit_transformations.test.ts +++ b/services/listings/__tests__/lib/unit_transformations.test.ts @@ -9,16 +9,16 @@ describe("transformUnits", () => { test("returns non-reserved summaries", () => { const result = transformUnits(listing.units, amiCharts) expect(result.unitTypes.length).toEqual(2) - expect(result.byNonReservedUnitType[0].unitType).toEqual("threeBdrm") - expect(result.byNonReservedUnitType[0].occupancyRange).toEqual({ min: 5, max: 7 }) + expect(result.byNonReservedUnitType[0].unitType).toEqual("oneBdrm") + expect(result.byNonReservedUnitType[0].occupancyRange).toEqual({ min: 1, max: 2 }) }) test("returns summaries by AMI", () => { const result = transformUnits(listing.units, amiCharts) expect(result.amiPercentages.length).toEqual(1) expect(result.byAMI[0].percent).toEqual(result.amiPercentages[0]) - expect(result.byAMI[0].byNonReservedUnitType[1].unitType).toEqual("oneBdrm") - expect(result.byAMI[0].byNonReservedUnitType[1].occupancyRange).toEqual({ min: 1, max: 2 }) + expect(result.byAMI[0].byNonReservedUnitType[1].unitType).toEqual("threeBdrm") + expect(result.byAMI[0].byNonReservedUnitType[1].occupancyRange).toEqual({ min: 5, max: 7 }) }) /*test("creates units summary", () => { diff --git a/services/listings/__tests__/lib/url_helper.test.ts b/services/listings/__tests__/lib/url_helper.test.ts new file mode 100644 index 0000000000..3196c829a3 --- /dev/null +++ b/services/listings/__tests__/lib/url_helper.test.ts @@ -0,0 +1,28 @@ +import { formatUrlSlug, listingUrlSlug } from "../../src/lib/url_helper" +import { Listing } from "@bloom-housing/core" +import triton from "../../listings/triton.json" + +describe("formatUrlSlug", () => { + test("reformats strings properly", () => { + expect(formatUrlSlug("snake_case")).toEqual("snake_case") + expect(formatUrlSlug("SnakeCase")).toEqual("snake_case") + expect(formatUrlSlug("Mix of spaces_and-hyphens")).toEqual("mix_of_spaces_and_hyphens") + expect(formatUrlSlug("Lots@of&weird spaces&^&!@^*&AND OTHER_CHARS")).toEqual( + "lots_of_weird_spaces_and_other_chars" + ) + }) + + test("with an empty string", () => { + expect(formatUrlSlug("")).toEqual("") + }) +}) + +describe("listingUrlSlug", () => { + // Force cast to listing - should we add a dependency to `listingsLoader` instead? + const listing = (triton as unknown) as Listing + + test("Generates a URL slug for a Listing", () => { + const slug = listingUrlSlug(listing) + expect(slug).toEqual("the_triton_55_triton_park_lane_foster_city_ca") + }) +}) diff --git a/services/listings/heroku.setup.js b/services/listings/heroku.setup.js index 50e72370ad..87feec5888 100644 --- a/services/listings/heroku.setup.js +++ b/services/listings/heroku.setup.js @@ -13,11 +13,11 @@ function httpsPost({ body, ...options }) { const req = https.request( { method: "POST", - ...options + ...options, }, - res => { + (res) => { const chunks = [] - res.on("data", data => chunks.push(data)) + res.on("data", (data) => chunks.push(data)) res.on("end", () => { // resolve the promise resolve(Buffer.concat(chunks)) @@ -55,7 +55,7 @@ async function pingNetlify(buildHook, currentBranch) { await httpsPost({ hostname: "api.netlify.com", path: `/build_hooks/${buildHook}?trigger_branch=${currentBranch}&trigger_title=Heroku+Review+App+Trigger`, - body: determineHerokuListingServiceUrl() + body: determineHerokuListingServiceUrl(), }) console.log("Netlify ping completed.") diff --git a/services/listings/jest.config.js b/services/listings/jest.config.js index fb63d5ac5c..7656e4d9c2 100644 --- a/services/listings/jest.config.js +++ b/services/listings/jest.config.js @@ -169,11 +169,11 @@ module.exports = { // A map from regular expressions to paths to transformers transform: { - "^.+\\.ts?$": "babel-jest" + "^.+\\.ts?$": "babel-jest", }, // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - transformIgnorePatterns: ["/node_modules/"] + transformIgnorePatterns: ["/node_modules/"], // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them // unmockedModulePathPatterns: undefined, diff --git a/services/listings/listings/gish.json b/services/listings/listings/gish.json new file mode 100644 index 0000000000..078ae53e52 --- /dev/null +++ b/services/listings/listings/gish.json @@ -0,0 +1,237 @@ +{ + "id": "sz0UrxnBdAxHMdfgcgha7", + "acceptingApplicationsAtLeasingAgent": true, + "acceptingApplicationsByPoBox": false, + "acceptingOnlineApplications": false, + "accessibility": "Accessibility features in common areas like lobby – wheelchair ramps, wheelchair accessible bathrooms and elevators.", + "amenities": "Community Room, Laundry", + "applicationAddress": { + "city": "San Jose", + "street": "35 East Gish Road", + "zipCode": "95112", + "state": "CA", + "latitude": 37.36219, + "longitude": -121.909447 + }, + "applicationDueDate": "2019-12-09T12:58:21.000-07:00", + "applicationOrganization": "35 East Gish Road", + "applicationPhone": "(408) 436-8972", + "blankPaperApplicationCanBePickedUp": false, + "buildingAddress": { + "city": "San Jose", + "street": "35 East Gish Road", + "zipCode": "95112", + "state": "CA", + "latitude": 37.36219, + "longitude": -121.909447 + }, + "buildingSelectionCriteria": null, + "costsNotIncluded": "Residents responsible for PG&E and Internet. Residents encourage to obtain renter’s insurance but this is not a requirement. Rent is due by the 5rd of each month. Late fee is $20.00. Owner pays for water, trash, and sewage. Resident to pay $25 for each returned check or rejected electronic payment.", + "creditHistory": "A credit reference and background check will be required for all household members age 18 or older. A poor credit history may be grounds to deem an applicant ineligible for housing. Applicants will have the option to explain mitigating circumstances and/or include supplemental information with their application to explain any issues such as foreclosure, bankruptcy and negative credit. Any of the following circumstances may be defined as Poor Credit History or grounds for denial: \n• Total unmet credit problems in excess of $3,000. \n• A bankruptcy (within the last three years).\n• A total of seven (7) unmet credit problems of any value.\n• An Unlawful Detainer and/or judgment against an applicant obtained by the current or any previous landlord.\n• An unmet obligation owed to previous landlord.\n• The applicant must have made timely payments of last year’s rental payments.", + "depositMax": "1500.0", + "depositMin": "800.0", + "developer": "First Community Housing", + "imageUrl": "https://regional-dahlia-staging.s3-us-west-1.amazonaws.com/listings/gish/gish.jpg", + "programRules": null, + "externalId": null, + "waitlistMaxSize": 150, + "name": "Gish Apartments", + "neighborhood": "San Jose", + "waitlistCurrentSize": 89, + "petPolicy": "No Pets Allowed", + "prioritiesDescriptor": null, + "requiredDocuments": "3 Months Paystubs or Award Letter for Social Security, 6 Months Bank Statements, 401K/ Retirement Statement dated with in 120 days.", + "reservedCommunityMaximumAge": null, + "reservedCommunityMinimumAge": null, + "reservedDescriptor": "Special needs / multi-family", + "smokingPolicy": "No Smoking Building", + "yearBuilt": 2009, + "createdAt": "2019-06-19T15:11:26.446-07:00", + "updatedAt": "2019-06-24T11:47:47.150-07:00", + "groupId": 1, + "hideUnitFeatures": false, + "unitAmenities": "Dishwasher", + "attachments": [ + { + "label": "English", + "fileUrl": "https://drive.google.com/file/d/0B4CsVae6UWpLRDJBUzlFbHBFa0t0WTJ6em5EdEwtU0VoMWs4/view?usp=sharing", + "type": 1 + } + ], + "applicationFee": "38.0", + "criminalBackground": "A check will be made of criminal conviction records for the past seven years for all adult Applicants of the household. Reports will be obtained from local and/or state records and may also include local Police records. If the Applicant has resided in a state other than California and has a past felony conviction, a report will be required from that state or federal organization. Generally, public records of this sort are only available for the past seven (7) years. However, if information becomes known during the screening process regarding criminal activity that happened before the past seven year period which could impact the Applicant household’s eligibility to live at the property, the Management Agent reserves the right to consider this information as well. . Serious felony offenses and/or continued and ongoing criminal activity will be grounds for rejection if such offenses involve physical violence to persons or property, domestic violence, sexual abuse, the manufacture or sale narcotics, possession of an illegal weapon, breaking and entering, burglary or drug related criminal offenses. The nature, severity and recency of such offenses and/or ongoing criminal activity will be considered when reviewing the Applicant and only those potentially impacting the health, safety, security or right to peaceful enjoyment of the property of and by other residents, visitors or employees will be considered. Additionally, applicants may be rejected due to: • A history of violence or abuse (physical or verbal), in which the applicant was determined to be the antagonist.\n• A household in which any member is currently engaged in illegal use of drugs or for which the owner has reasonable cause to believe that a member’s illegal use or pattern of use of a drug may interfere with the health, safety, security, or right to peaceful enjoyment of the property of and by other residents, visitors or employees.\n• Any household member, if there is reasonable cause to believe that a member’s behavior, from abuse or pattern of abuse of alcohol, may interfere with the health, safety, security or right to peaceful enjoyment of the property of and by other residents, visitors or employees.", + "leasingAgentAddress": { + "city": "San Jose", + "street": "35 East Gish Road", + "zipCode": "95112", + "state": "CA", + "latitude": 37.36219, + "longitude": -121.909447 + }, + "leasingAgentEmail": "gish@jsco.net", + "leasingAgentName": "Jonaye Wilbert", + "leasingAgentOfficeHours": "Monday-Friday, 9:00 am - 3:00 pm", + "leasingAgentPhone": "(408) 436-8972", + "leasingAgentTitle": "", + "rentalHistory": "The applicants’ landlord references must verify a history of responsible occupancy, behavior, and conduct. Current landlord references will be requested along with a third party unlawful detainer search. All previous landlords during the past three years will also be contacted. Landlord references will help to determine whether or not the applicant has a good rent paying history, whether or not there have been any disturbing behavior patterns including repeated lease violations, destruction of property, etc. Any documented behavior which would constitute a material violation of the standard lease to be used at this location may be considered grounds for ineligibility.", + "preferences": [ + { + "ordinal": "1st", + "title": "Certificate of Preference (COP)", + "subtitle": "Up to 56 units available", + "description": "For households in which at least one member holds a Certificate of Preference from the former San Francisco Redevelopment Agency. COP holders were displaced by Agency action generally during the 1960s and 1970s.", + "links": [ + { + "title": "Read More", + "url": "https://domain.com" + } + ] + }, + { + "ordinal": "2nd", + "title": "Displaced Tenant Housing Preference (DTHP)", + "subtitle": "Up to 3 units available", + "description": "For households in which at least one member holds a Displaced Tenant Housing Preference Certificate. DTHP Certificate holders are tenants who were evicted through either an Ellis Act Eviction or an Owner Move In Eviction, or have been displaced by a fire. Once all units reserved for this preference are filled, remaining DTHP holders will receive Live/Work preference, regardless of their current residence or work location.", + "links": [ + { + "title": "Read More", + "url": "https://domain.com" + }, + { + "title": "View Document Checklist", + "url": "https://domain.com/d" + } + ] + }, + { + "ordinal": "3rd", + "title": "Classroom teachers who are employees of the San Mateo Foster City School District and San Mateo County Community College District" + } + ], + "buildingTotalUnits": 5, + "disableUnitsAccordion": true, + "units": [ + { + "id": "MFaowAxySJW3utZBPNxrg", + "amiPercentage": "45.0", + "annualIncomeMin": "25628.0", + "monthlyIncomeMin": "2135.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "854.0", + "numBathrooms": null, + "numBedrooms": null, + "number": "205", + "priorityType": null, + "reservedType": null, + "sqFeet": 355, + "status": "occupied", + "unitType": "studio", + "createdAt": "2019-06-20T21:20:34.291Z", + "updatedAt": "2019-06-25T17:26:21.072Z", + "listingId": "sz0UrxnBdAxHMdfgcgha7", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null + }, + { + "id": "WLf6h7MeCnpB7EIE6EH_0", + "amiPercentage": "45.0", + "annualIncomeMin": "25628.0", + "monthlyIncomeMin": "2135.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "854.0", + "numBathrooms": null, + "numBedrooms": null, + "number": "206", + "priorityType": null, + "reservedType": "senior", + "sqFeet": 355, + "status": "occupied", + "unitType": "studio", + "createdAt": "2019-06-25T17:26:59.698Z", + "updatedAt": "2019-06-25T17:26:59.698Z", + "listingId": "sz0UrxnBdAxHMdfgcgha7", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null + }, + { + "id": "J-HE0G7kWkQECyk26LM4A", + "amiPercentage": "45.0", + "annualIncomeMin": "25628.0", + "monthlyIncomeMin": "2135.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "854.0", + "numBathrooms": null, + "numBedrooms": null, + "number": "303", + "priorityType": null, + "reservedType": null, + "sqFeet": 355, + "status": "occupied", + "unitType": "studio", + "createdAt": "2019-06-25T17:27:12.228Z", + "updatedAt": "2019-06-25T17:27:12.228Z", + "listingId": "sz0UrxnBdAxHMdfgcgha7", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null + }, + { + "id": "gEG3nmXEhyw33a32AV_s4", + "amiPercentage": "45.0", + "annualIncomeMin": "25628.0", + "monthlyIncomeMin": "2135.0", + "floor": 4, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "854.0", + "numBathrooms": null, + "numBedrooms": null, + "number": "403", + "priorityType": null, + "reservedType": "veteran", + "sqFeet": 355, + "status": "occupied", + "unitType": "studio", + "createdAt": "2019-06-25T17:27:23.985Z", + "updatedAt": "2019-06-25T17:27:23.985Z", + "listingId": "sz0UrxnBdAxHMdfgcgha7", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null + }, + { + "id": "0jYaOyFTpOI8PA9UvXJOe", + "amiPercentage": "45.0", + "annualIncomeMin": "25628.0", + "monthlyIncomeMin": "2135.0", + "floor": 4, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "854.0", + "numBathrooms": null, + "numBedrooms": null, + "number": "406", + "priorityType": null, + "reservedType": null, + "sqFeet": 355, + "status": "occupied", + "unitType": "studio", + "createdAt": "2019-06-25T17:27:38.397Z", + "updateAt": "2019-06-25T17:28:02.659Z", + "listingId": "sz0UrxnBdAxHMdfgcgha7", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null + } + ], + "totalUnits": 5, + "unitsAvailable": 0 +} diff --git a/services/listings/package.json b/services/listings/package.json index a4a90c125a..7e058fa01c 100644 --- a/services/listings/package.json +++ b/services/listings/package.json @@ -1,6 +1,6 @@ { "name": "@bloom-housing/listings-service", - "version": "0.0.8", + "version": "0.1.0", "description": "Listings service reference implementation for the Bloom affordable housing system", "main": "dist/index.js", "author": "Ben Kutler ", @@ -9,26 +9,26 @@ "devDependencies": { "@babel/core": "^7.8.3", "@babel/preset-typescript": "^7.8.3", - "@types/jest": "^25.1.4", + "@types/jest": "^25.2.2", "@types/jsonpath": "^0.2.0", - "@types/supertest": "^2.0.8", - "babel-jest": "^25.2.3", - "concurrently": "^5.1.0", - "jest": "^25.2.3", + "@types/supertest": "^2.0.9", + "babel-jest": "^25.5.1", + "concurrently": "^5.2.0", + "jest": "^25.5.4", "supertest": "^4.0.2", "ts-node-dev": "^1.0.0-pre.44" }, "dependencies": { - "@bloom-housing/core": "^0.0.8", + "@bloom-housing/core": "^0.1.0", "@koa/cors": "^3.0.0", - "@types/koa": "^2.11.0", + "@types/koa": "^2.11.3", "@types/koa-router": "^7.4.0", "@types/koa__cors": "^3.0.1", - "@types/node": "^12.12.31", + "@types/node": "^12.12.39", "dotenv": "^8.2.0", "jsonpath": "^1.0.2", "koa": "^2.11.0", - "nanoid": "^3.0.0", + "nanoid": "^3.1.7", "rimraf": "^3.0.2", "simple-git": "^1.132.0", "typescript": "^3.8.3" diff --git a/services/listings/src/index.ts b/services/listings/src/index.ts index c3617a18bc..5052931c15 100644 --- a/services/listings/src/index.ts +++ b/services/listings/src/index.ts @@ -5,12 +5,13 @@ import jp from "jsonpath" import { Listing } from "@bloom-housing/core" import listingsLoader from "./lib/listings_loader" import { transformUnits } from "./lib/unit_transformations" +import { listingUrlSlug } from "./lib/url_helper" import { amiCharts } from "./lib/ami_charts" dotenv.config({ path: ".env" }) const config = { - port: parseInt(process.env.PORT || "3001", 10) + port: parseInt(process.env.PORT || "3001", 10), } const app = new Application() @@ -18,7 +19,7 @@ const app = new Application() // TODO: app.use(logger(winston)); app.use(cors()) -app.use(async ctx => { +app.use(async (ctx) => { let listings = (await listingsLoader("listings")) as Listing[] if (ctx.request.query.jsonpath) { @@ -27,14 +28,15 @@ app.use(async ctx => { } // Transform all the listings - listings.forEach(listing => { + listings.forEach((listing) => { listing.unitsSummarized = transformUnits(listing.units, amiCharts) + listing.urlSlug = listingUrlSlug(listing) }) const data = { status: "ok", listings: listings, - amiCharts: amiCharts + amiCharts: amiCharts, } ctx.body = data diff --git a/services/listings/src/lib/ami_charts.ts b/services/listings/src/lib/ami_charts.ts index 4f61fcf170..a4d57ebdaf 100644 --- a/services/listings/src/lib/ami_charts.ts +++ b/services/listings/src/lib/ami_charts.ts @@ -11,5 +11,5 @@ export const amiCharts = { 3: sanMateoHERASpecial2019, 4: sanJoseTCAC2019, 5: AlamedaCountyTCAC2019, - 6: SanMateoCountyTCAC2019 + 6: SanMateoCountyTCAC2019, } diff --git a/services/listings/src/lib/unit_transformations.ts b/services/listings/src/lib/unit_transformations.ts index 36a4fad1c6..6cd3f3dff0 100644 --- a/services/listings/src/lib/unit_transformations.ts +++ b/services/listings/src/lib/unit_transformations.ts @@ -1,6 +1,12 @@ -import { Unit, UnitsSummarized, UnitSummary } from "@bloom-housing/core" -import { MinMax, MinMaxCurrency } from "@bloom-housing/core" -import { AmiChartItem } from "@bloom-housing/core" +import { + Unit, + UnitsSummarized, + UnitSummary, + MinMax, + MinMaxCurrency, + AmiChartItem, +} from "@bloom-housing/core" + type AnyDict = { [key: string]: any } type Units = Unit[] @@ -8,7 +14,7 @@ const usd = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", minimumFractionDigits: 0, - maximumFractionDigits: 0 + maximumFractionDigits: 0, }) const minMaxValue = (baseValue: MinMax, newValue: number, newMaxValue?: number): MinMax => { @@ -35,10 +41,10 @@ const hmiData = ( const amiChartId = units[0].amiChartId const amiChart = amiCharts[amiChartId] as AmiChartItem[] const hmiHeaders = { - householdSize: "Household Size" + householdSize: "Household Size", } as AnyDict const amiValues = amiPercentages - .map(percent => { + .map((percent) => { const percentInt = parseInt(percent, 10) return percentInt }) @@ -56,17 +62,17 @@ const hmiData = ( // 2. If there are multiple AMI levels, it shows each level (max income per // year) per household size. if (amiValues.length > 1) { - amiValues.forEach(percent => { + amiValues.forEach((percent) => { hmiHeaders["ami" + percent] = `${percent}% AMI Units` }) new Array(maxHousehold).fill(maxHousehold).forEach((item, i) => { const columns = { - householdSize: i + 1 + householdSize: i + 1, } let pushRow = false // row is valid if at least one column is filled - amiValues.forEach(percent => { - const amiInfo = amiChart.find(item => { + amiValues.forEach((percent) => { + const amiInfo = amiChart.find((item) => { return item.householdSize == columns.householdSize && item.percentOfAmi == percent }) if (amiInfo) { @@ -87,10 +93,10 @@ const hmiData = ( new Array(maxHousehold).fill(maxHousehold).forEach((item, i) => { const columns = { - householdSize: i + 1 + householdSize: i + 1, } - const amiInfo = amiChart.find(item => { + const amiInfo = amiChart.find((item) => { return item.householdSize == columns.householdSize && item.percentOfAmi == amiValues[0] }) @@ -137,7 +143,9 @@ const summarizeUnits = ( unit.monthlyRentAsPercentOfIncome ) summary.rentRange = minMaxValue(summary.rentRange as MinMax, unit.monthlyRent) - summary.floorRange = minMaxValue(summary.floorRange, unit.floor) + if (unit.floor) { + summary.floorRange = minMaxValue(summary.floorRange, unit.floor) + } summary.areaRange = minMaxValue(summary.areaRange, unit.sqFeet) if (unit.status == "available") { summary.totalAvailable += 1 @@ -157,7 +165,7 @@ const summarizeUnits = ( } ) - return summaries.filter(item => Object.keys(item).length > 0) + return summaries.filter((item) => Object.keys(item).length > 0) } const summarizeReservedTypes = (units: Units, reservedTypes: string[], unitTypes: string[]) => { @@ -166,10 +174,10 @@ const summarizeReservedTypes = (units: Units, reservedTypes: string[], unitTypes const unitsByReservedType = units.filter((unit: Unit) => unit.reservedType == reservedType) return { reservedType: reservedType, - byUnitType: summarizeUnits(unitsByReservedType, unitTypes) + byUnitType: summarizeUnits(unitsByReservedType, unitTypes), } }) - .filter(item => item.byUnitType.length > 0) + .filter((item) => item.byUnitType.length > 0) } const summarizeByAmi = ( @@ -186,7 +194,7 @@ const summarizeByAmi = ( return { percent: percent, byNonReservedUnitType: summarizeUnits(nonReservedUnitsByAmiPercentage, unitTypes), - byReservedType: summarizeReservedTypes(unitsByAmiPercentage, reservedTypes, unitTypes) + byReservedType: summarizeReservedTypes(unitsByAmiPercentage, reservedTypes, unitTypes), } }) } @@ -194,16 +202,16 @@ const summarizeByAmi = ( export const transformUnits = (units: Units, amiCharts: any): UnitsSummarized => { const data = {} as UnitsSummarized data.unitTypes = Array.from( - new Set(units.map(unit => unit.unitType).filter(item => item != null)) + new Set(units.map((unit) => unit.unitType).filter((item) => item != null)) ) data.reservedTypes = Array.from( - new Set(units.map(unit => unit.reservedType).filter(item => item != null)) + new Set(units.map((unit) => unit.reservedType).filter((item) => item != null)) ) data.priorityTypes = Array.from( - new Set(units.map(unit => unit.priorityType).filter(item => item != null)) + new Set(units.map((unit) => unit.priorityType).filter((item) => item != null)) ) data.amiPercentages = Array.from( - new Set(units.map(unit => unit.amiPercentage).filter(item => item != null)) + new Set(units.map((unit) => unit.amiPercentage).filter((item) => item != null)) ) const nonReservedUnits = units.filter((unit: Unit) => unit.reservedType == null) data.byUnitType = summarizeUnits(units, data.unitTypes) diff --git a/services/listings/src/lib/url_helper.ts b/services/listings/src/lib/url_helper.ts new file mode 100644 index 0000000000..6b3a0c0577 --- /dev/null +++ b/services/listings/src/lib/url_helper.ts @@ -0,0 +1,30 @@ +/** + * Formats the input string as a URL slug. + * This includes the following transformations: + * - All lowercase + * - Remove special characters + * - snake_case + * @param input + */ +import { Listing } from "@bloom-housing/core" + +export const formatUrlSlug = (input: string): string => { + return ( + ( + (input || "") + // Divide into words based on upper case letters followed by lower case letters + .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]+|[0-9]+/g) || [] + ) + + .join("_") + .toLowerCase() + ) +} + +export const listingUrlSlug = (listing: Listing): string => { + const { + name, + buildingAddress: { city, street, state }, + } = listing + return formatUrlSlug([name, street, city, state].join(" ")) +} diff --git a/shared/core/CHANGELOG.md b/shared/core/CHANGELOG.md new file mode 100644 index 0000000000..4771415e02 --- /dev/null +++ b/shared/core/CHANGELOG.md @@ -0,0 +1,8 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.9](https://github.com/bloom-housing/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) + +**Note:** Version bump only for package @bloom-housing/core diff --git a/shared/core/jest.config.js b/shared/core/jest.config.js index e5ce4e9705..74c28cd8d2 100644 --- a/shared/core/jest.config.js +++ b/shared/core/jest.config.js @@ -5,6 +5,6 @@ module.exports = { setupFiles: ["/.jest/setup-tests.js"], transform: { "^.+\\.[t|j]sx?$": "babel-jest" }, moduleNameMapper: { - "\\.(scss|css|less)$": "identity-obj-proxy" - } + "\\.(scss|css|less)$": "identity-obj-proxy", + }, } diff --git a/shared/core/package.json b/shared/core/package.json index f37bc5f5b7..2e85bc4805 100644 --- a/shared/core/package.json +++ b/shared/core/package.json @@ -1,6 +1,6 @@ { "name": "@bloom-housing/core", - "version": "0.0.8", + "version": "0.1.0", "description": "Shared types for Bloom affordable housing system", "homepage": "https://github.com/bloom-housing/bloom/tree/master/shared/core", "main": "index.js", @@ -11,17 +11,17 @@ }, "devDependencies": { "@babel/core": "^7.8.3", - "@types/jest": "^25.1.4", - "babel-jest": "^25.2.3", + "@types/jest": "^25.2.2", + "babel-jest": "^25.5.1", "babel-loader": "^8.1.0", - "jest": "^25.2.3", + "jest": "^25.5.4", "typescript": "^3.8.3", - "webpack": "^4.42.1" + "webpack": "^4.43.0" }, "dependencies": { - "@types/node": "^12.12.31", + "@types/node": "^12.12.39", "@types/node-polyglot": "^0.4.34", - "nanoid": "^3.0.0" + "nanoid": "^3.1.7" }, "babel": { "presets": [ diff --git a/shared/core/src/listings.ts b/shared/core/src/listings.ts index 7416b30793..e4f88df443 100644 --- a/shared/core/src/listings.ts +++ b/shared/core/src/listings.ts @@ -4,7 +4,7 @@ import { Preference } from "./preferences" export enum AttachmentType { ApplicationDownload = 1, - ExternalApplication = 2 + ExternalApplication = 2, } export interface Attachment { @@ -58,6 +58,7 @@ export interface Listing { unitsAvailable: number unitAmenities: string unitsSummarized?: UnitsSummarized + urlSlug?: string waitlistCurrentSize: number waitlistMaxSize: number yearBuilt: number diff --git a/shared/core/src/units.ts b/shared/core/src/units.ts index a91f04df5f..04605c6a7c 100644 --- a/shared/core/src/units.ts +++ b/shared/core/src/units.ts @@ -33,7 +33,7 @@ export interface UnitSummary { rentRange: MinMax | MinMaxCurrency totalAvailable: number areaRange: MinMax - floorRange: MinMax + floorRange?: MinMax } export interface UnitSummaryByReservedType { diff --git a/shared/ui-components/CHANGELOG.md b/shared/ui-components/CHANGELOG.md new file mode 100644 index 0000000000..26d17efea8 --- /dev/null +++ b/shared/ui-components/CHANGELOG.md @@ -0,0 +1,8 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.9](https://github.com/bloom-housing/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) + +**Note:** Version bump only for package @bloom-housing/ui-components diff --git a/shared/ui-components/__tests__/storyshots.test.tsx b/shared/ui-components/__tests__/storyshots.test.tsx index 408f8147ff..9362b5319a 100644 --- a/shared/ui-components/__tests__/storyshots.test.tsx +++ b/shared/ui-components/__tests__/storyshots.test.tsx @@ -11,6 +11,6 @@ initStoryshots({ renderer: mount, snapshotSerializers: [createSerializer()], test: multiSnapshotWithOptions({ - renderer: mount - }) + renderer: mount, + }), }) diff --git a/shared/ui-components/index.ts b/shared/ui-components/index.ts index 00de5a28dd..60913d3dbf 100644 --- a/shared/ui-components/index.ts +++ b/shared/ui-components/index.ts @@ -2,6 +2,7 @@ export * from "./src/atoms/ApplicationStatus" export * from "./src/atoms/Button" export * from "./src/atoms/Description" +export * from "./src/atoms/ExpandableText" export * from "./src/atoms/Icon" export * from "./src/atoms/LinkButton" export * from "./src/atoms/LocalizedLink" @@ -17,6 +18,11 @@ export * from "./src/footers/FooterNav/FooterNav" export * from "./src/footers/FooterSection/FooterSection" export * from "./src/footers/SiteFooter/SiteFooter" +/* Forms */ +export * from "./src/forms/ErrorMessage" +export * from "./src/forms/Field" +export * from "./src/forms/MultistepProgress" + /* Headers */ export * from "./src/headers/Hero/Hero" export * from "./src/headers/PageHeader/PageHeader" @@ -26,6 +32,7 @@ export * from "./src/headers/SiteHeader/SiteHeader" export * from "./src/helpers/address" export * from "./src/helpers/capitalize" export * from "./src/helpers/localeRoute" +export * from "./src/helpers/nextjs" export * from "./src/helpers/numberOrdinal" export * from "./src/helpers/occupancyFormatting" export * from "./src/helpers/state" diff --git a/shared/ui-components/jest.config.js b/shared/ui-components/jest.config.js index 396514a9f9..e14fc9a0c6 100644 --- a/shared/ui-components/jest.config.js +++ b/shared/ui-components/jest.config.js @@ -7,18 +7,18 @@ module.exports = { preset: "ts-jest", globals: { "ts-jest": { - tsConfig: "tsconfig.json" - } + tsConfig: "tsconfig.json", + }, }, rootDir: "../..", roots: ["/shared/ui-components"], transform: { "^.+\\.stories\\.[t|j]sx$": "@storybook/addon-storyshots/injectFileName", - "^.+\\.[t|j]sx?$": "ts-jest" + "^.+\\.[t|j]sx?$": "ts-jest", }, setupFilesAfterEnv: ["/shared/ui-components/.jest/setup-tests.js"], moduleNameMapper: { - "\\.(scss|css|less)$": "identity-obj-proxy" + "\\.(scss|css|less)$": "identity-obj-proxy", }, - testPathIgnorePatterns: ["storyshots.d.ts"] + testPathIgnorePatterns: ["storyshots.d.ts"], } diff --git a/shared/ui-components/package.json b/shared/ui-components/package.json index 5f55e2a819..f4f9c68955 100644 --- a/shared/ui-components/package.json +++ b/shared/ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@bloom-housing/ui-components", - "version": "0.0.8", + "version": "0.1.0", "description": "Shared user interface components for Bloom affordable housing system", "homepage": "https://github.com/bloom-housing/bloom/tree/master/shared/ui-components", "main": "index.js", @@ -24,10 +24,10 @@ "@storybook/theming": "^5.3.13", "@types/enzyme": "^3.10.5", "@types/enzyme-adapter-react-16": "^1.0.6", - "@types/jest": "^25.1.4", + "@types/jest": "^25.2.2", "@types/react-map-gl": "^5.0.4", "@types/react-test-renderer": "^16.9.2", - "@types/webpack": "^4.41.8", + "@types/webpack": "^4.41.12", "babel-loader": "^8.1.0", "babel-plugin-require-context-hook": "^1.0.0", "enzyme": "^3.11.0", @@ -35,10 +35,10 @@ "enzyme-to-json": "^3.4.4", "fork-ts-checker-webpack-plugin": "^4.0.4", "identity-obj-proxy": "^3.0.0", - "jest": "^25.2.3", + "jest": "^25.5.4", "mockdate": "^2.0.5", "next": "9.2.0 ", - "node-sass": "^4.13.1", + "node-sass": "^4.14.1", "postcss-loader": "^3.0.0", "react": "^16.12.0", "react-accessible-accordion": "^3.0.0", @@ -51,21 +51,21 @@ "regenerator-runtime": "^0.13.3", "sass-loader": "^8.0.2", "style-loader": "^1.1.3", - "ts-jest": "^25.2.1", - "ts-loader": "^6.2.2", + "ts-jest": "^25.5.1", + "ts-loader": "^7.0.4", "typescript": "^3.8.3", - "webpack": "^4.42.1" + "webpack": "^4.43.0" }, "dependencies": { - "@bloom-housing/core": "^0.0.8", - "@types/node": "^12.12.31", + "@bloom-housing/core": "^0.1.0", + "@types/node": "^12.12.39", "@types/node-polyglot": "^0.4.34", "@types/react-dom": "^16.9.5", "bulma": "^0.7.5", - "nanoid": "^3.0.0", + "nanoid": "^3.1.7", "react": "^16.12.0", "react-dom": "^16.12.0", "react-map-gl": "^5.2", - "tailwindcss": "^1.1.4" + "tailwindcss": "^1.3" } } diff --git a/shared/ui-components/public/images/arrow-down.png b/shared/ui-components/public/images/arrow-down.png new file mode 100644 index 0000000000..02b605ee91 Binary files /dev/null and b/shared/ui-components/public/images/arrow-down.png differ diff --git a/shared/ui-components/public/images/arrow-down.svg b/shared/ui-components/public/images/arrow-down.svg new file mode 100644 index 0000000000..dfc0949b02 --- /dev/null +++ b/shared/ui-components/public/images/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shared/ui-components/public/images/check.png b/shared/ui-components/public/images/check.png new file mode 100755 index 0000000000..8f1fb0e871 Binary files /dev/null and b/shared/ui-components/public/images/check.png differ diff --git a/shared/ui-components/public/images/check.svg b/shared/ui-components/public/images/check.svg new file mode 100644 index 0000000000..442c604ecb --- /dev/null +++ b/shared/ui-components/public/images/check.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/shared/ui-components/src/atoms/ApplicationStatus.stories.tsx b/shared/ui-components/src/atoms/ApplicationStatus.stories.tsx index edb6b43607..346e99b98b 100644 --- a/shared/ui-components/src/atoms/ApplicationStatus.stories.tsx +++ b/shared/ui-components/src/atoms/ApplicationStatus.stories.tsx @@ -17,48 +17,34 @@ export default { {storyFn()}
    - ) - ] + ), + ], } /* eslint-enable @typescript-eslint/ban-ts-ignore */ const listing = Object.assign({}, Archer) as any listing.applicationOpenDate = "" -listing.applicationDueDate = moment() - .add(10, "days") - .format() +listing.applicationDueDate = moment().add(10, "days").format() export const dueSoonAndVivid = () => const listingPast = Object.assign({}, Archer) as any listingPast.applicationOpenDate = "" -listingPast.applicationDueDate = moment() - .subtract(10, "days") - .format() +listingPast.applicationDueDate = moment().subtract(10, "days").format() export const pastDueAndVivid = () => export const pastDue = () => const listing2 = Object.assign({}, Archer) as any -listing2.applicationOpenDate = moment() - .add(5, "days") - .format() -listing2.applicationDueDate = moment() - .add(10, "days") - .format() +listing2.applicationOpenDate = moment().add(5, "days").format() +listing2.applicationDueDate = moment().add(10, "days").format() export const openSoon = () => const listing3 = Object.assign({}, Archer) as any -listing3.applicationOpenDate = moment() - .subtract(5, "days") - .format() -listing3.applicationDueDate = moment() - .add(10, "days") - .format() +listing3.applicationOpenDate = moment().subtract(5, "days").format() +listing3.applicationDueDate = moment().add(10, "days").format() export const openedAlready = () => const listing4 = Object.assign({}, Archer) as any -listing4.applicationOpenDate = moment() - .subtract(15, "days") - .format() +listing4.applicationOpenDate = moment().subtract(15, "days").format() listing4.applicationDueDate = "" export const openedWithNoDue = () => diff --git a/shared/ui-components/src/atoms/ApplicationStatus.tsx b/shared/ui-components/src/atoms/ApplicationStatus.tsx index 7e6dbb2725..2ef70169f8 100644 --- a/shared/ui-components/src/atoms/ApplicationStatus.tsx +++ b/shared/ui-components/src/atoms/ApplicationStatus.tsx @@ -28,7 +28,7 @@ const ApplicationStatus = (props: ApplicationStatusProps) => { if (!vivid && listing.applicationDueDate != "") { formattedDate = t("t.range", { from: openDate.format("MMMM D, YYYY"), - to: moment(listing.applicationDueDate).format("MMMM D, YYYY") + to: moment(listing.applicationDueDate).format("MMMM D, YYYY"), }) } else { formattedDate = openDate.format("MMMM D, YYYY") diff --git a/shared/ui-components/src/atoms/Button.scss b/shared/ui-components/src/atoms/Button.scss index 0616a256e4..472e8b9436 100644 --- a/shared/ui-components/src/atoms/Button.scss +++ b/shared/ui-components/src/atoms/Button.scss @@ -21,21 +21,39 @@ @apply text-white; } - &.filled { + &.filled, + &.primary { @apply bg-primary-dark; @apply text-white; + &:hover { @apply bg-primary-darker; } } &.small { - @apply text-sm; - @apply px-4; - @apply py-2; + @apply text-xs; + @apply px-6; + @apply py-3; } &.normal-case { @apply normal-case; } + + &.button-link { + @apply normal-case; + @apply border-0; + @apply p-0; + @apply font-sans; + @apply tracking-normal; + @apply font-normal; + @apply underline; + @apply m-4; + + &:hover { + @apply text-primary; + background: transparent; + } + } } diff --git a/shared/ui-components/src/atoms/Button.stories.tsx b/shared/ui-components/src/atoms/Button.stories.tsx index 09b62b068a..5ba2fc3523 100644 --- a/shared/ui-components/src/atoms/Button.stories.tsx +++ b/shared/ui-components/src/atoms/Button.stories.tsx @@ -4,7 +4,7 @@ import Button from "./Button" export default { title: "Atoms|Button", - decorators: [withA11y] + decorators: [withA11y], } const handleClick = (e: React.MouseEvent) => { diff --git a/shared/ui-components/src/atoms/ExpandableText.scss b/shared/ui-components/src/atoms/ExpandableText.scss new file mode 100644 index 0000000000..530d624ddb --- /dev/null +++ b/shared/ui-components/src/atoms/ExpandableText.scss @@ -0,0 +1,7 @@ +.btn-link { + @apply text-primary; + @apply cursor-pointer; + overflow-wrap: break-word; + word-wrap: break-word; + word-break: break-word; +} \ No newline at end of file diff --git a/shared/ui-components/src/atoms/ExpandableText.stories.tsx b/shared/ui-components/src/atoms/ExpandableText.stories.tsx new file mode 100644 index 0000000000..9c82d5b7c5 --- /dev/null +++ b/shared/ui-components/src/atoms/ExpandableText.stories.tsx @@ -0,0 +1,21 @@ +import * as React from "react" +import { withA11y } from "@storybook/addon-a11y" +import ExpandableText from "./ExpandableText" + +export default { + title: "Atoms|ExpandableText", + decorators: [withA11y], +} + +const longText = + "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been \ + the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley \ + of type and scrambled it to make a type specimen book. It has survived not only five centuries, \ + but also the leap into electronic typesetting, remaining essentially unchanged. It was \ + popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, \ + and more recently with desktop publishing software like Aldus PageMaker including versions of \ + Lorem Ipsum." + +export const standard = () => {longText} +export const expanded = () => {longText} +export const noExpansion = () => Short text diff --git a/shared/ui-components/src/atoms/ExpandableText.tsx b/shared/ui-components/src/atoms/ExpandableText.tsx new file mode 100644 index 0000000000..05a9371071 --- /dev/null +++ b/shared/ui-components/src/atoms/ExpandableText.tsx @@ -0,0 +1,53 @@ +import React, { useState } from "react" +import t from "../helpers/translator" +import "./ExpandableText.scss" + +export interface ExpandableTextProps { + children: string + expand?: boolean + maxLength?: number + className?: string +} + +const getText = (text: string, expanded: boolean, maxLength: number) => { + if (expanded || text.length <= maxLength) { + return text + } + + let position = maxLength + while (text[position] != " " && position > 0) { + position -= 1 + } + return position > 0 ? text.substring(0, position) : text.substring(0, maxLength) +} + +const moreLessButton = (expanded: boolean, setExpanded: Function) => { + return ( + <> + {expanded ? " " : " ... "} + setExpanded(!expanded)}> + {expanded ? t("label.less") : t("label.more")} + + + ) +} + +const ExpandableText = (props: ExpandableTextProps) => { + const [expanded, setExpanded] = useState(props.expand || false) + const maxLength = props.maxLength || 350 + let button + + if (props.children.length > maxLength) { + button = moreLessButton(expanded, setExpanded) + } + return ( + <> +

    + {getText(props.children, expanded, maxLength)} + {button} +

    + + ) +} + +export { ExpandableText as default, ExpandableText } diff --git a/shared/ui-components/src/atoms/Icon.scss b/shared/ui-components/src/atoms/Icon.scss index 10bbf623ec..2ddef5fc33 100644 --- a/shared/ui-components/src/atoms/Icon.scss +++ b/shared/ui-components/src/atoms/Icon.scss @@ -1,8 +1,8 @@ .ui-icon svg { - width: 1.5rem; - height: 1.5rem; - display: inline-block; - vertical-align: middle; + @apply inline-block; + @apply align-middle; + @apply w-6; + @apply h-6; } .ui-icon svg { @@ -10,28 +10,28 @@ } .ui-tiny svg { - width: 0.5rem; - height: 0.5rem; + @apply w-2; + @apply h-2; } .ui-small svg { - width: 0.75rem; - height: 0.75rem; + @apply w-3; + @apply h-3; } .ui-medium svg { - width: 1rem; - height: 1rem; + @apply w-4; + @apply h-4; } .ui-large svg { - width: 2rem; - height: 2rem; + @apply w-8; + @apply h-8; } .ui-xlarge svg { - width: 2.5rem; - height: 2.5rem; + @apply w-10; + @apply h-10; } .ui-white svg use { diff --git a/shared/ui-components/src/atoms/LinkButton.stories.tsx b/shared/ui-components/src/atoms/LinkButton.stories.tsx index df08828495..09060d6c04 100644 --- a/shared/ui-components/src/atoms/LinkButton.stories.tsx +++ b/shared/ui-components/src/atoms/LinkButton.stories.tsx @@ -4,7 +4,7 @@ import LinkButton from "./LinkButton" export default { title: "Atoms|LinkButton", - decorators: [withA11y] + decorators: [withA11y], } export const standard = () => LinkButton w/Link diff --git a/shared/ui-components/src/atoms/LinkButton.tsx b/shared/ui-components/src/atoms/LinkButton.tsx index 2d4e0ada47..4621c8ddd3 100644 --- a/shared/ui-components/src/atoms/LinkButton.tsx +++ b/shared/ui-components/src/atoms/LinkButton.tsx @@ -27,7 +27,7 @@ const LinkButton = (props: LinkButtonProps) => { const linkProps = { href: props.href, - className: buttonClasses.join(" ") + className: buttonClasses.join(" "), } as LinkProps if (props.as) linkProps.as = props.as diff --git a/shared/ui-components/src/atoms/__snapshots__/ExpandableText.stories.storyshot b/shared/ui-components/src/atoms/__snapshots__/ExpandableText.stories.storyshot new file mode 100644 index 0000000000..6c6997cff5 --- /dev/null +++ b/shared/ui-components/src/atoms/__snapshots__/ExpandableText.stories.storyshot @@ -0,0 +1,41 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Atoms|ExpandableText Expanded 1`] = ` + +

    + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. + + + Less + +

    +
    +`; + +exports[`Storyshots Atoms|ExpandableText No Expansion 1`] = ` + +

    + Short text +

    +
    +`; + +exports[`Storyshots Atoms|ExpandableText Standard 1`] = ` + +

    + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining + ... + + More + +

    +
    +`; diff --git a/shared/ui-components/src/cards/ImageCard.scss b/shared/ui-components/src/cards/ImageCard.scss index 2ec9bc38fd..9c49634960 100644 --- a/shared/ui-components/src/cards/ImageCard.scss +++ b/shared/ui-components/src/cards/ImageCard.scss @@ -2,18 +2,12 @@ .image-card { @apply relative; + img { @apply w-full; } } -.image-card__status { - @apply absolute; - @apply left-0; - @apply top-0; - @apply mt-2; -} - .image-card__figcaption { @apply absolute; @apply inset-x-0; @@ -27,26 +21,28 @@ .image-card__title { @apply text-white; - @apply text-center; + @apply text-left; @apply text-3xl; @apply uppercase; @apply font-alt-sans; - @apply mb-3; @apply relative; @apply z-10; @apply tracking-wider; + @apply py-3; + @apply px-5; } .image-card--leader { @apply w-full; - @apply pt-8; @screen md { @apply w-2/3; @apply pr-8; + @apply pt-8; } .image-card__title { @apply text-4xl; + @apply text-center; } } diff --git a/shared/ui-components/src/cards/ImageCard.stories.tsx b/shared/ui-components/src/cards/ImageCard.stories.tsx index e096d06048..22c07ab671 100644 --- a/shared/ui-components/src/cards/ImageCard.stories.tsx +++ b/shared/ui-components/src/cards/ImageCard.stories.tsx @@ -4,7 +4,7 @@ import ImageCard from "./ImageCard" export default { title: "Cards|ImageCard", - decorators: [withA11y, (storyFn: any) =>
    {storyFn()}
    ] + decorators: [withA11y, (storyFn: any) =>
    {storyFn()}
    ], } export const imageAndTitle = () => diff --git a/shared/ui-components/src/cards/ImageCard.tsx b/shared/ui-components/src/cards/ImageCard.tsx index 669f493937..9ce2c023ca 100644 --- a/shared/ui-components/src/cards/ImageCard.tsx +++ b/shared/ui-components/src/cards/ImageCard.tsx @@ -25,15 +25,17 @@ const ImageCard = (props: ImageCardProps) => { } const image = ( -
    - {props.imageUrl && {props.title}} - {!props.imageUrl &&
    } +
    +
    + {props.imageUrl && {props.title}} + {!props.imageUrl &&
    } +
    +

    {props.title}

    +

    {props.subtitle}

    +
    +
    {statusLabel} -
    -

    {props.title}

    -

    {props.subtitle}

    -
    -
    +

    ) let card = image diff --git a/shared/ui-components/src/cards/__snapshots__/ImageCard.stories.storyshot b/shared/ui-components/src/cards/__snapshots__/ImageCard.stories.storyshot index b1e2d143d1..a086f3ce20 100644 --- a/shared/ui-components/src/cards/__snapshots__/ImageCard.stories.storyshot +++ b/shared/ui-components/src/cards/__snapshots__/ImageCard.stories.storyshot @@ -12,24 +12,28 @@ exports[`Storyshots Cards|ImageCard Image And Title 1`] = ` imageUrl="/images/listing.jpg" title="Hello World" > -
    - Hello World -
    -

    +
    - Hello World -

    -

    -

    -
    +

    + Hello World +

    +

    + + +

    `; @@ -61,24 +65,28 @@ exports[`Storyshots Cards|ImageCard With Link 1`] = ` onClick={[Function]} onMouseEnter={[Function]} > -
    - Hello World -
    -

    +
    - Hello World -

    -

    -

    -
    +

    + Hello World +

    +

    + + +

    diff --git a/shared/ui-components/src/footers/ExygyFooter.tsx b/shared/ui-components/src/footers/ExygyFooter.tsx index 1634764afe..69e15262c8 100644 --- a/shared/ui-components/src/footers/ExygyFooter.tsx +++ b/shared/ui-components/src/footers/ExygyFooter.tsx @@ -1,7 +1,7 @@ import * as React from "react" const ExygyFooter = () => ( - + made with ❤️ by{" "} exygy diff --git a/shared/ui-components/src/footers/FooterNav/FooterNav.scss b/shared/ui-components/src/footers/FooterNav/FooterNav.scss index 7886c546b0..159619bdf2 100644 --- a/shared/ui-components/src/footers/FooterNav/FooterNav.scss +++ b/shared/ui-components/src/footers/FooterNav/FooterNav.scss @@ -11,6 +11,7 @@ @apply text-white; @apply block; @apply mt-2; + @screen lg { @apply inline; @apply mt-0; diff --git a/shared/ui-components/src/footers/SiteFooter/SiteFooter.scss b/shared/ui-components/src/footers/SiteFooter/SiteFooter.scss index e300f8e9e3..13455b3fcd 100644 --- a/shared/ui-components/src/footers/SiteFooter/SiteFooter.scss +++ b/shared/ui-components/src/footers/SiteFooter/SiteFooter.scss @@ -9,9 +9,11 @@ footer.site-footer { width: 130px; opacity: 0.8; } + a { @apply text-white; } + p { @apply mb-5; } @@ -23,4 +25,4 @@ footer.site-footer { & > .footer-row:last-of-type { @apply pt-0; } -} \ No newline at end of file +} diff --git a/shared/ui-components/src/footers/SiteFooter/SiteFooter.stories.tsx b/shared/ui-components/src/footers/SiteFooter/SiteFooter.stories.tsx index cc01243dca..a9f89b0a59 100644 --- a/shared/ui-components/src/footers/SiteFooter/SiteFooter.stories.tsx +++ b/shared/ui-components/src/footers/SiteFooter/SiteFooter.stories.tsx @@ -9,10 +9,10 @@ import FooterSection from "../FooterSection/FooterSection" export default { title: "Footers|Site Footer", parameters: { - componentSubtitle: "Site-wide footer, shown on every page." + componentSubtitle: "Site-wide footer, shown on every page.", }, component: SiteFooter, - decorators: [withA11y] + decorators: [withA11y], } const credits = ( diff --git a/shared/ui-components/src/footers/SiteFooter/__snapshots__/SiteFooter.stories.storyshot b/shared/ui-components/src/footers/SiteFooter/__snapshots__/SiteFooter.stories.storyshot index cdc9d3a10a..21f3104b7a 100644 --- a/shared/ui-components/src/footers/SiteFooter/__snapshots__/SiteFooter.stories.storyshot +++ b/shared/ui-components/src/footers/SiteFooter/__snapshots__/SiteFooter.stories.storyshot @@ -190,7 +190,9 @@ exports[`Storyshots Footers|Site Footer With Logo And Credits 1`] = ` className="footer-row__section py-2" > - + made with ❤️ by { + if (props.error) { + return ( + + {props.children} + + ) + } else { + return <> + } +} + +export { ErrorMessage as default, ErrorMessage } diff --git a/shared/ui-components/src/forms/Field.tsx b/shared/ui-components/src/forms/Field.tsx new file mode 100644 index 0000000000..5f3d36afa0 --- /dev/null +++ b/shared/ui-components/src/forms/Field.tsx @@ -0,0 +1,32 @@ +import React from "react" +import ErrorMessage from "./ErrorMessage" + +const Field = (props) => { + const classes = ["field"] + if (props.error) { + classes.push("error") + } + const controlClasses = ["control"] + if (props.controlClassName) { + controlClasses.push(props.controlClassName) + } + + return ( +
    + +
    + +
    + {props.errorMessage} +
    + ) +} + +export { Field as default, Field } diff --git a/shared/ui-components/src/forms/MultistepProgress.tsx b/shared/ui-components/src/forms/MultistepProgress.tsx new file mode 100644 index 0000000000..a3ee3a8586 --- /dev/null +++ b/shared/ui-components/src/forms/MultistepProgress.tsx @@ -0,0 +1,51 @@ +import React from "react" +import { onClientSide } from "../helpers/nextjs" + +const ProcessStepIndicator = (props: { + step: number + currentPageStep: number + completedSteps: number +}) => { + let indicatorColor = "#CCC" + if (onClientSide()) { + if (props.step == props.currentPageStep) { + indicatorColor = "#0077da" + } else if (props.completedSteps >= props.step) { + indicatorColor = "#0D0" + } + } + + const styles = { + backgroundColor: indicatorColor, + display: "inline-block", + width: "15px", + height: "15px", + marginRight: "10px", + borderRadius: "15px", + } + + return +} + +const MultistepProgress = (props: { + currentPageStep: number + completedSteps: number + totalNumberOfSteps: number +}) => { + let i = 0 + const stepIndicators = [] + while (i < props.totalNumberOfSteps) { + i++ + stepIndicators.push( + + ) + } + + return
    {stepIndicators}
    +} + +export { MultistepProgress as default, MultistepProgress } diff --git a/shared/ui-components/src/forms/__snapshots__/checkbox.stories.storyshot b/shared/ui-components/src/forms/__snapshots__/checkbox.stories.storyshot new file mode 100644 index 0000000000..7707492b1e --- /dev/null +++ b/shared/ui-components/src/forms/__snapshots__/checkbox.stories.storyshot @@ -0,0 +1,26 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Forms|Checkbox Standard 1`] = ` +
    +
    + + +
    +
    +`; diff --git a/shared/ui-components/src/forms/__snapshots__/radio.stories.storyshot b/shared/ui-components/src/forms/__snapshots__/radio.stories.storyshot new file mode 100644 index 0000000000..b4d17fbc1f --- /dev/null +++ b/shared/ui-components/src/forms/__snapshots__/radio.stories.storyshot @@ -0,0 +1,40 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Forms|Radio Standard 1`] = ` +
    +
    + + +
    +
    + + +
    +
    +`; diff --git a/shared/ui-components/src/forms/checkbox.stories.tsx b/shared/ui-components/src/forms/checkbox.stories.tsx new file mode 100644 index 0000000000..8cc2282c31 --- /dev/null +++ b/shared/ui-components/src/forms/checkbox.stories.tsx @@ -0,0 +1,13 @@ +import * as React from "react" + +export default { + title: "Forms|Checkbox", + decorators: [(storyFn: () => JSX.Element) =>
    {storyFn()}
    ], +} + +export const standard = () => ( +
    + + +
    +) diff --git a/shared/ui-components/src/forms/radio.stories.tsx b/shared/ui-components/src/forms/radio.stories.tsx new file mode 100644 index 0000000000..74a7cb6013 --- /dev/null +++ b/shared/ui-components/src/forms/radio.stories.tsx @@ -0,0 +1,19 @@ +import * as React from "react" + +export default { + title: "Forms|Radio", + decorators: [(storyFn: () => JSX.Element) =>
    {storyFn()}
    ], +} + +export const standard = () => ( + <> +
    + + +
    +
    + + +
    + +) diff --git a/shared/ui-components/src/headers/Hero/Hero.scss b/shared/ui-components/src/headers/Hero/Hero.scss index ad027a1f3e..f7102f7640 100644 --- a/shared/ui-components/src/headers/Hero/Hero.scss +++ b/shared/ui-components/src/headers/Hero/Hero.scss @@ -1,22 +1,31 @@ .hero { @apply bg-primary-darker; - @apply py-20; + @apply py-10; @apply px-5; @apply text-white; @apply text-center; - background-size: cover; + @apply bg-cover; + + @screen md { + @apply py-20; + } } .hero__title { - @apply text-6xl; - @apply mb-8; + @apply text-4xl; + @apply mb-5; @apply mx-auto; letter-spacing: -0.04em; max-width: 41rem; + @screen md { + @apply text-6xl; + @apply mb-8; + } + em { - font-style: normal; - text-decoration: underline; + @apply not-italic; + @apply underline; -webkit-text-decoration-color: $tailwind-warn; -moz-text-decoration-color: $tailwind-warn; text-decoration-color: $tailwind-warn; @@ -25,10 +34,14 @@ h2.hero__subtitle { @apply font-sans; - @apply text-lg; + @apply text-base; @apply text-gray-100; @apply mb-8; @apply mx-auto; max-width: 41rem; text-shadow: 1px 2px 5px rgba(0, 0, 0, 0.5); + + @screen md { + @apply text-lg; + } } diff --git a/shared/ui-components/src/headers/Hero/Hero.stories.tsx b/shared/ui-components/src/headers/Hero/Hero.stories.tsx index 718cabe6b6..e3261be25a 100644 --- a/shared/ui-components/src/headers/Hero/Hero.stories.tsx +++ b/shared/ui-components/src/headers/Hero/Hero.stories.tsx @@ -7,7 +7,7 @@ import { Listing } from "@bloom-housing/core" export default { title: "Headers|Hero", - decorators: [withA11y] + decorators: [withA11y], } const archer = Object.assign({}, Archer) as any diff --git a/shared/ui-components/src/headers/Hero/__snapshots__/Hero.stories.storyshot b/shared/ui-components/src/headers/Hero/__snapshots__/Hero.stories.storyshot index e6ba2d5e7b..aa22269b82 100644 --- a/shared/ui-components/src/headers/Hero/__snapshots__/Hero.stories.storyshot +++ b/shared/ui-components/src/headers/Hero/__snapshots__/Hero.stories.storyshot @@ -1205,7 +1205,7 @@ exports[`Storyshots Headers|Hero With Listings 1`] = ` "annualIncomeMax": "103350.0", "annualIncomeMin": "58152.0", "createdAt": "2019-06-03T17:42:43.134Z", - "floor": 2, + "floor": null, "id": "jBMnzuaeffeq_X0qrWi3j", "listingId": "jsQvgvy6eJy56TNCFfQp8", "maxOccupancy": 2, @@ -1229,7 +1229,7 @@ exports[`Storyshots Headers|Hero With Listings 1`] = ` "annualIncomeMax": "160150.0", "annualIncomeMin": "85368.0", "createdAt": "2019-06-03T17:42:43.134Z", - "floor": 4, + "floor": null, "id": "Vrfp_MFTbvyc6GG_wduj5", "listingId": "jsQvgvy6eJy56TNCFfQp8", "maxOccupancy": 7, diff --git a/shared/ui-components/src/headers/PageHeader/PageHeader.scss b/shared/ui-components/src/headers/PageHeader/PageHeader.scss new file mode 100644 index 0000000000..568df733d8 --- /dev/null +++ b/shared/ui-components/src/headers/PageHeader/PageHeader.scss @@ -0,0 +1,28 @@ +.page-header { + @apply py-8; + @apply px-5; + + @screen md { + @apply py-10; + } + + &.bg-primary-dark { + @apply text-white; + } +} + +.page-header__title { + @apply m-auto; + @apply max-w-5xl; + @apply text-center; + + @screen md { + @apply text-5xl; + @apply text-left; + } +} + +.page-header__lead { + @apply m-auto; + @apply max-w-5xl; +} \ No newline at end of file diff --git a/shared/ui-components/src/headers/PageHeader/PageHeader.stories.tsx b/shared/ui-components/src/headers/PageHeader/PageHeader.stories.tsx index 78daaae71a..2e468a343c 100644 --- a/shared/ui-components/src/headers/PageHeader/PageHeader.stories.tsx +++ b/shared/ui-components/src/headers/PageHeader/PageHeader.stories.tsx @@ -4,7 +4,7 @@ import PageHeader from "./PageHeader" export default { title: "Headers|PageHeader", - decorators: [withA11y] + decorators: [withA11y], } export const withTextContent = () => Hello World diff --git a/shared/ui-components/src/headers/PageHeader/PageHeader.tsx b/shared/ui-components/src/headers/PageHeader/PageHeader.tsx index 7834f5771d..fca4b8014b 100644 --- a/shared/ui-components/src/headers/PageHeader/PageHeader.tsx +++ b/shared/ui-components/src/headers/PageHeader/PageHeader.tsx @@ -1,4 +1,5 @@ import * as React from "react" +import "./PageHeader.scss" export interface PageHeaderProps { inverse?: boolean @@ -7,7 +8,7 @@ export interface PageHeaderProps { } const PageHeader = (props: PageHeaderProps) => { - const classNames = ["page-header", "py-10", "px-5"] + const classNames = ["page-header"] if (props.inverse) { classNames.push("bg-primary-dark") classNames.push("text-white") @@ -17,8 +18,8 @@ const PageHeader = (props: PageHeaderProps) => { return (
    -

    {props.children}

    - {props.subtitle &&

    {props.subtitle}

    } +

    {props.children}

    + {props.subtitle &&

    {props.subtitle}

    }
    ) } diff --git a/shared/ui-components/src/headers/PageHeader/__snapshots__/PageHeader.stories.storyshot b/shared/ui-components/src/headers/PageHeader/__snapshots__/PageHeader.stories.storyshot index c13220a2c4..7affd3ec11 100644 --- a/shared/ui-components/src/headers/PageHeader/__snapshots__/PageHeader.stories.storyshot +++ b/shared/ui-components/src/headers/PageHeader/__snapshots__/PageHeader.stories.storyshot @@ -5,15 +5,15 @@ exports[`Storyshots Headers|PageHeader With Subtitle 1`] = ` subtitle="Here is a subtitle" >

    Hello World

    Here is a subtitle @@ -25,10 +25,10 @@ exports[`Storyshots Headers|PageHeader With Subtitle 1`] = ` exports[`Storyshots Headers|PageHeader With Text Content 1`] = `

    Hello World

    diff --git a/shared/ui-components/src/headers/SiteHeader/SiteHeader.stories.tsx b/shared/ui-components/src/headers/SiteHeader/SiteHeader.stories.tsx index 020aa0a468..3e2bc0f3f0 100644 --- a/shared/ui-components/src/headers/SiteHeader/SiteHeader.stories.tsx +++ b/shared/ui-components/src/headers/SiteHeader/SiteHeader.stories.tsx @@ -5,7 +5,7 @@ import Button from "../../atoms/Button" export default { title: "Headers|SiteHeader", - decorators: [withA11y] + decorators: [withA11y], } export const standard = () => ( diff --git a/shared/ui-components/src/headers/SiteHeader/SiteHeader.tsx b/shared/ui-components/src/headers/SiteHeader/SiteHeader.tsx index 40ce94c30c..e9dd934e3a 100644 --- a/shared/ui-components/src/headers/SiteHeader/SiteHeader.tsx +++ b/shared/ui-components/src/headers/SiteHeader/SiteHeader.tsx @@ -78,20 +78,21 @@ class SiteHeader extends React.Component { return ( <> {this.noticeBar()} +
    + +
    ) } diff --git a/shared/ui-components/src/headers/SiteHeader/__snapshots__/SiteHeader.stories.storyshot b/shared/ui-components/src/headers/SiteHeader/__snapshots__/SiteHeader.stories.storyshot index dbbd338136..88184ddfa5 100644 --- a/shared/ui-components/src/headers/SiteHeader/__snapshots__/SiteHeader.stories.storyshot +++ b/shared/ui-components/src/headers/SiteHeader/__snapshots__/SiteHeader.stories.storyshot @@ -15,78 +15,82 @@ exports[`Storyshots Headers|SiteHeader Standard 1`] = ` This is a preview of our new website. We're just getting started. We'd love to get your feedback.
- + + +
`; @@ -105,134 +109,138 @@ exports[`Storyshots Headers|SiteHeader With Dropdown And Button 1`] = ` This is a preview of our new website. We're just getting started. We'd love to get your feedback.

- + + `; diff --git a/shared/ui-components/src/helpers/nextjs.ts b/shared/ui-components/src/helpers/nextjs.ts new file mode 100644 index 0000000000..796607bfc1 --- /dev/null +++ b/shared/ui-components/src/helpers/nextjs.ts @@ -0,0 +1,7 @@ +import { useEffect, useState } from "react" + +export const onClientSide = () => { + const [mounted, setMounted] = useState(false) + useEffect(() => setMounted(true), []) + return mounted +} diff --git a/shared/ui-components/src/helpers/occupancyFormatting.tsx b/shared/ui-components/src/helpers/occupancyFormatting.tsx index 4dacac2838..fb6680e3d2 100644 --- a/shared/ui-components/src/helpers/occupancyFormatting.tsx +++ b/shared/ui-components/src/helpers/occupancyFormatting.tsx @@ -6,7 +6,7 @@ export const occupancyTable = (listing: Listing) => { let occupancyData = [] as any if (listing.unitsSummarized) { - occupancyData = listing.unitsSummarized.byUnitType.map(unitSummary => { + occupancyData = listing.unitsSummarized.byUnitType.map((unitSummary) => { let occupancy = "" if (unitSummary.occupancyRange.max == null) { @@ -23,7 +23,7 @@ export const occupancyTable = (listing: Listing) => { return { unitType: {t("listings.unitTypes." + unitSummary.unitType)}, - occupancy: occupancy + occupancy: occupancy, } }) } diff --git a/shared/ui-components/src/helpers/tableSummaries.tsx b/shared/ui-components/src/helpers/tableSummaries.tsx index 5a2ade9110..b79c1ff786 100644 --- a/shared/ui-components/src/helpers/tableSummaries.tsx +++ b/shared/ui-components/src/helpers/tableSummaries.tsx @@ -4,7 +4,7 @@ import { UnitSummary, UnitSummaryByReservedType } from "@bloom-housing/core" import { GroupedTableGroup } from "../tables/GroupedTable" export const unitSummariesTable = (summaries: UnitSummary[]) => { - const unitSummaries = summaries.map(unitSummary => { + const unitSummaries = summaries.map((unitSummary) => { const unitPluralization = unitSummary.totalAvailable == 1 ? t("listings.unit") : t("listings.units") const minIncome = @@ -39,7 +39,7 @@ export const unitSummariesTable = (summaries: UnitSummary[]) => { {t("listings.waitlist.label")} )} - ) + ), } }) @@ -56,8 +56,8 @@ export const groupNonReservedAndReservedSummaries = ( const unitSummaries = unitSummariesTable(nonReservedSummaries) groupedUnits = [ { - data: unitSummaries - } + data: unitSummaries, + }, ] } @@ -71,7 +71,7 @@ export const groupNonReservedAndReservedSummaries = ( ), className: "reserved", - data: unitSummariesTable(item.byUnitType) + data: unitSummariesTable(item.byUnitType), }) }) } diff --git a/shared/ui-components/src/helpers/translator.tsx b/shared/ui-components/src/helpers/translator.tsx index 9a8c256de4..de50326f05 100644 --- a/shared/ui-components/src/helpers/translator.tsx +++ b/shared/ui-components/src/helpers/translator.tsx @@ -11,7 +11,7 @@ export const addTranslation = (translationPhrases: any) => { if (!translatorConfig.polyglot) { // Set up the initial Polyglot instance and phrases translatorConfig.polyglot = new Polyglot({ - phrases: translationPhrases + phrases: translationPhrases, }) } else { // Extend the Polyglot instance with new phrases diff --git a/shared/ui-components/src/lists/PreferencesList.scss b/shared/ui-components/src/lists/PreferencesList.scss index 5b40727d7b..fc48c7483c 100644 --- a/shared/ui-components/src/lists/PreferencesList.scss +++ b/shared/ui-components/src/lists/PreferencesList.scss @@ -2,6 +2,7 @@ .info-card__title { @apply mb-0; @apply ml-4; + @screen md { @apply ml-2; } @@ -13,8 +14,8 @@ margin-top: -10px; } .info-card__title { - text-transform: none; - letter-spacing: 0; + @apply normal-case; + @apply tracking-normal; } } @@ -24,23 +25,23 @@ @apply border-primary; @apply text-primary; @apply text-sm; - border-radius: 50%; - float: left; - font-weight: 700; - padding: 0.5rem; + @apply rounded-full; + @apply float-left; + @apply p-2; + @apply mr-2; + @apply text-center; + @apply whitespace-no-wrap; + @apply font-bold; margin-left: -2.2rem; - margin-right: 0.5rem; margin-top: -4px; - text-align: center; width: 2.5rem; - white-space: nowrap; @screen md { margin-left: -2.65rem; } sup { - font-weight: 400; + @apply font-normal; top: -0.35em; } } @@ -66,6 +67,6 @@ @apply mt-3; span { - margin-right: 1rem; + @apply mr-4; } } diff --git a/shared/ui-components/src/lists/PreferencesList.stories.tsx b/shared/ui-components/src/lists/PreferencesList.stories.tsx index 0904b90d83..e35ac77813 100644 --- a/shared/ui-components/src/lists/PreferencesList.stories.tsx +++ b/shared/ui-components/src/lists/PreferencesList.stories.tsx @@ -6,7 +6,7 @@ import Gish from "@bloom-housing/listings-service/listings/gish.json" export default { title: "Listing|Preferences List", - decorators: [withA11y] + decorators: [withA11y], } const listing = Object.assign({}, Gish) as any diff --git a/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.stories.tsx b/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.stories.tsx index 809a492ad0..6ba6cb5b19 100644 --- a/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.stories.tsx +++ b/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.stories.tsx @@ -4,12 +4,12 @@ import { ResponsiveContentList, ResponsiveContentItem, ResponsiveContentItemHeader, - ResponsiveContentItemBody + ResponsiveContentItemBody, } from "./ResponsiveContentList" export default { title: "Sections|ResponsiveContentList", - decorators: [withA11y] + decorators: [withA11y], } export const withContentItems = () => ( diff --git a/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.tsx b/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.tsx index ed75a5196a..8d7a1ddfcc 100644 --- a/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.tsx +++ b/shared/ui-components/src/lists/ResponsiveContentList/ResponsiveContentList.tsx @@ -5,7 +5,7 @@ import { AccordionItem, AccordionItemHeading, AccordionItemButton, - AccordionItemPanel + AccordionItemPanel, } from "react-accessible-accordion" export interface ResponsiveContentProps { @@ -63,5 +63,5 @@ export { ResponsiveContentList, ResponsiveContentItem, ResponsiveContentItemHeader, - ResponsiveContentItemBody + ResponsiveContentItemBody, } diff --git a/shared/ui-components/src/locales/general.json b/shared/ui-components/src/locales/general.json index ddb280571e..a991286dac 100644 --- a/shared/ui-components/src/locales/general.json +++ b/shared/ui-components/src/locales/general.json @@ -29,6 +29,8 @@ "call": "Call", "email": "Email", "getDirections": "Get Directions", + "less": "Less", + "more": "More", "readLess": "read less", "readMore": "read more", "seeDetails": "See Details", diff --git a/shared/ui-components/src/page_components/HousingCounselor.stories.tsx b/shared/ui-components/src/page_components/HousingCounselor.stories.tsx index 1b00337af9..068923158d 100644 --- a/shared/ui-components/src/page_components/HousingCounselor.stories.tsx +++ b/shared/ui-components/src/page_components/HousingCounselor.stories.tsx @@ -4,7 +4,7 @@ import HousingCounselor from "./HousingCounselor" export default { title: "PageComponents|HousingCounselor", - decorators: [withA11y] + decorators: [withA11y], } export const withOnlyRequiredFields = () => ( @@ -15,7 +15,7 @@ export const withMultipleLanguages = () => ( ) @@ -28,7 +28,7 @@ export const withAllFields = () => ( address: "123 Main St", citystate: "San Francisco, CA", website: "www.counselor.org", - phone: "123-456-7890" + phone: "123-456-7890", }} /> ) diff --git a/shared/ui-components/src/page_components/HousingCounselor.tsx b/shared/ui-components/src/page_components/HousingCounselor.tsx index 6e3d8a5048..3ae97ed03d 100644 --- a/shared/ui-components/src/page_components/HousingCounselor.tsx +++ b/shared/ui-components/src/page_components/HousingCounselor.tsx @@ -26,7 +26,7 @@ const HousingCounselor = (props: { counselor: Counselor }) => {

{t("housingCounselors.languageServices")} - {counselor.languages.map(language => LanguageLabel(language))} + {counselor.languages.map((language) => LanguageLabel(language))}

{counselor.address && (

diff --git a/shared/ui-components/src/page_components/UnitTables.stories.tsx b/shared/ui-components/src/page_components/UnitTables.stories.tsx index 4bceb0f6d2..22368f72d9 100644 --- a/shared/ui-components/src/page_components/UnitTables.stories.tsx +++ b/shared/ui-components/src/page_components/UnitTables.stories.tsx @@ -8,7 +8,7 @@ import { unitSummariesTable, groupNonReservedAndReservedSummaries } from "../hel export default { title: "Tables|UnitSummaryTables", - decorators: [withA11y] + decorators: [withA11y], } const archer = Object.assign({}, Archer) as any @@ -28,8 +28,19 @@ const summaries = { rentAsPercentIncomeRange: { min: null, max: null }, rentRange: { min: "$719", max: "$1,104" }, floorRange: { min: 2, max: 3 }, - areaRange: { min: 285, max: 285 } - } + areaRange: { min: 285, max: 285 }, + }, + ], + byUnitTypeWithoutFloor: [ + { + unitType: "studio", + totalAvailable: 41, + minIncomeRange: { min: "$1,438", max: "$2,208" }, + occupancyRange: { min: 1, max: 2 }, + rentAsPercentIncomeRange: { min: null, max: null }, + rentRange: { min: "$719", max: "$1,104" }, + areaRange: { min: 285, max: 285 }, + }, ], byNonReservedUnitType: [ { @@ -40,8 +51,8 @@ const summaries = { rentAsPercentIncomeRange: { min: null, max: null }, rentRange: { min: "$719", max: "$1,104" }, floorRange: { min: 2, max: 3 }, - areaRange: { min: 285, max: 285 } - } + areaRange: { min: 285, max: 285 }, + }, ], byReservedType: [ { @@ -55,10 +66,10 @@ const summaries = { rentAsPercentIncomeRange: { min: null, max: null }, rentRange: { min: "$1,104", max: "$1,104" }, floorRange: { min: 2, max: 2 }, - areaRange: { min: 285, max: 285 } - } - ] - } + areaRange: { min: 285, max: 285 }, + }, + ], + }, ], byAMI: [ { @@ -72,8 +83,8 @@ const summaries = { rentAsPercentIncomeRange: { min: null, max: null }, rentRange: { min: "$1,104", max: "$1,104" }, floorRange: { min: 2, max: 3 }, - areaRange: { min: 285, max: 285 } - } + areaRange: { min: 285, max: 285 }, + }, ], byReservedType: [ { @@ -87,11 +98,11 @@ const summaries = { rentAsPercentIncomeRange: { min: null, max: null }, rentRange: { min: "$1,104", max: "$1,104" }, floorRange: { min: 2, max: 2 }, - areaRange: { min: 285, max: 285 } - } - ] - } - ] + areaRange: { min: 285, max: 285 }, + }, + ], + }, + ], }, { percent: "30.0", @@ -104,19 +115,19 @@ const summaries = { rentAsPercentIncomeRange: { min: null, max: null }, rentRange: { min: "$719", max: "$719" }, floorRange: { min: 2, max: 3 }, - areaRange: { min: 285, max: 285 } - } + areaRange: { min: 285, max: 285 }, + }, ], - byReservedType: [] - } + byReservedType: [], + }, ], hmi: { columns: { householdSize: "Household Size", ami30: "30% AMI Units", ami45: "45% AMI Units" }, rows: [ { householdSize: 1, ami30: "$30,750", ami45: "$46,125" }, - { householdSize: 2, ami30: "$35,130", ami45: "$52,695" } - ] - } + { householdSize: 2, ami30: "$35,130", ami45: "$52,695" }, + ], + }, } export const unitsList = () => { @@ -126,6 +137,13 @@ export const unitsList = () => { /* eslint-enable @typescript-eslint/ban-ts-ignore */ } +export const unitsListWithoutFloor = () => { + /* eslint-disable @typescript-eslint/ban-ts-ignore */ + // @ts-ignore + return + /* eslint-enable @typescript-eslint/ban-ts-ignore */ +} + export const unitsListWithDisabledAccordion = () => { /* eslint-disable @typescript-eslint/ban-ts-ignore */ return ( @@ -139,11 +157,11 @@ const unitSummariesHeaders = { unitType: "Unit Type", minimumIncome: "Minimum Income", rent: "Rent", - availability: "Availability" + availability: "Availability", } const amiValues = summaries.amiPercentages - .map(percent => { + .map((percent) => { const percentInt = parseInt(percent, 10) return percentInt }) @@ -153,8 +171,8 @@ export const unitsSummaries = () => { /* eslint-disable @typescript-eslint/ban-ts-ignore */ return (

- {amiValues.map(percent => { - const byAMI = summaries.byAMI.find(item => { + {amiValues.map((percent) => { + const byAMI = summaries.byAMI.find((item) => { return parseInt(item.percent, 10) == percent }) @@ -179,8 +197,8 @@ export const unitsSummariesGroupedByReservedTypes = () => { /* eslint-disable @typescript-eslint/ban-ts-ignore */ return (
- {amiValues.map(percent => { - const byAMI = summaries.byAMI.find(item => { + {amiValues.map((percent) => { + const byAMI = summaries.byAMI.find((item) => { return parseInt(item.percent, 10) == percent }) diff --git a/shared/ui-components/src/page_components/UnitTables.tsx b/shared/ui-components/src/page_components/UnitTables.tsx index 9f56e98972..279a14e31b 100644 --- a/shared/ui-components/src/page_components/UnitTables.tsx +++ b/shared/ui-components/src/page_components/UnitTables.tsx @@ -1,7 +1,7 @@ import * as React from "react" import { nanoid } from "nanoid" -import { MinMax } from "@bloom-housing/core" -import { UnitSummary, Unit } from "@bloom-housing/core" +import { MinMax, UnitSummary, Unit } from "@bloom-housing/core" + import { BasicTable } from "../tables/BasicTable" import t from "../../src/helpers/translator" import { numberOrdinal } from "../../src/helpers/numberOrdinal" @@ -45,7 +45,7 @@ const UnitTables = (props: UnitTablesProps) => { number: capitalize(t("listings.unit") + " #"), sqFeet: capitalize(t("t.area")), numBathrooms: capitalize(t("listings.bath") + "s"), - floor: capitalize(t("t.floor")) + floor: capitalize(t("t.floor")), } const toggleTable = (event: React.MouseEvent) => { @@ -63,6 +63,7 @@ const UnitTables = (props: UnitTablesProps) => { const uniqKey = process.env.NODE_ENV === "test" ? "" : nanoid() const units = props.units.filter((unit: Unit) => unit.unitType == unitSummary.unitType) const unitsFormatted = [] as Array> + let floorSection units.forEach((unit: Unit) => { unitsFormatted.push({ number: unit.number, @@ -72,21 +73,29 @@ const UnitTables = (props: UnitTablesProps) => { ), numBathrooms: {unit.numBathrooms}, - floor: {unit.floor} + floor: {unit.floor}, }) }) + if (unitSummary.floorRange) { + floorSection = ( + <> + , {formatRange(unitSummary.floorRange, true)}{" "} + {unitSummary.floorRange.max > unitSummary.floorRange.min + ? t("t.floors") + : t("t.floor")} + + ) + } + return (
diff --git a/shared/ui-components/src/page_components/__snapshots__/UnitTables.stories.storyshot b/shared/ui-components/src/page_components/__snapshots__/UnitTables.stories.storyshot index 1ecddebfa0..645bcc9984 100644 --- a/shared/ui-components/src/page_components/__snapshots__/UnitTables.stories.storyshot +++ b/shared/ui-components/src/page_components/__snapshots__/UnitTables.stories.storyshot @@ -8083,6 +8083,4037 @@ exports[`Storyshots Tables|UnitSummaryTables Units List With Disabled Accordion `; +exports[`Storyshots Tables|UnitSummaryTables Units List Without Floor 1`] = ` + +
+ +
+ + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 2 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + Object { + "floor": + 3 + , + "numBathrooms": , + "number": null, + "sqFeet": + + 285 + + + sqft + , + }, + ] + } + headers={ + Object { + "floor": "Floor", + "numBathrooms": "Baths", + "number": "Unit #", + "sqFeet": "Area", + } + } + > +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Unit # + + Area + + Baths + + Floor +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 2 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+ + + + + 285 + + + sqft + + + + + 3 + +
+
+
+
+
+
+`; + exports[`Storyshots Tables|UnitSummaryTables Units Summaries 1`] = `
diff --git a/shared/ui-components/src/page_components/listing/AdditionalFees.stories.tsx b/shared/ui-components/src/page_components/listing/AdditionalFees.stories.tsx index 89e57fc1ef..d885692a05 100644 --- a/shared/ui-components/src/page_components/listing/AdditionalFees.stories.tsx +++ b/shared/ui-components/src/page_components/listing/AdditionalFees.stories.tsx @@ -5,7 +5,7 @@ import Archer from "@bloom-housing/listings-service/listings/archer.json" export default { title: "Listing|Additional Fees", - decorators: [withA11y] + decorators: [withA11y], } const listing = Object.assign({}, Archer) as any diff --git a/shared/ui-components/src/page_components/listing/ListingDetailHeader.tsx b/shared/ui-components/src/page_components/listing/ListingDetailHeader.tsx index d026d05def..855878a10f 100644 --- a/shared/ui-components/src/page_components/listing/ListingDetailHeader.tsx +++ b/shared/ui-components/src/page_components/listing/ListingDetailHeader.tsx @@ -1,4 +1,5 @@ import * as React from "react" +import Icon from "../../atoms/Icon" export interface ListingDetailHeaderProps { imageAlt: string @@ -16,6 +17,7 @@ const ListingDetailHeader = (props: ListingDetailHeaderProps) => (

{props.title}

{props.subtitle} +
) diff --git a/shared/ui-components/src/page_components/listing/ListingDetails.tsx b/shared/ui-components/src/page_components/listing/ListingDetails.tsx index 4e839cbd79..d8794c6879 100644 --- a/shared/ui-components/src/page_components/listing/ListingDetails.tsx +++ b/shared/ui-components/src/page_components/listing/ListingDetails.tsx @@ -3,7 +3,7 @@ import { ResponsiveContentList, ResponsiveContentItem, ResponsiveContentItemHeader, - ResponsiveContentItemBody + ResponsiveContentItemBody, } from "../../lists/ResponsiveContentList/ResponsiveContentList" import ListingDetailHeader, { ListingDetailHeaderProps } from "./ListingDetailHeader" diff --git a/shared/ui-components/src/page_components/listing/ListingMap.scss b/shared/ui-components/src/page_components/listing/ListingMap.scss index 0b347d4f0d..b40bb3e4a2 100644 --- a/shared/ui-components/src/page_components/listing/ListingMap.scss +++ b/shared/ui-components/src/page_components/listing/ListingMap.scss @@ -1,9 +1,9 @@ .pin { + @apply absolute; width: 30px; height: 30px; border-radius: 50% 50% 50% 0; background: #89849b; - position: absolute; transform: rotate(-45deg); left: 50%; top: 50%; @@ -11,14 +11,15 @@ animation-name: bounce; animation-fill-mode: both; animation-duration: 1s; + &:after { + @apply absolute; + @apply rounded-full; content: ""; width: 14px; height: 14px; margin: 8px 0 0 8px; background: #2f2f2f; - position: absolute; - border-radius: 50%; } } @@ -26,10 +27,10 @@ @apply bg-white; @apply p-4; @apply shadow-md; - display: inline-block; - float: left; + @apply inline-block; + @apply float-left; + @apply relative; left: 15px; - position: relative; top: 15px; z-index: 1; } diff --git a/shared/ui-components/src/page_components/listing/ListingMap.stories.tsx b/shared/ui-components/src/page_components/listing/ListingMap.stories.tsx index baee2ea5bd..de36f52ce0 100644 --- a/shared/ui-components/src/page_components/listing/ListingMap.stories.tsx +++ b/shared/ui-components/src/page_components/listing/ListingMap.stories.tsx @@ -5,7 +5,7 @@ import Archer from "@bloom-housing/listings-service/listings/archer.json" export default { title: "Listing|Map", - decorators: [withA11y] + decorators: [withA11y], } const listing = Object.assign({}, Archer) as any diff --git a/shared/ui-components/src/page_components/listing/ListingMap.tsx b/shared/ui-components/src/page_components/listing/ListingMap.tsx index 2cdf0ebc5e..a75da6f054 100644 --- a/shared/ui-components/src/page_components/listing/ListingMap.tsx +++ b/shared/ui-components/src/page_components/listing/ListingMap.tsx @@ -1,10 +1,10 @@ import * as React from "react" import "mapbox-gl/dist/mapbox-gl.css" import ReactMapGL, { Marker } from "react-map-gl" -import { Address } from "@bloom-housing/core" +import { Address, Listing } from "@bloom-housing/core" import "./ListingMap.scss" import { MultiLineAddress } from "../../helpers/address" -import { Listing } from "@bloom-housing/core" + export interface ListingMapProps { address: Address listing: Listing @@ -23,7 +23,7 @@ const ListingMap = (props: ListingMapProps) => { const [viewport, setViewPort] = React.useState({ latitude: address.latitude, longitude: address.longitude, - zoom: 8 + zoom: 8, } as Viewport) const _onViewportChange = (viewport: Viewport) => { // width and height need to be set here to work properly with diff --git a/shared/ui-components/src/page_components/listing/ListingsGroup.scss b/shared/ui-components/src/page_components/listing/ListingsGroup.scss new file mode 100644 index 0000000000..7d9377fcb9 --- /dev/null +++ b/shared/ui-components/src/page_components/listing/ListingsGroup.scss @@ -0,0 +1,65 @@ +.listings-group { + @apply border-t; + @apply border-gray-450; + @apply mb-5; +} + +.listings-group__header { + @apply flex; + @apply flex-row; + @apply flex-wrap; + @apply max-w-5xl; + @apply m-auto; + @apply mt-6; + @apply mb-8; + @apply p-3; +} + +.listings-group__icon { + @apply hidden; + @apply pt-2; + @apply pr-5; + + @screen md { + @apply inline-block; + } +} + +.listings-group__header-group { + @apply w-full; + @apply flex; + @apply items-center; + @apply mb-4; + + @screen md { + @apply w-7/12; + @apply mb-0; + } +} + +.listings-group__button { + @apply w-full; + @apply flex; + @apply items-center; + + @screen md { + @apply w-4/12; + } +} + +.listings-group__title { + @apply uppercase; + @apply font-alt-sans; + @apply font-black; + @apply my-1; + @apply tracking-widest; + @apply border-b-4; + @apply border-gray-600; + @apply pb-1; + + @screen md { + @apply px-4; + @apply border-b-0; + @apply border-l-4; + } +} \ No newline at end of file diff --git a/shared/ui-components/src/page_components/listing/ListingsGroup.stories.tsx b/shared/ui-components/src/page_components/listing/ListingsGroup.stories.tsx index a92754ad81..efc487a309 100644 --- a/shared/ui-components/src/page_components/listing/ListingsGroup.stories.tsx +++ b/shared/ui-components/src/page_components/listing/ListingsGroup.stories.tsx @@ -7,7 +7,7 @@ import { Listing } from "@bloom-housing/core" export default { title: "PageComponents|ListingGroup", - decorators: [withA11y] + decorators: [withA11y], } const archer = Object.assign({}, Archer) as any diff --git a/shared/ui-components/src/page_components/listing/ListingsGroup.tsx b/shared/ui-components/src/page_components/listing/ListingsGroup.tsx index c8a62c603d..29c3168b01 100644 --- a/shared/ui-components/src/page_components/listing/ListingsGroup.tsx +++ b/shared/ui-components/src/page_components/listing/ListingsGroup.tsx @@ -3,6 +3,7 @@ import { Listing } from "@bloom-housing/core" import ListingsList from "./ListingsList" import Button from "../../atoms/Button" import Icon from "../../atoms/Icon" +import "./ListingsGroup.scss" export interface ListingsGroupProps { listings: Listing[] @@ -28,20 +29,16 @@ const ListingsGroup = (props: ListingsGroupProps) => { } return ( -
-
-
+
+
+
-
-
-

- {props.header} -

- {props.info &&
{props.info}
} -
+
+

{props.header}

+ {props.info &&
{props.info}
}
-
+
diff --git a/shared/ui-components/src/page_components/listing/ListingsList.scss b/shared/ui-components/src/page_components/listing/ListingsList.scss new file mode 100644 index 0000000000..b1a9c0f896 --- /dev/null +++ b/shared/ui-components/src/page_components/listing/ListingsList.scss @@ -0,0 +1,47 @@ +.listings-row { + @apply flex; + @apply flex-row; + @apply flex-wrap; + @apply max-w-5xl; + @apply m-auto; + @apply mb-12; + max-width: 48rem; + + &:first-of-type { + @apply mt-12; + } + + @screen lg { + @apply max-w-5xl; + } +} + +.listings-row_figure { + @apply w-full; + @apply p-3; + + @screen lg { + @apply w-6/12; + } +} + +.listings-row_content { + @apply w-full; + @apply p-3; + + @screen lg { + @apply w-6/12; + } +} + +.listings-row_title { + @apply font-alt-sans; + @apply font-semibold; + @apply text-gray-900; + @apply text-base; + @apply mb-2; +} + +.listings-row_table { + @apply mb-4; +} \ No newline at end of file diff --git a/shared/ui-components/src/page_components/listing/ListingsList.tsx b/shared/ui-components/src/page_components/listing/ListingsList.tsx index e03b98b55d..ab38c68e56 100644 --- a/shared/ui-components/src/page_components/listing/ListingsList.tsx +++ b/shared/ui-components/src/page_components/listing/ListingsList.tsx @@ -5,9 +5,10 @@ import LinkButton from "../../atoms/LinkButton" import { groupNonReservedAndReservedSummaries } from "../../helpers/tableSummaries" import { GroupedTable, - GroupedTableGroup + GroupedTableGroup, } from "@bloom-housing/ui-components/src/tables/GroupedTable" import t from "@bloom-housing/ui-components/src/helpers/translator" +import "./ListingsList.scss" export interface ListingsProps { listings: Listing[] @@ -21,7 +22,7 @@ const ListingsList = (props: ListingsProps) => { const unitSummariesHeaders = { unitType: t("t.unitType"), minimumIncome: t("t.minimumIncome"), - rent: t("t.rent") + rent: t("t.rent"), } let unitSummaries = [] as GroupedTableGroup[] @@ -33,8 +34,8 @@ const ListingsList = (props: ListingsProps) => { } return ( -
-
+
+
{ listing={listing} />
-
-

- {t("listings.waitlist.open")} -

-
+
+

{t("listings.waitlist.open")}

+
{unitSummaries && ( { /> )}
- + {t("label.seeDetails")}
diff --git a/shared/ui-components/src/page_components/listing/__snapshots__/ListingsGroup.stories.storyshot b/shared/ui-components/src/page_components/listing/__snapshots__/ListingsGroup.stories.storyshot index 05151e4ab1..ee776e9d85 100644 --- a/shared/ui-components/src/page_components/listing/__snapshots__/ListingsGroup.stories.storyshot +++ b/shared/ui-components/src/page_components/listing/__snapshots__/ListingsGroup.stories.storyshot @@ -1150,7 +1150,7 @@ exports[`Storyshots PageComponents|ListingGroup Show Listings Group 1`] = ` "annualIncomeMax": "103350.0", "annualIncomeMin": "58152.0", "createdAt": "2019-06-03T17:42:43.134Z", - "floor": 2, + "floor": null, "id": "jBMnzuaeffeq_X0qrWi3j", "listingId": "jsQvgvy6eJy56TNCFfQp8", "maxOccupancy": 2, @@ -1174,7 +1174,7 @@ exports[`Storyshots PageComponents|ListingGroup Show Listings Group 1`] = ` "annualIncomeMax": "160150.0", "annualIncomeMin": "85368.0", "createdAt": "2019-06-03T17:42:43.134Z", - "floor": 4, + "floor": null, "id": "Vrfp_MFTbvyc6GG_wduj5", "listingId": "jsQvgvy6eJy56TNCFfQp8", "maxOccupancy": 7, @@ -1204,13 +1204,13 @@ exports[`Storyshots PageComponents|ListingGroup Show Listings Group 1`] = ` showButtonText="Show" >
-
-

- Header -

-
+ Header +
+
+) + +export const AlertBoxAlertInvert = () => ( +
+ + + +

Some warning

+ +
+) + +export const AlertBoxNotice = () => ( +
+ + + +

Some warning

+ +
+) + +export const AlertBoxNoticeInvert = () => ( +
+ + + +

Some warning

+ +
+) + +export const AlertBoxSucucess = () => ( +
+ + + +

Some warning

+ +
+) + +export const AlertBoxSucucessInvert = () => ( +
+ + + +

Some warning

+ +
+) diff --git a/shared/ui-components/src/prototypes/AppCard.scss b/shared/ui-components/src/prototypes/AppCard.scss new file mode 100644 index 0000000000..dc7eb2394b --- /dev/null +++ b/shared/ui-components/src/prototypes/AppCard.scss @@ -0,0 +1,64 @@ +.app-card { + @apply p-0; + @apply mb-0; + @apply rounded-lg; + @apply border-solid; + @apply border; + @apply border-gray-450; +} + +.app-card__header, +.app-card__section { + @apply py-8; + @apply mx-8; +} + +.app-card__header { + @screen md { + @apply pb-4; + } + + &.border-bottom { + @apply border-solid; + @apply border-b; + @apply border-gray-450; + } +} + +.app-card__section { + +} + +.app-card__back { + @apply font-semibold; + @apply text-tiny; + @apply mb-4; +} + +.app-card__question { + @apply text-2xl; + @apply mb-2; + @apply text-center; +} + +.app-card__note { + @apply font-semibold; + @apply text-tiny; + @apply text-gray-700; + @apply pb-4; +} + +.app-card__sub-header { + @apply py-4; + @apply px-8; + @apply bg-gray-300; + @apply relative; + + .edit-link { + right: 2rem; + } +} + +.app-card__sub-title { + @apply mb-0; +} \ No newline at end of file diff --git a/shared/ui-components/src/prototypes/AppCard.stories.tsx b/shared/ui-components/src/prototypes/AppCard.stories.tsx new file mode 100644 index 0000000000..a66db2c066 --- /dev/null +++ b/shared/ui-components/src/prototypes/AppCard.stories.tsx @@ -0,0 +1,36 @@ +import React from "react" +import { withA11y } from "@storybook/addon-a11y" +import "./AppCard.scss" + +export default { + title: "Prototypes|AppCard", + decorators: [withA11y, (storyFn: any) =>
{storyFn()}
], +} + +export const AppCard = () => ( +
+
+ +

+ Who would you’d like us to contact if we can’t get ahold of you? +

+

+ By providing an alternate contact, you are allowing us to discuss information on your + application with them. +

+
+
+

You

+
+
+
+

Name

+

Laura Smith

+
+
+
+) diff --git a/shared/ui-components/src/prototypes/AppHeader.scss b/shared/ui-components/src/prototypes/AppHeader.scss new file mode 100644 index 0000000000..39a9911904 --- /dev/null +++ b/shared/ui-components/src/prototypes/AppHeader.scss @@ -0,0 +1,30 @@ +.app-header { + @apply bg-primary; + @apply text-white; + @apply border-solid; + @apply border; + @apply border-gray-450; + @apply text-center; + + @screen md { + @apply rounded-lg; + } +} + +.app-header_group { + @apply p-4; +} + +.app-header_title { + @apply text-lg; + @apply font-alt-sans; + @apply font-bold; + @apply uppercase; + @apply mb-0; +} + +.app-header_nav { + @apply p-4; + @apply bg-white; + @apply rounded-b-lg; +} \ No newline at end of file diff --git a/shared/ui-components/src/prototypes/AppHeader.stories.tsx b/shared/ui-components/src/prototypes/AppHeader.stories.tsx new file mode 100644 index 0000000000..ed770b6400 --- /dev/null +++ b/shared/ui-components/src/prototypes/AppHeader.stories.tsx @@ -0,0 +1,78 @@ +import React from "react" +import { withA11y } from "@storybook/addon-a11y" +import "./AppHeader.scss" +import ProgressNav from "./ProgressNav" + +export default { + title: "Prototypes|AppHeader", + decorators: [withA11y, (storyFn: any) =>
{storyFn()}
], +} + +export const AppHeader = () => ( +
+
+

Application: 123 Main St.

+
+
+ +
+
+) + +export const AppHeaderProgress = () => ( +
+
+

Application: 123 Main St.

+
+
+
+
    +
  1. + You +
  2. +
  3. + Household +
  4. +
  5. + Income +
  6. +
  7. + Preferences +
  8. +
  9. + Review +
  10. +
+
+
+
+) + +export const AppHeaderComplete = () => ( +
+
+

Application: 123 Main St.

+
+
+
+
    +
  1. + You +
  2. +
  3. + Household +
  4. +
  5. + Income +
  6. +
  7. + Preferences +
  8. +
  9. + Review +
  10. +
+
+
+
+) diff --git a/shared/ui-components/src/prototypes/AppStatusItem.scss b/shared/ui-components/src/prototypes/AppStatusItem.scss new file mode 100644 index 0000000000..acf10bcc5e --- /dev/null +++ b/shared/ui-components/src/prototypes/AppStatusItem.scss @@ -0,0 +1,139 @@ +.status-item { + @apply relative; + @apply text-sm; + @apply text-gray-800; + @apply border-b; + @apply border-solid; + @apply border-gray-450; + + &:last-of-type { + @apply border-b-0; + } + + &.is-editable { + @apply bg-primary-lighter; + } +} + +.status-item__inner { + @apply p-4; +} + +.status-item__header { + @apply py-2; + + @screen md { + @apply flex; + @apply mb-4; + @apply justify-between; + @apply border-b; + @apply border-solid; + @apply border-gray-450; + } +} + +.status-item__title { + @apply text-xl; + @apply font-alt-sans; + @apply tracking-wider; + @apply mb-0; + @apply uppercase; +} + +.status-item__due { + @screen md { + @apply text-right; + @apply self-center; + } +} + +.status-item__content { + @screen md { + @apply flex; + @apply justify-between; + } +} + +.status-item__details { + +} + +.status-item__action { + @apply text-center; + @apply pt-4; + @apply mb-4; + + @screen md { + @apply pt-0; + @apply text-right; + } +} + +.status-item__footer { + @apply text-center; + + @screen md { + @apply flex; + @apply justify-between; + @apply text-left; + } +} + +.status-item__links { + @apply pb-4; + + @screen md { + @apply pb-0; + } +} + +.status-item__meta { + @screen md { + @apply text-right; + } +} + +.status-item__status { + @apply mb-4; +} + +.status-item__label { + @apply relative; + + &.is-submitted, + &.is-past-due { + @apply pr-6; + + &:after { + @apply absolute; + @apply bg-lush; + @apply h-3; + @apply w-3; + @apply right-0; + @apply block; + @apply rounded-full; + top: 50%; + content: ''; + transform: translateY(-50%); + } + } + + &.is-past-due { + &:after { + @apply bg-alert; + } + } +} + +.status-item__link { + @apply mr-4; +} + +.status-item__date { + @apply text-sm; +} + +.status-item__address, +.status-item__number { + @apply mb-4; +} \ No newline at end of file diff --git a/shared/ui-components/src/prototypes/AppStatusItem.stories.tsx b/shared/ui-components/src/prototypes/AppStatusItem.stories.tsx new file mode 100644 index 0000000000..58d55790d4 --- /dev/null +++ b/shared/ui-components/src/prototypes/AppStatusItem.stories.tsx @@ -0,0 +1,133 @@ +import React from "react" +import { withA11y } from "@storybook/addon-a11y" +import "./AppStatusItem.scss" + +export default { + title: "Prototypes|AppStatusItem", + decorators: [withA11y, (storyFn: any) =>
{storyFn()}
], +} + +export const AppStatusItem = () => ( +
+
+
+

Potrero 1010

+

Application Deadline: January 12th 2016

+
+ +
+
+

+ 1010 16th Street +
Studio: 22 units, 1 Bedroom: 33 units 2 Bedroom: 38 units +

+
+ +
+

+ Status: In Progress +

+ + Continue Application + +
+
+ + +
+
+) + +export const AppStatusItemSubmitted = () => ( +
+
+
+

Potrero 1010

+

Application Deadline: January 12th 2016

+
+ +
+
+

+ 1010 16th Street +
Studio: 22 units, 1 Bedroom: 33 units 2 Bedroom: 38 units +

+

Your lottery number is #98AU18

+
+ +
+

+ Status: Submitted +

+ + View Application + +
+
+ + +
+
+) + +export const AppStatusItemPastDue = () => ( +
+
+
+

Potrero 1010

+

Application Deadline: January 12th 2016

+
+ +
+
+

+ 1010 16th Street +
Studio: 22 units, 1 Bedroom: 33 units 2 Bedroom: 38 units +

+

Your application was never submitted

+
+ +
+

+ Status: Never Submitted +

+
+
+ + +
+
+) diff --git a/shared/ui-components/src/prototypes/ButtonPager.scss b/shared/ui-components/src/prototypes/ButtonPager.scss new file mode 100644 index 0000000000..5cc1cb3870 --- /dev/null +++ b/shared/ui-components/src/prototypes/ButtonPager.scss @@ -0,0 +1,22 @@ +.button-pager { + @apply text-center; + + button, + .button { + @apply mb-0; + } +} + +.button-pager__row { + @apply py-2; + @apply px-8; + + @screen md { + @apply py-4; + } + + &.primary { + @apply bg-primary-lighter; + @apply pb-8; + } +} \ No newline at end of file diff --git a/shared/ui-components/src/prototypes/ButtonPager.stories.tsx b/shared/ui-components/src/prototypes/ButtonPager.stories.tsx new file mode 100644 index 0000000000..2bb979a044 --- /dev/null +++ b/shared/ui-components/src/prototypes/ButtonPager.stories.tsx @@ -0,0 +1,19 @@ +import React from "react" +import { withA11y } from "@storybook/addon-a11y" +import "./ButtonPager.scss" + +export default { + title: "Prototypes|ButtonPager", + decorators: [withA11y, (storyFn: any) =>
{storyFn()}
], +} + +export const ButtonPager = () => ( +
+
+ +
+
+ +
+
+) diff --git a/shared/ui-components/src/prototypes/DashBlocks.scss b/shared/ui-components/src/prototypes/DashBlocks.scss new file mode 100644 index 0000000000..081c311e7c --- /dev/null +++ b/shared/ui-components/src/prototypes/DashBlocks.scss @@ -0,0 +1,42 @@ +.dash-blocks { + @screen md { + @apply flex; + @apply flex-wrap; + } +} + +.dash-block { + @screen md { + @apply px-2; + flex: 50%; + } +} + +.dash-item { + @apply text-gray-800; + @apply border-solid; + @apply border-b; + @apply border-gray-450; + @apply text-center; + @apply block; + @apply bg-white; + @apply p-4; + @apply pt-8; + + @screen md { + @apply rounded-lg; + @apply border; + @apply p-8; + @apply mb-8; + } + + p { + @apply mb-0; + @apply text-sm; + } +} + +.dash-item__name { + @apply text-2xl; + @apply mb-3; +} \ No newline at end of file diff --git a/shared/ui-components/src/prototypes/DashBlocks.stories.tsx b/shared/ui-components/src/prototypes/DashBlocks.stories.tsx new file mode 100644 index 0000000000..f96febc22b --- /dev/null +++ b/shared/ui-components/src/prototypes/DashBlocks.stories.tsx @@ -0,0 +1,45 @@ +import React from "react" +import { withA11y } from "@storybook/addon-a11y" +import "./DashBlocks.scss" +import HeaderBadge from "./HeaderBadge" + +export default { + title: "Prototypes|DashBlocks", + decorators: [withA11y, (storyFn: any) =>
{storyFn()}
], +} + +export const DashBlocks = () => ( + +) diff --git a/shared/ui-components/src/prototypes/HeaderBadge.scss b/shared/ui-components/src/prototypes/HeaderBadge.scss new file mode 100644 index 0000000000..dfe58b5afb --- /dev/null +++ b/shared/ui-components/src/prototypes/HeaderBadge.scss @@ -0,0 +1,29 @@ +.header-badge { + @apply inline-block; + @apply p-4; + @apply pt-0; + @pply mb-4; + @apply border-solid; + @apply border-b-4; + @apply border-primary; + + @screen md { + @apply px-8; + @apply pb-4; + @apply mb-6; + } + + .ui-icon { + @apply inline-block; + } + + svg { + @apply h-10; + @apply w-10; + + @screen md { + @apply h-12; + @apply w-12; + } + } +} \ No newline at end of file diff --git a/shared/ui-components/src/prototypes/HeaderBadge.stories.tsx b/shared/ui-components/src/prototypes/HeaderBadge.stories.tsx new file mode 100644 index 0000000000..937dc6f612 --- /dev/null +++ b/shared/ui-components/src/prototypes/HeaderBadge.stories.tsx @@ -0,0 +1,10 @@ +import React from "react" +import { withA11y } from "@storybook/addon-a11y" +import HeaderBadge from "./HeaderBadge" + +export default { + title: "Prototypes|HeaderBadge", + decorators: [withA11y, (storyFn: any) =>
{storyFn()}
], +} + +export const withIcon = () => diff --git a/shared/ui-components/src/prototypes/HeaderBadge.tsx b/shared/ui-components/src/prototypes/HeaderBadge.tsx new file mode 100644 index 0000000000..88a5bde2ab --- /dev/null +++ b/shared/ui-components/src/prototypes/HeaderBadge.tsx @@ -0,0 +1,38 @@ +import * as React from "react" +import "./HeaderBadge.scss" + +const HeaderBadge = () => ( + + + application + + + + + + + + + + +) + +export { HeaderBadge as default, HeaderBadge } diff --git a/shared/ui-components/src/prototypes/ProgressNav.scss b/shared/ui-components/src/prototypes/ProgressNav.scss new file mode 100644 index 0000000000..36d0fdc50f --- /dev/null +++ b/shared/ui-components/src/prototypes/ProgressNav.scss @@ -0,0 +1,101 @@ +.progress-nav { + // @include clearfix; + @apply list-none; + @apply table; + @apply m-0; + @apply p-0; + @apply w-full; +} + +.progress-nav__item { + @apply text-xs; + @apply p-3; + @apply relative; + @apply text-center; + @apply uppercase; + @apply table-cell; + @apply whitespace-no-wrap; + @apply float-none; + max-width: 20%; + + @screen md { + @apply text-sm; + @apply p-0; + } + + &:before { + @apply absolute; + @apply h-3; + @apply w-3; + @apply bg-lush; + @apply border-solid; + @apply border; + @apply border-white; + @apply rounded-full; + @apply top-0; + left: 50%; + content: ""; + transform: translateX(-50%); + z-index: 2; + } + + &:after { + @apply absolute; + @apply bg-gray-450; + @apply w-full; + @apply left-0; + top: .4rem; + content: ""; + height: 1px; + } + + &:first-of-type { + &:after { + left: 50%; + } + } + + &:last-of-type { + &:after { + @apply left-auto; + right: 50%; + } + } + + &.is-active { + &:before { + @apply h-3; + @apply w-3; + @apply bg-primary; + @apply top-0; + } + + a { + @apply text-black; + @apply font-bold; + } + } + + &.is-disabled { + &:before { + @apply h-3; + @apply w-3; + @apply bg-gray-450; + @apply top-0; + } + + a { + @apply pointer-events-none; + @apply cursor-default; + } + } + + a { + @apply pt-4; + @apply pl-1; + @apply text-gray-700; + @apply block; + @apply relative; + z-index: 3; + } +} \ No newline at end of file diff --git a/shared/ui-components/src/prototypes/ProgressNav.stories.tsx b/shared/ui-components/src/prototypes/ProgressNav.stories.tsx new file mode 100644 index 0000000000..80e72f278c --- /dev/null +++ b/shared/ui-components/src/prototypes/ProgressNav.stories.tsx @@ -0,0 +1,10 @@ +import React from "react" +import { withA11y } from "@storybook/addon-a11y" +import ProgressNav from "./ProgressNav" + +export default { + title: "Prototypes|ProgressNav", + decorators: [withA11y, (storyFn: any) =>
{storyFn()}
], +} + +export const Default = () => diff --git a/shared/ui-components/src/prototypes/ProgressNav.tsx b/shared/ui-components/src/prototypes/ProgressNav.tsx new file mode 100644 index 0000000000..76f0066742 --- /dev/null +++ b/shared/ui-components/src/prototypes/ProgressNav.tsx @@ -0,0 +1,26 @@ +import * as React from "react" +import "./ProgressNav.scss" + +const ProgressNav = () => ( +
+
    +
  1. + You +
  2. +
  3. + Household +
  4. +
  5. + Income +
  6. +
  7. + Preferences +
  8. +
  9. + Review +
  10. +
+
+) + +export { ProgressNav as default, ProgressNav } diff --git a/shared/ui-components/src/prototypes/__snapshots__/AlertBox.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/AlertBox.stories.storyshot new file mode 100644 index 0000000000..24011793de --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/AlertBox.stories.storyshot @@ -0,0 +1,259 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|AlertBox Alert Box Alert 1`] = ` +
+
+ + + + + + + + + +

+ Some warning +

+ +
+
+`; + +exports[`Storyshots Prototypes|AlertBox Alert Box Alert Invert 1`] = ` +
+
+ + + + + + + + + +

+ Some warning +

+ +
+
+`; + +exports[`Storyshots Prototypes|AlertBox Alert Box Notice 1`] = ` +
+
+ + + + + + + + + +

+ Some warning +

+ +
+
+`; + +exports[`Storyshots Prototypes|AlertBox Alert Box Notice Invert 1`] = ` +
+
+ + + + + + + + + +

+ Some warning +

+ +
+
+`; + +exports[`Storyshots Prototypes|AlertBox Alert Box Sucucess 1`] = ` +
+
+ + + + + + + + + +

+ Some warning +

+ +
+
+`; + +exports[`Storyshots Prototypes|AlertBox Alert Box Sucucess Invert 1`] = ` +
+
+ + + + + + + + + +

+ Some warning +

+ +
+
+`; diff --git a/shared/ui-components/src/prototypes/__snapshots__/AppCard.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/AppCard.stories.storyshot new file mode 100644 index 0000000000..c51153feb0 --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/AppCard.stories.storyshot @@ -0,0 +1,67 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|AppCard App Card 1`] = ` +
+
+
+ +

+ Who would you’d like us to contact if we can’t get ahold of you? +

+

+ By providing an alternate contact, you are allowing us to discuss information on your application with them. +

+
+
+

+ You +

+
+
+
+

+ Name +

+

+ Laura Smith +

+
+
+
+
+`; diff --git a/shared/ui-components/src/prototypes/__snapshots__/AppHeader.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/AppHeader.stories.storyshot new file mode 100644 index 0000000000..90066c8bad --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/AppHeader.stories.storyshot @@ -0,0 +1,246 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|AppHeader App Header 1`] = ` +
+
+
+

+ Application: 123 Main St. +

+
+ +
+
+`; + +exports[`Storyshots Prototypes|AppHeader App Header Complete 1`] = ` +
+
+
+

+ Application: 123 Main St. +

+
+ +
+
+`; + +exports[`Storyshots Prototypes|AppHeader App Header Progress 1`] = ` +
+
+
+

+ Application: 123 Main St. +

+
+ +
+
+`; diff --git a/shared/ui-components/src/prototypes/__snapshots__/AppStatusItem.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/AppStatusItem.stories.storyshot new file mode 100644 index 0000000000..2dc48c6e86 --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/AppStatusItem.stories.storyshot @@ -0,0 +1,290 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|AppStatusItem App Status Item 1`] = ` +
+
+
+
+

+ Potrero 1010 +

+

+ Application Deadline: January 12th 2016 +

+
+
+
+

+ 1010 16th Street +
+ Studio: 22 units, 1 Bedroom: 33 units 2 Bedroom: 38 units +

+
+
+

+ + Status: In Progress + +

+ + Continue Application + +
+
+ +
+
+
+`; + +exports[`Storyshots Prototypes|AppStatusItem App Status Item Past Due 1`] = ` +
+
+
+
+

+ Potrero 1010 +

+

+ Application Deadline: January 12th 2016 +

+
+
+
+

+ 1010 16th Street +
+ Studio: 22 units, 1 Bedroom: 33 units 2 Bedroom: 38 units +

+

+ Your application was never submitted +

+
+
+

+ + Status: Never Submitted + +

+
+
+ +
+
+
+`; + +exports[`Storyshots Prototypes|AppStatusItem App Status Item Submitted 1`] = ` +
+
+
+
+

+ Potrero 1010 +

+

+ Application Deadline: January 12th 2016 +

+
+
+
+

+ 1010 16th Street +
+ Studio: 22 units, 1 Bedroom: 33 units 2 Bedroom: 38 units +

+

+ Your lottery number is #98AU18 +

+
+
+

+ + Status: Submitted + +

+ + View Application + +
+
+ +
+
+
+`; diff --git a/shared/ui-components/src/prototypes/__snapshots__/ButtonPager.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/ButtonPager.stories.storyshot new file mode 100644 index 0000000000..9ed2c3e540 --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/ButtonPager.stories.storyshot @@ -0,0 +1,34 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|ButtonPager Button Pager 1`] = ` +
+
+
+ +
+
+ +
+
+
+`; diff --git a/shared/ui-components/src/prototypes/__snapshots__/DashBlocks.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/DashBlocks.stories.storyshot new file mode 100644 index 0000000000..c1709e950c --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/DashBlocks.stories.storyshot @@ -0,0 +1,124 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|DashBlocks Dash Blocks 1`] = ` + +`; diff --git a/shared/ui-components/src/prototypes/__snapshots__/HeaderBadge.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/HeaderBadge.stories.storyshot new file mode 100644 index 0000000000..745ac4f2e4 --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/HeaderBadge.stories.storyshot @@ -0,0 +1,58 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|HeaderBadge With Icon 1`] = ` +
+ + + + + application + + + + + + + + + + + + +
+`; diff --git a/shared/ui-components/src/prototypes/__snapshots__/ProgressNav.stories.storyshot b/shared/ui-components/src/prototypes/__snapshots__/ProgressNav.stories.storyshot new file mode 100644 index 0000000000..90aebe3c3d --- /dev/null +++ b/shared/ui-components/src/prototypes/__snapshots__/ProgressNav.stories.storyshot @@ -0,0 +1,67 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Storyshots Prototypes|ProgressNav Default 1`] = ` + +`; diff --git a/shared/ui-components/src/sections/MarkdownSection.tsx b/shared/ui-components/src/sections/MarkdownSection.tsx index a6997526cf..e26d9c6894 100644 --- a/shared/ui-components/src/sections/MarkdownSection.tsx +++ b/shared/ui-components/src/sections/MarkdownSection.tsx @@ -9,7 +9,7 @@ export const MarkdownSection = (props: MarkdownSectionProps) => { const contentWidth = props.fullwidth ? "markdown" : "markdown max-w-2xl" return ( -
+
{props.children}
diff --git a/shared/ui-components/src/tables/BasicTable.tsx b/shared/ui-components/src/tables/BasicTable.tsx index 18e555e418..f3328c8fb5 100644 --- a/shared/ui-components/src/tables/BasicTable.tsx +++ b/shared/ui-components/src/tables/BasicTable.tsx @@ -33,14 +33,14 @@ export interface BasicTableProps { export const BasicTable = (props: BasicTableProps) => { const { headers, data, cellClassName } = props - const headerLabels = Object.values(headers).map(col => { + const headerLabels = Object.values(headers).map((col) => { const uniqKey = process.env.NODE_ENV === "test" ? "" : nanoid() return {col} }) const body = data.map((row: any) => { const rowKey = row["id"] || (process.env.NODE_ENV === "test" ? "" : nanoid()) - const cols = Object.keys(headers).map(colKey => { + const cols = Object.keys(headers).map((colKey) => { const uniqKey = process.env.NODE_ENV === "test" ? "" : nanoid() const header = headers[colKey] const cell = row[colKey] diff --git a/shared/ui-components/src/tables/GroupedTable.tsx b/shared/ui-components/src/tables/GroupedTable.tsx index f0c16a0941..e7ec87ef2f 100644 --- a/shared/ui-components/src/tables/GroupedTable.tsx +++ b/shared/ui-components/src/tables/GroupedTable.tsx @@ -15,7 +15,7 @@ export interface GroupedTableProps extends BasicTableProps { export const GroupedTable = (props: GroupedTableProps) => { const { headers, data, cellClassName } = props - const headerLabels = Object.values(headers).map(col => { + const headerLabels = Object.values(headers).map((col) => { const uniqKey = process.env.NODE_ENV === "test" ? "" : nanoid() return {col} }) @@ -45,7 +45,7 @@ export const GroupedTable = (props: GroupedTableProps) => { groupData.forEach((row: any) => { const rowKey = row["id"] || (process.env.NODE_ENV === "test" ? "" : nanoid()) - const cols = Object.keys(headers).map(colKey => { + const cols = Object.keys(headers).map((colKey) => { const uniqKey = process.env.NODE_ENV === "test" ? "" : nanoid() const header = headers[colKey] const cell = row[colKey] diff --git a/shared/ui-components/styles/accordion.scss b/shared/ui-components/styles/accordion.scss index f08cd0f724..f1e04395db 100644 --- a/shared/ui-components/styles/accordion.scss +++ b/shared/ui-components/styles/accordion.scss @@ -1,5 +1,4 @@ - .accordion__panel { @apply p-4; @apply border-b; -} \ No newline at end of file +} diff --git a/shared/ui-components/styles/custom_counter.scss b/shared/ui-components/styles/custom_counter.scss index e831f07276..15057bc564 100644 --- a/shared/ui-components/styles/custom_counter.scss +++ b/shared/ui-components/styles/custom_counter.scss @@ -1,33 +1,34 @@ - .custom-counter_item { @screen md { + @apply mb-12; + @apply ml-8; + @apply pl-12; + @apply relative; counter-increment: step-counter; - margin-bottom: 3rem; - margin-left: 2rem; - padding-left: 3rem; - position: relative; } } .custom-counter_item::before { @screen md { - position: absolute; - top: 0; + @apply absolute; + @apply font-serif; + @apply text-gray-850; + @apply top-0; left: -1rem; content: counter(step-counter); margin-right: 5px; - color: #333; font-size: 4.375rem; line-height: 0.85; - font-family: "Droid Serif", Georgia, Times, serif; } } .custom-counter_header { @screen md { - border-left: 2px solid #dedee0; - margin-bottom: 2rem; - margin-left: -1rem; - padding-left: 1rem; + @apply mb-8; + @apply -ml-4; + @apply pl-4; + @apply border-solid; + @apply border-l-2; + @apply border-gray-450; } } diff --git a/shared/ui-components/styles/forms.scss b/shared/ui-components/styles/forms.scss new file mode 100644 index 0000000000..25960f4097 --- /dev/null +++ b/shared/ui-components/styles/forms.scss @@ -0,0 +1,168 @@ +.field { + margin-bottom: 1.25rem; + * > &:last-child { + margin-bottom: 0; + } + label, + .label { + @apply text-gray-750; + font-size: 0.95rem; + } + label + .control { + @apply mt-2; + } + .control { + .input { + @apply border; + @apply border-gray-450; + @apply bg-gray-200; + @apply rounded; + @apply w-full; + @apply py-2; + @apply px-3; + @apply text-gray-900; + font-family: inherit; + font-size: 1rem; + line-height: normal; + } + &.control-narrower { + max-width: 8rem; + } + } + &.error { + label { + @apply text-red-700; + } + .control { + .input, + select { + @apply border-red-700; + } + } + .error-message { + @apply text-sm; + @apply text-red-700; + } + } + + input[type="checkbox"], + input[type="radio"] { + opacity: 0; + position: absolute; + margin-left: -20px; + + &:focus { + text-decoration: none; + // Appears to be for the case of no label + outline: none; + box-shadow: 0 0 0 2px #ffffff, 0 0 3px 4px $tailwind-primary; + } + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + cursor: pointer; + font-weight: 400; + margin-bottom: 0.5em; + margin-left: 0; + display: block; + } + + input[type="checkbox"] + label::before, + input[type="radio"] + label::before { + background: white; + border-radius: 4px; + box-shadow: 0 0 0 1px white, 0 0 0 2px map-get($tailwind-gray, 550); + content: "\a0"; + display: inline-block; + height: 1.25rem; + line-height: 0.8; + margin-right: 0.6em; + text-indent: 0.15em; + vertical-align: 0.2em; + width: 1.25rem; + } + + input[type="radio"] + label::before { + height: 1.2rem; + width: 1.2rem; + border-radius: 100%; + } + + input[type="checkbox"]:checked + label::before, + input[type="radio"]:checked + label::before { + background-color: $tailwind-primary; + box-shadow: 0 0 0 1px $tailwind-primary; + } + + input[type="radio"]:checked + label::before { + box-shadow: 0 0 0 1px white, 0 0 0 2px $tailwind-primary; + } + + input[type="checkbox"]:checked + label::before { + background-image: url("/images/check.png"); + background-image: url("/images/check.svg"); + background-position: 50%; + background-repeat: no-repeat; + } + + input[type="radio"]:focus + label::before, + input[type="checkbox"]:focus + label::before { + box-shadow: 0 0 0 1px white, 0 0 0 2px $tailwind-primary, 0 0 3px 4px $tailwind-primary; + } + + input[type="checkbox"]:disabled + label { + color: map-get($tailwind-gray, 600) !important; + } + + input[type="checkbox"]:disabled + label::before, + input[type="radio"]:disabled + label::before { + background: map-get($tailwind-gray, 550); + box-shadow: 0 0 0 1px map-get($tailwind-gray, 600); + cursor: not-allowed; + } + + select { + @apply text-gray-900; + @apply rounded; + @apply border; + @apply border-gray-450; + @apply bg-gray-200; + @apply text-gray-900; + @apply leading-tight; + @apply py-2; + @apply px-3; + font-family: inherit; + font-size: 1rem; + line-height: normal; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + background-image: url("/images/arrow-down.png"); + background-image: url("/images/arrow-down.svg"); + background-position: right 0.75rem center; + background-repeat: no-repeat; + background-size: 0.75rem; + padding-right: 2.25rem; + } +} + +.field--inline { + display: inline-block; +} +.field--inline + .field--inline { + margin-left: 1.5rem; +} + +.flex > .field { + @apply flex-auto; + padding-left: 1rem; + padding-right: 1rem; + + &:first-child { + padding-left: 0; + } + &:last-child { + padding-right: 0; + } +} diff --git a/shared/ui-components/styles/homepage.scss b/shared/ui-components/styles/homepage.scss index 7bf08ad9ee..512c8c414e 100644 --- a/shared/ui-components/styles/homepage.scss +++ b/shared/ui-components/styles/homepage.scss @@ -1,4 +1,8 @@ .homepage-extra { - font-size: 1.1rem; - text-align: center; -} \ No newline at end of file + @apply text-center; + @apply text-base; + + @screen md { + @apply text-lg; + } +} diff --git a/shared/ui-components/styles/index.scss b/shared/ui-components/styles/index.scss index 4ff82f1943..7baf2b72f6 100644 --- a/shared/ui-components/styles/index.scss +++ b/shared/ui-components/styles/index.scss @@ -6,7 +6,7 @@ @import url("https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic"); html { - -webkit-font-smoothing: antialiased; + @apply antialiased; } body { @@ -19,27 +19,25 @@ body { } main { - @apply border-gray-450; - @apply border-t; } // Sticky footer\ html { - height: 100%; + @apply h-full; body { - display: table; - height: 100%; - width: 100%; + @apply table; + @apply h-full; + @apply w-full; } .site-container { - display: table-row; - height: 100%; + @apply table-row; + @apply h-full; } .footer-section { - display: table-row; + @apply table-row; height: 1px; } } @@ -50,6 +48,7 @@ html { @import "text.scss"; @import "accordion.scss"; @import "custom_counter.scss"; +@import "forms.scss"; @import "lists.scss"; @import "tables.scss"; @import "homepage.scss"; diff --git a/shared/ui-components/styles/lists.scss b/shared/ui-components/styles/lists.scss index 59bb23ad35..f2e54478c5 100644 --- a/shared/ui-components/styles/lists.scss +++ b/shared/ui-components/styles/lists.scss @@ -36,6 +36,21 @@ @apply border-l-2; @apply border-primary; } + + .ui-icon { + @apply absolute; + top: 1rem; + right: 1rem; + + @screen md { + @apply hidden; + } + + svg { + @apply w-3; + @apply h-3; + } + } } .detail-header__title { @@ -71,16 +86,16 @@ @apply text-lg; @apply text-gray-800; @apply mb-3; - clear: left; + @apply clear-left; @screen md { - margin-top: 0.15rem; @apply pl-4; @apply border-l-2; @apply border-gray-450; @apply float-left; @apply w-1/3; @apply pr-3; + margin-top: 0.15rem; } } @@ -110,10 +125,11 @@ } .description__body { + @apply mb-4; + @screen md { padding-top: 0.4em; } - @apply mb-4; } // Box @@ -126,7 +142,7 @@ html, body { @screen md { - overflow-x: hidden; + @apply overflow-x-hidden; } } diff --git a/shared/ui-components/styles/markdown.scss b/shared/ui-components/styles/markdown.scss index c2a6f2be8c..9a847618af 100644 --- a/shared/ui-components/styles/markdown.scss +++ b/shared/ui-components/styles/markdown.scss @@ -1,21 +1,27 @@ .markdown { h3 { - font-size: 1.8rem; - margin-top: 2rem; - margin-bottom: 1.2rem; - @media (max-width: 767px) { - font-size: 1.4rem; + @apply mt-8; + @apply mb-5; + @apply text-3xl; + + @screen md { + @apply text-xl; } } + h3:first-child { - margin-top: 0; + @apply mt-0; } + hr { - margin-top: 2rem; - margin-bottom: 2rem; - border-bottom: 1px solid #ddd; + @apply mt-8; + @apply mb-8; + @apply border-b; + @apply border-solid; + @apply border-gray-450; } + p { - margin-bottom: 1rem; + @apply mb-4; } -} \ No newline at end of file +} diff --git a/shared/ui-components/styles/navbar.scss b/shared/ui-components/styles/navbar.scss index 50360acc1b..a3e9b2b1d0 100644 --- a/shared/ui-components/styles/navbar.scss +++ b/shared/ui-components/styles/navbar.scss @@ -15,12 +15,19 @@ @apply pt-2; @apply pb-2; @apply pr-1; - a, a:hover { + + a, + a:hover { + @apply underline; color: inherit; - text-decoration: underline; } } +.navbar__wrapper { + @apply border-b; + @apply border-gray-400; +} + // Custom Navbar Styles nav.navbar { @apply max-w-5xl; @@ -28,47 +35,45 @@ nav.navbar { } .navbar-brand .logo { - align-items: center; - justify-content: center; + @apply text-black; + @apply block; + @apply text-center; + @apply z-10; + @apply items-center; + @apply justify-center; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.25); + margin-bottom: -0.75rem; &.navbar-item, &.navbar-item:hover, &.navbar-item:focus { @apply bg-white; @apply border-b-0; - padding-top: 0.25rem; - padding-bottom: 0.25rem; - display: flex; + @apply pt-1; + @apply pb-1; + @apply pl-4; + @apply pr-4; + @apply flex; } - @apply text-black; - display: block; - text-align: center; - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.25); - margin-bottom: -0.75rem; - padding-top: .5em; - margin-right: 2rem; - z-index: 10; - @screen md { margin-top: -2.75em; padding-top: 1em; } .logo__lockup { - } .logo__image { - display: inline-block; + @apply inline-block; + @apply mt-1; + @apply mb-1; max-height: 1.5rem; - margin-bottom: 0.25rem; - margin-top: .25rem; @screen md { + @apply mt-3; + @apply mb-2; max-height: 2rem; - margin-bottom: 0.5rem; - margin-top: .75rem; } } @@ -78,37 +83,39 @@ nav.navbar { @apply text-gray-900; @apply font-alt-sans; @apply tracking-wider; - font-size: 13px; + @apply text-sm; @screen md { - font-size: 14px; + @apply text-tiny; } } } .navbar-item, .navbar-link { - padding-top: 0.25rem; - padding-bottom: 0.25rem; + @apply pt-1; + @apply pb-1; } a.navbar-item { - @apply text-sm; + @apply text-base; @apply text-gray-800; - @apply border-b-0; - @apply border-white; - padding-top: 1rem; - padding-bottom: 1rem; + @apply pt-4; + @apply pb-4; + @apply border-b; + @apply border-gray-400; &:hover { @apply bg-primary-lighter; } @screen md { + @apply text-sm; @apply border-b-2; @apply uppercase; - padding-top: 2.5rem; - padding-bottom: .85rem; + @apply pt-10; + @apply pb-3; + border-color: transparent; &:hover { @apply bg-white; @@ -129,12 +136,7 @@ a.navbar-item { } .navbar-menu { - padding: 0; - - @screen md { - padding-top: .5; - padding-bottom: .5; - } + @apply p-0; } .navbar-end { diff --git a/shared/ui-components/styles/tables.scss b/shared/ui-components/styles/tables.scss index 11ad285bf0..b589ccd9af 100644 --- a/shared/ui-components/styles/tables.scss +++ b/shared/ui-components/styles/tables.scss @@ -15,28 +15,32 @@ table tr:nth-of-type(even) { } td.reserved { - padding-top: 9px; - padding-bottom: 9px; - border-bottom: 1px solid $tailwind-splash; - background-color: $tailwind-splash-bg; - font-size: 0.6875rem; - line-height: 1.25; - color: #555; - font-family: "Open Sans", Helvetica, Arial, Verdana, sans-serif; - font-weight: 700; - letter-spacing: 0.1rem; - text-transform: uppercase; - border-top: 1px solid $tailwind-splash; - border-left: 0.4rem solid $tailwind-splash; - padding-left: 1em; + @apply font-sans; + @apply font-bold; + @apply uppercase; + @apply text-2xs; + @apply leading-tight; + @apply py-2; + @apply text-gray-750; + @apply bg-splash-bg; + @apply tracking-widest; + @apply pl-2; + @apply border-l-8; + @apply border-b; + @apply border-t; + @apply border-solid; + @apply border-splash; .reserved-icon { - color: $tailwind-splash; - font-size: 0.9rem; + @apply text-splash; + @apply text-sm; } } + tr.group-reserved td:first-of-type { - border-left: 0.4rem solid $tailwind-splash; + @apply border-l-8; + @apply border-solid; + @apply border-splash; } /* Hat tip to this CSS solution: @@ -45,37 +49,42 @@ https://www.cssscript.com/pure-html5-css3-responsive-table-solution/ */ @media screen and (max-width: 639px) { table.responsive-collapse { thead { - display: none; + @apply hidden; } + tr { - display: block; - margin-bottom: 1.75em; + @apply block; + @apply mb-6; } + tr:nth-of-type(even) { background: inherit; } + td:nth-of-type(even) { @apply bg-primary-lighter; } td { - display: block; - text-align: right; + @apply block; + @apply text-right; } td:before { + @apply font-bold; + @apply uppercase; + @apply float-left; content: attr(data-label); - float: left; - font-weight: bold; - text-transform: uppercase; } td:last-child { - border-bottom: 0; + @apply border-b-0; } } tr.group-reserved td { - border-left: 0.4rem solid #ff6627; + @apply border-l-8; + @apply border-solid; + @apply border-splash; } } diff --git a/shared/ui-components/styles/text.scss b/shared/ui-components/styles/text.scss index 0a5aa08873..dfaec2b0f9 100644 --- a/shared/ui-components/styles/text.scss +++ b/shared/ui-components/styles/text.scss @@ -43,13 +43,20 @@ h6 { @apply text-base; } - a { @apply text-primary; - + &:hover { @apply text-primary; } + + &.lined { + @apply underline; + } + + &.alert { + @apply text-alert; + } } h1.title { @@ -98,30 +105,30 @@ h1.title { } details.disclosure { - position: relative; + @apply relative; min-height: 3em; &[open] { - margin-bottom: 4em; + @apply mb-16; } & > summary { @apply text-primary; - - padding: 0 3px 6px 0; - list-style: none; - position: absolute; - bottom: 0; - outline: none; - cursor: pointer; + @apply absolute; + @apply list-none; + @apply outline-none; + @apply cursor-pointer; + @apply bottom-0; + @apply pr-1; + @apply pb-2; &:after { - font-size: 0.8em; + @apply font-bold; + @apply inline-block; + @apply ml-2; + @apply text-sm; content: "⌃"; - font-weight: bold; - margin-left: 7px; transform: rotate(180deg) translateY(3px); - display: inline-block; } } @@ -134,11 +141,28 @@ details.disclosure { } & > summary::-webkit-details-marker { - display: none; + @apply hidden; } p { - margin-top: 1em; - margin-bottom: 1em; + @apply my-4; } -} \ No newline at end of file +} + +.info-item { + @apply relative; + @apply text-sm; +} + +.info-item__name { + @apply text-gray-800; + @apply font-sans; + @apply text-sm; +} + +.info-item__value { + @apply uppercase; + @apply font-alt-sans; + @apply font-bold; + @apply tracking-wide; +} diff --git a/shared/ui-components/tailwind.config.js b/shared/ui-components/tailwind.config.js index 5e7fc818a6..60043bec10 100644 --- a/shared/ui-components/tailwind.config.js +++ b/shared/ui-components/tailwind.config.js @@ -6,7 +6,7 @@ module.exports = { sm: "640px", md: "768px", lg: "1200px", - xl: "1280px" + xl: "1280px", }, fontSize: { "2xs": ".6875rem", @@ -21,12 +21,12 @@ module.exports = { "4xl": "2rem", "5xl": "2.5rem", "6xl": "3rem", - "7xl": "4.5rem" + "7xl": "4.5rem", }, fontFamily: { sans: ["Open Sans", "Helvetica", "Arial", "Verdana", "sans-serif"], serif: ["Droid Serif", "Georgia", "Times", "serif"], - "alt-sans": ["Lato", "Helvetica", "Arial", "Verdana", "sans-serif"] + "alt-sans": ["Lato", "Helvetica", "Arial", "Verdana", "sans-serif"], }, colors: { primary: "#0077DA", @@ -57,23 +57,23 @@ module.exports = { "700": "#0067be", "600": "#0077DA", "300": "#DAEEFF", - "200": "#F5F8F9" + "200": "#F5F8F9", }, red: { "700": "#E41D3D", - "300": "#F9D2D8" + "300": "#F9D2D8", }, yellow: { "700": "#FDB81E", - "300": "#FEE8B6" + "300": "#FEE8B6", }, green: { "700": "#2E8540", - "300": "#B4E5BE" + "300": "#B4E5BE", }, teal: { "700": "#2E8540", - "300": "#B4E5BE" + "300": "#B4E5BE", }, gray: { "950": "#242C2E", @@ -89,8 +89,8 @@ module.exports = { "400": "#EFEFEF", "300": "#F6F6F6", "200": "#F7F7F7", - "100": "#F9F9F9" - } + "100": "#F9F9F9", + }, }, letterSpacing: { tightest: "-.075em", @@ -99,7 +99,7 @@ module.exports = { normal: "0", wide: ".025em", wider: ".05em", - widest: ".2em" - } - } + widest: ".12em", + }, + }, } diff --git a/shared/ui-components/tailwind.tosass.js b/shared/ui-components/tailwind.tosass.js index fa83e55158..4a7fdcdfd5 100644 --- a/shared/ui-components/tailwind.tosass.js +++ b/shared/ui-components/tailwind.tosass.js @@ -1,12 +1,28 @@ /* eslint-env node */ -const tailwindToSassVars = bloomTheme => { - const bloomColorVars = Object.keys(bloomTheme.theme.colors).map(colorKey => { - return "$tailwind-" + colorKey + ": " + bloomTheme.theme.colors[colorKey] + ";" +const tailwindToSassVars = (bloomTheme) => { + const bloomColorVars = Object.keys(bloomTheme.theme.colors).map((colorKey) => { + if (typeof bloomTheme.theme.colors[colorKey] == "object") { + // create a map varaible that can be used by the map-get SCSS function + let colorMap = "$tailwind-" + colorKey + ": (" + colorMap += Object.keys(bloomTheme.theme.colors[colorKey]) + .map((colorMapKey) => { + return `${colorMapKey}: ${bloomTheme.theme.colors[colorKey][colorMapKey]}` + }) + .join(", ") + return colorMap + ");" + } else { + // return a simple variable + return "$tailwind-" + colorKey + ": " + bloomTheme.theme.colors[colorKey] + ";" + } }) - const bloomScreenVars = Object.keys(bloomTheme.theme.screens).map(screenKey => { + const bloomScreenVars = Object.keys(bloomTheme.theme.screens).map((screenKey) => { return "$tailwind-screens-" + screenKey + ": " + bloomTheme.theme.screens[screenKey] + ";" }) + + // Uncomment this if you want to debug: + // console.log(bloomColorVars.concat(bloomScreenVars).join("\n")) + return bloomColorVars.concat(bloomScreenVars).join("\n") } diff --git a/yarn.lock b/yarn.lock index a32c72bad7..7fb52a8c96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -327,6 +327,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -365,6 +370,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/parser@^7.8.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== + "@babel/plugin-proposal-async-generator-functions@^7.7.0", "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" @@ -478,20 +488,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-bigint@^7.0.0": +"@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" @@ -513,7 +530,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== @@ -534,13 +551,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" + integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread@7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.0.tgz#9b37d580d459682364d8602494c69145b394fd4c" @@ -548,21 +579,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.7.4", "@babel/plugin-syntax-optional-chaining@^7.8.0": +"@babel/plugin-syntax-optional-chaining@^7.7.4", "@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -1123,6 +1154,15 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/template@^7.3.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + "@babel/template@^7.4.0", "@babel/template@^7.7.0", "@babel/template@^7.7.4", "@babel/template@^7.8.0", "@babel/template@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" @@ -1171,6 +1211,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.3.3", "@babel/types@^7.8.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" @@ -1204,6 +1253,32 @@ date-fns "^1.27.2" figures "^1.7.0" +"@cypress/request@2.88.5": + version "2.88.5" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" + integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + "@cypress/xvfb@1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" @@ -1319,6 +1394,80 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@evocateur/libnpmaccess@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" + integrity sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + +"@evocateur/libnpmpublish@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a" + integrity sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + semver "^5.5.1" + ssri "^6.0.1" + +"@evocateur/npm-registry-fetch@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66" + integrity sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.1.2" + +"@evocateur/pacote@^9.6.3": + version "9.6.5" + resolved "https://registry.yarnpkg.com/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5" + integrity sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + bluebird "^3.5.3" + cacache "^12.0.3" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.5.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.4.4" + npm-pick-manifest "^3.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.3" + safe-buffer "^5.2.0" + semver "^5.7.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" + "@hapi/address@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-4.0.1.tgz#267301ddf7bc453718377a6fb3832a2f04a721dd" @@ -1336,7 +1485,7 @@ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010" integrity sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw== -"@hapi/joi@^17.1.0": +"@hapi/joi@^17.1.1": version "17.1.1" resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-17.1.1.tgz#9cc8d7e2c2213d1e46708c6260184b447c661350" integrity sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg== @@ -1383,43 +1532,44 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.2.3.tgz#38ac19b916ff61457173799239472659e1a67c39" - integrity sha512-k+37B1aSvOt9tKHWbZZSOy1jdgzesB0bj96igCVUG1nAH1W5EoUfgc5EXbBVU08KSLvkVdWopLXaO3xfVGlxtQ== +"@jest/console@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" + integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== dependencies: - "@jest/source-map" "^25.2.1" + "@jest/types" "^25.5.0" chalk "^3.0.0" - jest-util "^25.2.3" + jest-message-util "^25.5.0" + jest-util "^25.5.0" slash "^3.0.0" -"@jest/core@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.2.3.tgz#2fd37ce0e6ad845e058dcd8245f2745490df1bc0" - integrity sha512-Ifz3aEkGvZhwijLMmWa7sloZVEMdxpzjFv3CKHv3eRYRShTN8no6DmyvvxaZBjLalOlRalJ7HDgc733J48tSuw== +"@jest/core@^25.5.4": + version "25.5.4" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4" + integrity sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA== dependencies: - "@jest/console" "^25.2.3" - "@jest/reporters" "^25.2.3" - "@jest/test-result" "^25.2.3" - "@jest/transform" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/console" "^25.5.0" + "@jest/reporters" "^25.5.1" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" ansi-escapes "^4.2.1" chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-changed-files "^25.2.3" - jest-config "^25.2.3" - jest-haste-map "^25.2.3" - jest-message-util "^25.2.3" - jest-regex-util "^25.2.1" - jest-resolve "^25.2.3" - jest-resolve-dependencies "^25.2.3" - jest-runner "^25.2.3" - jest-runtime "^25.2.3" - jest-snapshot "^25.2.3" - jest-util "^25.2.3" - jest-validate "^25.2.3" - jest-watcher "^25.2.3" + graceful-fs "^4.2.4" + jest-changed-files "^25.5.0" + jest-config "^25.5.4" + jest-haste-map "^25.5.1" + jest-message-util "^25.5.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-resolve-dependencies "^25.5.4" + jest-runner "^25.5.4" + jest-runtime "^25.5.4" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" + jest-watcher "^25.5.0" micromatch "^4.0.2" p-each-series "^2.1.0" realpath-native "^2.0.0" @@ -1427,14 +1577,14 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.2.3.tgz#32b3f216355b03e9449b93b62584c18934a2cc4a" - integrity sha512-zRypAMQnNo8rD0rCbI9+5xf+Lu+uvunKZNBcIWjb3lTATSomKbgYO+GYewGDYn7pf+30XCNBc6SH1rnBUN1ioA== +"@jest/environment@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" + integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== dependencies: - "@jest/fake-timers" "^25.2.3" - "@jest/types" "^25.2.3" - jest-mock "^25.2.3" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" "@jest/fake-timers@^24.9.0": version "24.9.0" @@ -1445,45 +1595,55 @@ jest-message-util "^24.9.0" jest-mock "^24.9.0" -"@jest/fake-timers@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.2.3.tgz#808a8a761be3baac719311f8bde1362bd1861e65" - integrity sha512-B6Qxm86fl613MV8egfvh1mRTMu23hMNdOUjzPhKl/4Nm5cceHz6nwLn0nP0sJXI/ue1vu71aLbtkgVBCgc2hYA== +"@jest/fake-timers@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" + integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== dependencies: - "@jest/types" "^25.2.3" - jest-message-util "^25.2.3" - jest-mock "^25.2.3" - jest-util "^25.2.3" + "@jest/types" "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" lolex "^5.0.0" -"@jest/reporters@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.2.3.tgz#824e922ea56686d0243c910559c36adacdd2081c" - integrity sha512-S0Zca5e7tTfGgxGRvBh6hktNdOBzqc6HthPzYHPRFYVW81SyzCqHTaNZydtDIVehb9s6NlyYZpcF/I2vco+lNw== +"@jest/globals@^25.5.2": + version "25.5.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" + integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/types" "^25.5.0" + expect "^25.5.0" + +"@jest/reporters@^25.5.1": + version "25.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" + integrity sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.2.3" - "@jest/test-result" "^25.2.3" - "@jest/transform" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/console" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" + graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^4.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.0" - jest-haste-map "^25.2.3" - jest-resolve "^25.2.3" - jest-util "^25.2.3" - jest-worker "^25.2.1" + istanbul-reports "^3.0.2" + jest-haste-map "^25.5.1" + jest-resolve "^25.5.1" + jest-util "^25.5.0" + jest-worker "^25.5.0" slash "^3.0.0" source-map "^0.6.0" string-length "^3.1.0" terminal-link "^2.0.0" - v8-to-istanbul "^4.0.1" + v8-to-istanbul "^4.1.3" optionalDependencies: node-notifier "^6.0.0" @@ -1496,13 +1656,13 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/source-map@^25.2.1": - version "25.2.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.1.tgz#b62ecf8ae76170b08eff8859b56eb7576df34ab8" - integrity sha512-PgScGJm1U27+9Te/cxP4oUFqJ2PX6NhBL2a6unQ7yafCgs8k02c0LSyjSIx/ao0AwcAdCczfAPDf5lJ7zoB/7A== +"@jest/source-map@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" + integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.3" + graceful-fs "^4.2.4" source-map "^0.6.0" "@jest/test-result@^24.9.0": @@ -1514,26 +1674,26 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.2.3.tgz#db6028427514702c739dda66528dfbcc7fb8cdf4" - integrity sha512-cNYidqERTcT+xqZZ5FPSvji7Bd2YYq9M/VJCEUmgTVRFZRPOPSu65crEzQJ4czcDChEJ9ovzZ65r3UBlajnh3w== +"@jest/test-result@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" + integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== dependencies: - "@jest/console" "^25.2.3" - "@jest/transform" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/console" "^25.5.0" + "@jest/types" "^25.5.0" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.2.3.tgz#1400e0e994904844567e6e33c87062cbdf1f3e99" - integrity sha512-trHwV/wCrxWyZyNyNBUQExsaHyBVQxJwH3butpEcR+KBJPfaTUxtpXaxfs38IXXAhH68J4kPZgAaRRfkFTLunA== +"@jest/test-sequencer@^25.5.4": + version "25.5.4" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" + integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA== dependencies: - "@jest/test-result" "^25.2.3" - jest-haste-map "^25.2.3" - jest-runner "^25.2.3" - jest-runtime "^25.2.3" + "@jest/test-result" "^25.5.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.1" + jest-runner "^25.5.4" + jest-runtime "^25.5.4" "@jest/transform@^24.9.0": version "24.9.0" @@ -1557,21 +1717,21 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/transform@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.2.3.tgz#f090bdd91f54b867631a76959f2b2fc566534ffe" - integrity sha512-w1nfAuYP4OAiEDprFkE/2iwU86jL/hK3j1ylMcYOA3my5VOHqX0oeBcBxS2fUKWse2V4izuO2jqes0yNTDMlzw== +"@jest/transform@^25.5.1": + version "25.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" + integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" babel-plugin-istanbul "^6.0.0" chalk "^3.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.2.3" - jest-regex-util "^25.2.1" - jest-util "^25.2.3" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.1" + jest-regex-util "^25.2.6" + jest-util "^25.5.0" micromatch "^4.0.2" pirates "^4.0.1" realpath-native "^2.0.0" @@ -1588,20 +1748,10 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@jest/types@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395" - integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.2.3.tgz#035c4fb94e2da472f359ff9a211915d59987f6b6" - integrity sha512-6oLQwO9mKif3Uph3RX5J1i3S7X7xtDHWBaaaoeKw8hOzV6YUd0qDcYcHZ6QXMHDIzSr7zzrEa51o2Ovlj6AtKQ== +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" @@ -1615,6 +1765,691 @@ dependencies: vary "^1.1.2" +"@lerna/add@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" + integrity sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/bootstrap" "3.21.0" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + npm-package-arg "^6.1.0" + p-map "^2.1.0" + semver "^6.2.0" + +"@lerna/bootstrap@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6" + integrity sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/has-npm-version" "3.16.5" + "@lerna/npm-install" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/symlink-binary" "3.17.0" + "@lerna/symlink-dependencies" "3.17.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + get-port "^4.2.0" + multimatch "^3.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + read-package-tree "^5.1.6" + semver "^6.2.0" + +"@lerna/changed@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b" + integrity sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/check-working-tree@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa" + integrity sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ== + dependencies: + "@lerna/collect-uncommitted" "3.16.5" + "@lerna/describe-ref" "3.16.5" + "@lerna/validation-error" "3.13.0" + +"@lerna/child-process@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2" + integrity sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg== + dependencies: + chalk "^2.3.1" + execa "^1.0.0" + strong-log-transformer "^2.0.0" + +"@lerna/clean@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d" + integrity sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + +"@lerna/cli@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242" + integrity sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA== + dependencies: + "@lerna/global-options" "3.13.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^14.2.2" + +"@lerna/collect-uncommitted@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63" + integrity sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg== + dependencies: + "@lerna/child-process" "3.16.5" + chalk "^2.3.1" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/collect-updates@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1" + integrity sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/describe-ref" "3.16.5" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^2.0.0" + +"@lerna/command@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7" + integrity sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/project" "3.21.0" + "@lerna/validation-error" "3.13.0" + "@lerna/write-log-file" "3.13.0" + clone-deep "^4.0.1" + dedent "^0.7.0" + execa "^1.0.0" + is-ci "^2.0.0" + npmlog "^4.1.2" + +"@lerna/conventional-commits@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.18.5.tgz#08efd2e5b45acfaf3f151a53a3ec7ecade58a7bc" + integrity sha512-qcvXIEJ3qSgalxXnQ7Yxp5H9Ta5TVyai6vEor6AAEHc20WiO7UIdbLDCxBtiiHMdGdpH85dTYlsoYUwsCJu3HQ== + dependencies: + "@lerna/validation-error" "3.13.0" + conventional-changelog-angular "^5.0.3" + conventional-changelog-core "^3.1.6" + conventional-recommended-bump "^5.0.0" + fs-extra "^8.1.0" + get-stream "^4.0.0" + lodash.template "^4.5.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + semver "^6.2.0" + +"@lerna/create-symlink@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967" + integrity sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw== + dependencies: + "@zkochan/cmd-shim" "^3.1.0" + fs-extra "^8.1.0" + npmlog "^4.1.2" + +"@lerna/create@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.21.0.tgz#e813832adf3488728b139e5a75c8b01b1372e62f" + integrity sha512-cRIopzKzE2vXJPmsiwCDMWo4Ct+KTmX3nvvkQLDoQNrrRK7w+3KQT3iiorbj1koD95RsVQA7mS2haWok9SIv0g== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + camelcase "^5.0.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + globby "^9.2.0" + init-package-json "^1.10.3" + npm-package-arg "^6.1.0" + p-reduce "^1.0.0" + pify "^4.0.1" + semver "^6.2.0" + slash "^2.0.0" + validate-npm-package-license "^3.0.3" + validate-npm-package-name "^3.0.0" + whatwg-url "^7.0.0" + +"@lerna/describe-ref@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0" + integrity sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw== + dependencies: + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + +"@lerna/diff@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d" + integrity sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + +"@lerna/exec@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26" + integrity sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/filter-options@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b" + integrity sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/filter-packages" "3.18.0" + dedent "^0.7.0" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/filter-packages@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70" + integrity sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ== + dependencies: + "@lerna/validation-error" "3.13.0" + multimatch "^3.0.0" + npmlog "^4.1.2" + +"@lerna/get-npm-exec-opts@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" + integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== + dependencies: + npmlog "^4.1.2" + +"@lerna/get-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff" + integrity sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw== + dependencies: + fs-extra "^8.1.0" + ssri "^6.0.1" + tar "^4.4.8" + +"@lerna/github-client@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.16.5.tgz#2eb0235c3bf7a7e5d92d73e09b3761ab21f35c2e" + integrity sha512-rHQdn8Dv/CJrO3VouOP66zAcJzrHsm+wFuZ4uGAai2At2NkgKH+tpNhQy2H1PSC0Ezj9LxvdaHYrUzULqVK5Hw== + dependencies: + "@lerna/child-process" "3.16.5" + "@octokit/plugin-enterprise-rest" "^3.6.1" + "@octokit/rest" "^16.28.4" + git-url-parse "^11.1.2" + npmlog "^4.1.2" + +"@lerna/gitlab-client@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6" + integrity sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q== + dependencies: + node-fetch "^2.5.0" + npmlog "^4.1.2" + whatwg-url "^7.0.0" + +"@lerna/global-options@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" + integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== + +"@lerna/has-npm-version@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326" + integrity sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q== + dependencies: + "@lerna/child-process" "3.16.5" + semver "^6.2.0" + +"@lerna/import@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.21.0.tgz#87b08f2a2bfeeff7357c6fd8490e638d3cd5b32d" + integrity sha512-aISkL4XD0Dqf5asDaOZWu65jgj8fWUhuQseZWuQe3UfHxav69fTS2YLIngUfencaOSZVOcVCom28YCzp61YDxw== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + p-map-series "^1.0.0" + +"@lerna/info@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f" + integrity sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/output" "3.13.0" + envinfo "^7.3.1" + +"@lerna/init@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c" + integrity sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + write-json-file "^3.2.0" + +"@lerna/link@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b" + integrity sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/package-graph" "3.18.5" + "@lerna/symlink-dependencies" "3.17.0" + p-map "^2.1.0" + slash "^2.0.0" + +"@lerna/list@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2" + integrity sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/listable@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a" + integrity sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg== + dependencies: + "@lerna/query-graph" "3.18.5" + chalk "^2.3.1" + columnify "^1.5.4" + +"@lerna/log-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16" + integrity sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ== + dependencies: + byte-size "^5.0.1" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" + +"@lerna/npm-conf@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827" + integrity sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA== + dependencies: + config-chain "^1.1.11" + pify "^4.0.1" + +"@lerna/npm-dist-tag@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55" + integrity sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + "@lerna/otplease" "3.18.5" + figgy-pudding "^3.5.1" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + +"@lerna/npm-install@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3" + integrity sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.2" + write-pkg "^3.1.0" + +"@lerna/npm-publish@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af" + integrity sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg== + dependencies: + "@evocateur/libnpmpublish" "^1.2.2" + "@lerna/otplease" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + read-package-json "^2.0.13" + +"@lerna/npm-run-script@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15" + integrity sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + npmlog "^4.1.2" + +"@lerna/otplease@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231" + integrity sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog== + dependencies: + "@lerna/prompt" "3.18.5" + figgy-pudding "^3.5.1" + +"@lerna/output@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" + integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== + dependencies: + npmlog "^4.1.2" + +"@lerna/pack-directory@3.16.4": + version "3.16.4" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693" + integrity sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng== + dependencies: + "@lerna/get-packed" "3.16.0" + "@lerna/package" "3.16.0" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + npm-packlist "^1.4.4" + npmlog "^4.1.2" + tar "^4.4.10" + temp-write "^3.4.0" + +"@lerna/package-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b" + integrity sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA== + dependencies: + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/validation-error" "3.13.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + semver "^6.2.0" + +"@lerna/package@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" + integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw== + dependencies: + load-json-file "^5.3.0" + npm-package-arg "^6.1.0" + write-pkg "^3.1.0" + +"@lerna/prerelease-id-from-version@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1" + integrity sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA== + dependencies: + semver "^6.2.0" + +"@lerna/profiler@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051" + integrity sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg== + dependencies: + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npmlog "^4.1.2" + upath "^1.2.0" + +"@lerna/project@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" + integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A== + dependencies: + "@lerna/package" "3.16.0" + "@lerna/validation-error" "3.13.0" + cosmiconfig "^5.1.0" + dedent "^0.7.0" + dot-prop "^4.2.0" + glob-parent "^5.0.0" + globby "^9.2.0" + load-json-file "^5.3.0" + npmlog "^4.1.2" + p-map "^2.1.0" + resolve-from "^4.0.0" + write-json-file "^3.2.0" + +"@lerna/prompt@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1" + integrity sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ== + dependencies: + inquirer "^6.2.0" + npmlog "^4.1.2" + +"@lerna/publish@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.21.0.tgz#0112393125f000484c3f50caba71a547f91bd7f4" + integrity sha512-JZ+ehZB9UCQ9nqH8Ld/Yqc/If++aK/7XIubkrB9sQ5hf2GeIbmI/BrJpMgLW/e9T5bKrUBZPUvoUN3daVipA5A== + dependencies: + "@evocateur/libnpmaccess" "^3.1.2" + "@evocateur/npm-registry-fetch" "^4.0.0" + "@evocateur/pacote" "^9.6.3" + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/describe-ref" "3.16.5" + "@lerna/log-packed" "3.16.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/npm-dist-tag" "3.18.5" + "@lerna/npm-publish" "3.18.5" + "@lerna/otplease" "3.18.5" + "@lerna/output" "3.13.0" + "@lerna/pack-directory" "3.16.4" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + "@lerna/version" "3.21.0" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-pipe "^1.2.0" + semver "^6.2.0" + +"@lerna/pulse-till-done@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" + integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== + dependencies: + npmlog "^4.1.2" + +"@lerna/query-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86" + integrity sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA== + dependencies: + "@lerna/package-graph" "3.18.5" + figgy-pudding "^3.5.1" + +"@lerna/resolve-symlink@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386" + integrity sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ== + dependencies: + fs-extra "^8.1.0" + npmlog "^4.1.2" + read-cmd-shim "^1.0.1" + +"@lerna/rimraf-dir@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09" + integrity sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA== + dependencies: + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + path-exists "^3.0.0" + rimraf "^2.6.2" + +"@lerna/run-lifecycle@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00" + integrity sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A== + dependencies: + "@lerna/npm-conf" "3.16.0" + figgy-pudding "^3.5.1" + npm-lifecycle "^3.1.2" + npmlog "^4.1.2" + +"@lerna/run-topologically@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3" + integrity sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg== + dependencies: + "@lerna/query-graph" "3.18.5" + figgy-pudding "^3.5.1" + p-queue "^4.0.0" + +"@lerna/run@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891" + integrity sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-run-script" "3.16.5" + "@lerna/output" "3.13.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/timer" "3.13.0" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/symlink-binary@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a" + integrity sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/package" "3.16.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + +"@lerna/symlink-dependencies@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a" + integrity sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/resolve-symlink" "3.16.0" + "@lerna/symlink-binary" "3.17.0" + fs-extra "^8.1.0" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + +"@lerna/timer@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" + integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== + +"@lerna/validation-error@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" + integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== + dependencies: + npmlog "^4.1.2" + +"@lerna/version@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.21.0.tgz#5bcc3d2de9eb8f4db18efb0d88973f9a509eccc3" + integrity sha512-nIT3u43fCNj6uSMN1dRxFnF4GhmIiOEqSTkGSjrMU+8kHKwzOqS/6X6TOzklBmCyEZOpF/fLlGqH3BZHnwLDzQ== + dependencies: + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/conventional-commits" "3.18.5" + "@lerna/github-client" "3.16.5" + "@lerna/gitlab-client" "3.15.0" + "@lerna/output" "3.13.0" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + chalk "^2.3.1" + dedent "^0.7.0" + load-json-file "^5.3.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^2.1.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + p-waterfall "^1.0.0" + semver "^6.2.0" + slash "^2.0.0" + temp-write "^3.4.0" + write-json-file "^3.2.0" + +"@lerna/write-log-file@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" + integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== + dependencies: + npmlog "^4.1.2" + write-file-atomic "^2.3.0" + "@mapbox/geojson-area@0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10" @@ -1743,6 +2578,108 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@octokit/auth-token@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" + integrity sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg== + dependencies: + "@octokit/types" "^2.0.0" + +"@octokit/endpoint@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7" + integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A== + dependencies: + "@octokit/types" "^2.11.1" + is-plain-object "^3.0.0" + universal-user-agent "^5.0.0" + +"@octokit/plugin-enterprise-rest@^3.6.1": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-3.6.2.tgz#74de25bef21e0182b4fa03a8678cd00a4e67e561" + integrity sha512-3wF5eueS5OHQYuAEudkpN+xVeUsg8vYEMMenEzLphUZ7PRZ8OJtDcsreL3ad9zxXmBbaFWzLmFcdob5CLyZftA== + +"@octokit/plugin-paginate-rest@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" + integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== + dependencies: + "@octokit/types" "^2.0.1" + +"@octokit/plugin-request-log@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" + integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== + +"@octokit/plugin-rest-endpoint-methods@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" + integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== + dependencies: + "@octokit/types" "^2.0.1" + deprecation "^2.3.1" + +"@octokit/request-error@^1.0.2": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" + integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request-error@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.0.tgz#94ca7293373654400fbb2995f377f9473e00834b" + integrity sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^5.2.0": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee" + integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^2.11.1" + deprecation "^2.0.0" + is-plain-object "^3.0.0" + node-fetch "^2.3.0" + once "^1.4.0" + universal-user-agent "^5.0.0" + +"@octokit/rest@^16.28.4": + version "16.43.1" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.1.tgz#3b11e7d1b1ac2bbeeb23b08a17df0b20947eda6b" + integrity sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw== + dependencies: + "@octokit/auth-token" "^2.4.0" + "@octokit/plugin-paginate-rest" "^1.1.1" + "@octokit/plugin-request-log" "^1.0.0" + "@octokit/plugin-rest-endpoint-methods" "2.4.0" + "@octokit/request" "^5.2.0" + "@octokit/request-error" "^1.0.2" + atob-lite "^2.0.0" + before-after-hook "^2.0.0" + btoa-lite "^1.0.0" + deprecation "^2.0.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lodash.uniq "^4.5.0" + octokit-pagination-methods "^1.1.0" + once "^1.4.0" + universal-user-agent "^4.0.0" + +"@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.11.1.tgz#bd5b059596b42845be3f8e66065667aff8c8bf8b" + integrity sha512-QaLoLkmFdfoNbk3eOzPv7vKrUY0nRJIYmZDoz/pTer4ICpqu80aSQTVHnnUxEFuURCiidig76CcxUOYC/bY3RQ== + dependencies: + "@types/node" ">= 8" + "@reach/router@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.2.1.tgz#34ae3541a5ac44fa7796e5506a5d7274a162be4e" @@ -2620,10 +3557,10 @@ resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz#667eb1640e8039436028055737d2b9986ee336e3" integrity sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ== -"@types/babel__core@^7.1.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" - integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== +"@types/babel__core@^7.1.7": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2660,6 +3597,16 @@ dependencies: "@types/babel-types" "*" +"@types/blob-util@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/blob-util/-/blob-util-1.3.3.tgz#adba644ae34f88e1dd9a5864c66ad651caaf628a" + integrity sha512-4ahcL/QDnpjWA2Qs16ZMQif7HjGP2cw3AGjHabybjw7Vm1EKu+cfQN1D78BaZbS1WJNa1opSMF5HNMztx7lR0w== + +"@types/bluebird@3.5.29": + version "3.5.29" + resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.29.tgz#7cd933c902c4fc83046517a1bef973886d00bdb6" + integrity sha512-kmVtnxTuUuhCET669irqQmPAez4KFnFVKvpleVRyfC3g+SHD1hIkFZcWLim9BVcwUBLO59o8VZE4yGCmTif8Yw== + "@types/body-parser@*": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.1.tgz#18fcf61768fb5c30ccc508c21d6fd2e8b3bf7897" @@ -2668,6 +3615,24 @@ "@types/connect" "*" "@types/node" "*" +"@types/chai-jquery@1.1.40": + version "1.1.40" + resolved "https://registry.yarnpkg.com/@types/chai-jquery/-/chai-jquery-1.1.40.tgz#445bedcbbb2ae4e3027f46fa2c1733c43481ffa1" + integrity sha512-mCNEZ3GKP7T7kftKeIs7QmfZZQM7hslGSpYzKbOlR2a2HCFf9ph4nlMRA9UnuOETeOQYJVhJQK7MwGqNZVyUtQ== + dependencies: + "@types/chai" "*" + "@types/jquery" "*" + +"@types/chai@*": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" + integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw== + +"@types/chai@4.2.7": + version "4.2.7" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.7.tgz#1c8c25cbf6e59ffa7d6b9652c78e547d9a41692d" + integrity sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g== + "@types/cheerio@*": version "0.22.15" resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.15.tgz#69040ffa92c309beeeeb7e92db66ac3f80700c0b" @@ -2687,6 +3652,11 @@ dependencies: "@types/node" "*" +"@types/content-disposition@*": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" + integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== + "@types/cookiejar@*": version "2.1.1" resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" @@ -2771,6 +3741,13 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/graceful-fs@^4.1.2": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + dependencies: + "@types/node" "*" + "@types/history@*": version "4.7.4" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.4.tgz#06cbceb0ace6a342a9aafcb655a688cf38f6150d" @@ -2820,13 +3797,27 @@ dependencies: jest-diff "^24.3.0" -"@types/jest@^25.1.4": - version "25.1.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760" - integrity sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw== +"@types/jest@^25.2.2": + version "25.2.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.2.tgz#6a752e7a00f69c3e790ea00c345029d5cefa92bf" + integrity sha512-aRctFbG8Pb7DSLzUt/fEtL3q/GKb9mretFuYhRub2J0q6NhzBYbx9HTQzHrWgBNIxYOlxGNVe6Z54cpbUt+Few== + dependencies: + jest-diff "^25.2.1" + pretty-format "^25.2.1" + +"@types/jquery@*": + version "3.3.38" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.38.tgz#6385f1e1b30bd2bff55ae8ee75ea42a999cc3608" + integrity sha512-nkDvmx7x/6kDM5guu/YpXkGZ/Xj/IwGiLDdKM99YA5Vag7pjGyTJ8BNUh/6hxEn/sEu5DKtyRgnONJ7EmOoKrA== dependencies: - jest-diff "^25.1.0" - pretty-format "^25.1.0" + "@types/sizzle" "*" + +"@types/jquery@3.3.31": + version "3.3.31" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.31.tgz#27c706e4bf488474e1cb54a71d8303f37c93451b" + integrity sha512-Lz4BAJihoFw5nRzKvg4nawXPzutkv7wmfQ5121avptaSIXlDNJCUuxZxX/G+9EVidZGuO0UBlk+YjKbwRKJigg== + dependencies: + "@types/sizzle" "*" "@types/json-schema@^7.0.3": version "7.0.4" @@ -2857,7 +3848,7 @@ dependencies: "@types/koa" "*" -"@types/koa@*", "@types/koa@^2.11.0": +"@types/koa@*": version "2.11.0" resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.11.0.tgz#394a3e9ec94f796003a6c8374b4dbc2778746f20" integrity sha512-Hgx/1/rVlJvqYBrdeCsS7PDiR2qbxlMt1RnmNWD4Uxi5FF9nwkYqIldo7urjc+dfNpk+2NRGcnAYd4L5xEhCcQ== @@ -2869,6 +3860,19 @@ "@types/koa-compose" "*" "@types/node" "*" +"@types/koa@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.11.3.tgz#540ece376581b12beadf9a417dd1731bc31c16ce" + integrity sha512-ABxVkrNWa4O/Jp24EYI/hRNqEVRlhB9g09p48neQp4m3xL1TJtdWk2NyNQSMCU45ejeELMQZBYyfstyVvO2H3Q== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + "@types/koa__cors@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/koa__cors/-/koa__cors-3.0.1.tgz#a8cf8535f0fe682c9421f1b9379837c585f8b66b" @@ -2876,6 +3880,11 @@ dependencies: "@types/koa" "*" +"@types/lodash@4.14.149": + version "4.14.149" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" + integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== + "@types/mapbox-gl@*": version "1.6.3" resolved "https://registry.yarnpkg.com/@types/mapbox-gl/-/mapbox-gl-1.6.3.tgz#262a476846331770b7dde9ec7cec31b697ecc4f6" @@ -2888,11 +3897,16 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== -"@types/minimatch@*": +"@types/minimatch@*", "@types/minimatch@3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/mocha@5.2.7": + version "5.2.7" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" + integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== + "@types/node-polyglot@^0.4.34": version "0.4.34" resolved "https://registry.yarnpkg.com/@types/node-polyglot/-/node-polyglot-0.4.34.tgz#5718ca4b89446d238087534d2cba9e382f19c58b" @@ -2903,10 +3917,15 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.8.tgz#1d590429fe8187a02707720ecf38a6fe46ce294b" integrity sha512-6XzyyNM9EKQW4HKuzbo/CkOIjn/evtCmsU+MUM1xDfJ+3/rNjBttM1NgN7AOQvN6tP1Sl1D1PIKMreTArnxM9A== -"@types/node@^12.12.31": - version "12.12.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.31.tgz#d6b4f9645fee17f11319b508fb1001797425da51" - integrity sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg== +"@types/node@>= 8": + version "13.13.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.2.tgz#160d82623610db590a64e8ca81784e11117e5a54" + integrity sha512-LB2R1Oyhpg8gu4SON/mfforE525+Hi/M1ineICEDftqNVTyFg1aRIeGuTvXAoWHc4nbrFncWtJgMmoyRvuGh7A== + +"@types/node@^12.12.39": + version "12.12.39" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.39.tgz#532d25c1e639d89dd6f3aa1d7b3962e3e7fa943d" + integrity sha512-pADGfwnDkr6zagDwEiCVE4yQrv7XDkoeVa4OfA9Ju/zRTk6YNDLGtQbkdL4/56mCQQCs4AhNrBIag6jrp7ZuOg== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -3013,7 +4032,32 @@ "@types/express-serve-static-core" "*" "@types/mime" "*" -"@types/sizzle@2.3.2": +"@types/sinon-chai@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.3.tgz#afe392303dda95cc8069685d1e537ff434fa506e" + integrity sha512-TOUFS6vqS0PVL1I8NGVSNcFaNJtFoyZPXZ5zur+qlhDfOmQECZZM4H4kKgca6O8L+QceX/ymODZASfUfn+y4yQ== + dependencies: + "@types/chai" "*" + "@types/sinon" "*" + +"@types/sinon@*": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.0.tgz#5b70a360f55645dd64f205defd2a31b749a59799" + integrity sha512-v2TkYHkts4VXshMkcmot/H+ERZ2SevKa10saGaJPGCJ8vh3lKrC4u663zYEeRZxep+VbG6YRDtQ6gVqw9dYzPA== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinon@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.1.tgz#d27b81af0d1cfe1f9b24eebe7a24f74ae40f5b7c" + integrity sha512-EZQUP3hSZQyTQRfiLqelC9NMWd1kqLcmQE0dMiklxBkgi84T+cHOhnKpgk4NnOWpGX863yE6+IaGnOXUNFqDnQ== + +"@types/sinonjs__fake-timers@*": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" + integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== + +"@types/sizzle@*", "@types/sizzle@2.3.2": version "2.3.2" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== @@ -3046,10 +4090,10 @@ "@types/cookiejar" "*" "@types/node" "*" -"@types/supertest@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.8.tgz#23801236e2b85204ed771a8e7c40febba7da2bda" - integrity sha512-wcax7/ip4XSSJRLbNzEIUVy2xjcBIZZAuSd2vtltQfRK7kxhx5WMHbLHkYdxN3wuQCrwpYrg86/9byDjPXoGMA== +"@types/supertest@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.9.tgz#049bddbcb0ee0d60a9b836ccc977d813a1c32325" + integrity sha512-0BTpWWWAO1+uXaP/oA0KW1eOZv4hc0knhrWowV06Gwwz3kqQxNO98fUFM2e15T+PdPRmOouNFrYvaBgdojPJ3g== dependencies: "@types/superagent" "*" @@ -3091,10 +4135,10 @@ "@types/source-list-map" "*" source-map "^0.6.1" -"@types/webpack@^4.41.8": - version "4.41.8" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.8.tgz#d2244f5f612ee30230a5c8c4ae678bce90d27277" - integrity sha512-mh4litLHTlDG84TGCFv1pZldndI34vkrW9Mks++Zx4KET7DRMoCXUvLbTISiuF4++fMgNnhV9cc1nCXJQyBYbQ== +"@types/webpack@^4.41.12": + version "4.41.12" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.12.tgz#0386ee2a2814368e2f2397abb036c0bf173ff6c3" + integrity sha512-BpCtM4NnBen6W+KEhrL9jKuZCXVtiH6+0b6cxdvNt2EwU949Al334PjQSl2BeAyvAX9mgoNNG21wvjP3xZJJ5w== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -3122,40 +4166,40 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02" - integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw== +"@typescript-eslint/eslint-plugin@^2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.31.0.tgz#942c921fec5e200b79593c71fafb1e3f57aa2e36" + integrity sha512-iIC0Pb8qDaoit+m80Ln/aaeu9zKQdOLF4SHcGLarSeY1gurW6aU4JsOPMjKQwXlw70MvWKZQc6S2NamA8SJ/gg== dependencies: - "@typescript-eslint/experimental-utils" "2.25.0" + "@typescript-eslint/experimental-utils" "2.31.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714" - integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw== +"@typescript-eslint/experimental-utils@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.31.0.tgz#a9ec514bf7fd5e5e82bc10dcb6a86d58baae9508" + integrity sha512-MI6IWkutLYQYTQgZ48IVnRXmLR/0Q6oAyJgiOror74arUMh7EWjJkADfirZhRsUMHeLJ85U2iySDwHTSnNi9vA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.25.0" + "@typescript-eslint/typescript-estree" "2.31.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76" - integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg== +"@typescript-eslint/parser@^2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.31.0.tgz#beddd4e8efe64995108b229b2862cd5752d40d6f" + integrity sha512-uph+w6xUOlyV2DLSC6o+fBDzZ5i7+3/TxAsH4h3eC64tlga57oMb96vVlXoMwjR/nN+xyWlsnxtbDkB46M2EPQ== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.25.0" - "@typescript-eslint/typescript-estree" "2.25.0" + "@typescript-eslint/experimental-utils" "2.31.0" + "@typescript-eslint/typescript-estree" "2.31.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c" - integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg== +"@typescript-eslint/typescript-estree@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.31.0.tgz#ac536c2d46672aa1f27ba0ec2140d53670635cfd" + integrity sha512-vxW149bXFXXuBrAak0eKHOzbcu9cvi6iNcJDzEtOkRwGHxJG15chiAQAwhLOsk+86p9GTr/TziYvw+H9kMaIgA== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -3498,6 +4542,23 @@ "@zeit/next-css" "1.0.1" sass-loader "6.0.6" +"@zkochan/cmd-shim@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" + integrity sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg== + dependencies: + is-windows "^1.0.0" + mkdirp-promise "^5.0.1" + mz "^2.5.0" + +JSONStream@^1.0.4, JSONStream@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" @@ -3536,6 +4597,15 @@ acorn-jsx@^5.1.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + acorn-walk@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" @@ -3561,6 +4631,16 @@ acorn@^6.0.1, acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + acorn@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" @@ -3571,6 +4651,27 @@ address@1.1.2, address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -3678,7 +4779,7 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" -ansi-colors@^3.0.0: +ansi-colors@^3.0.0, ansi-colors@^3.2.1: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== @@ -3695,6 +4796,13 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.8.1" +ansi-escapes@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -3757,7 +4865,7 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -any-promise@^1.1.0: +any-promise@^1.0.0, any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -3788,6 +4896,11 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + arch@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" @@ -3828,6 +4941,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" + integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== + array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -3848,6 +4966,11 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= + array-includes@^3.0.3, array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -3857,7 +4980,7 @@ array-includes@^3.0.3, array-includes@^3.1.1: es-abstract "^1.17.0" is-string "^1.0.5" -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= @@ -3914,7 +5037,7 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.3: +asap@^2.0.0, asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -3973,6 +5096,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -4012,6 +5140,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +atob-lite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" + integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -4117,17 +5250,18 @@ babel-helper-to-multiple-sequence-expressions@^0.5.0: resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" integrity sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA== -babel-jest@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.2.3.tgz#8f1c088b1954963e8a5384be2e219dae00d053f4" - integrity sha512-03JjvEwuDrEz/A45K8oggAv+Vqay0xcOdNTJxYFxiuZvB5vlHKo1iZg9Pi5vQTHhNCKpGLb7L/jvUUafyh9j7g== +babel-jest@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" + integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== dependencies: - "@jest/transform" "^25.2.3" - "@jest/types" "^25.2.3" - "@types/babel__core" "^7.1.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" + "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.2.1" + babel-preset-jest "^25.5.0" chalk "^3.0.0" + graceful-fs "^4.2.4" slash "^3.0.0" babel-loader@8.0.6: @@ -4215,11 +5349,13 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.1.tgz#d0003a1f3d5caa281e1107fe03bbf16b799f9955" - integrity sha512-HysbCQfJhxLlyxDbKcB2ucGYV0LjqK4h6dBoI3RtFuOxTiTWK6XGZMsHb0tGh8iJdV4hC6Z2GCHzVvDeh9i0lQ== +babel-plugin-jest-hoist@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" + integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" "@types/babel__traverse" "^7.0.6" babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.7.0: @@ -4403,14 +5539,29 @@ babel-plugin-transform-undefined-to-void@^6.9.4: resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= -babel-preset-jest@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.2.1.tgz#4ccd0e577f69aa11b71806edfe8b25a5c3ac93a2" - integrity sha512-zXHJBM5iR8oEO4cvdF83AQqqJf3tJrXy3x8nfu2Nlqvn4cneg4Ca8M7cQvC5S9BzDDy1O0tZ9iXru9J6E3ym+A== - dependencies: - "@babel/plugin-syntax-bigint" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^25.2.1" +babel-preset-current-node-syntax@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" + integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +babel-preset-jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" + integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== + dependencies: + babel-plugin-jest-hoist "^25.5.0" + babel-preset-current-node-syntax "^0.1.2" "babel-preset-minify@^0.5.0 || 0.6.0-alpha.5": version "0.5.1" @@ -4504,6 +5655,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +before-after-hook@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" + integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -4533,7 +5689,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@3.7.2, bluebird@^3.3.5, bluebird@^3.5.0, bluebird@^3.5.5: +bluebird@3.7.2, bluebird@^3.3.5, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -4726,6 +5882,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -4760,11 +5921,26 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + bulma@^0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.7.5.tgz#35066c37f82c088b68f94450be758fc00a967208" integrity sha512-cX98TIn0I6sKba/DhW0FBjtaDpxTelU166pf7ICXpCCuplHWyu6C9LYZmL5PEsnePIeJaiorsTEzzNk3Tsm1hw== +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + +byte-size@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" + integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -4775,6 +5951,27 @@ bytes@3.1.0, bytes@^3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +cacache@^12.0.0, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" @@ -4910,6 +6107,15 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -4920,10 +6126,10 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" @@ -4983,7 +6189,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -5011,6 +6217,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-legacy@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz#3c729991d9293da0ede6dddcaf1f2ce1009ee8b4" @@ -5055,7 +6269,7 @@ cheerio@^1.0.0-rc.3: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.2, chokidar@^2.0.4: +chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -5190,6 +6404,14 @@ cli-truncate@^0.2.1: slice-ansi "0.0.4" string-width "^1.0.1" +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -5213,15 +6435,6 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -5351,6 +6564,14 @@ colors@^1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== +columnify@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -5375,11 +6596,16 @@ commander@4.1.0, commander@^4.0.0, commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.0.tgz#545983a0603fe425bc672d66c9e3c89c42121a83" integrity sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw== -commander@^2.19.0, commander@^2.20.0: +commander@^2.19.0, commander@^2.20.0, commander@~2.20.3: 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== +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + common-tags@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -5390,10 +6616,18 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-versions@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.5.1.tgz#26e1f5cf0d48a77eced5046b9f67b6b61075a393" - integrity sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg== +compare-func@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" + integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg= + dependencies: + array-ify "^1.0.0" + dot-prop "^3.0.0" + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.3.0" @@ -5425,7 +6659,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@1.6.2, concat-stream@^1.5.0, concat-stream@~1.6.0: +concat-stream@^1.5.0, concat-stream@^1.6.2, concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -5435,10 +6669,20 @@ concat-stream@1.6.2, concat-stream@^1.5.0, concat-stream@~1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -concurrently@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.1.0.tgz#05523986ba7aaf4b58a49ddd658fab88fa783132" - integrity sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA== +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +concurrently@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.2.0.tgz#ead55121d08a0fc817085584c123cedec2e08975" + integrity sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw== dependencies: chalk "^2.4.2" date-fns "^2.0.1" @@ -5463,6 +6707,14 @@ conf@5.0.0: pkg-up "^3.0.1" write-file-atomic "^3.0.0" +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" @@ -5488,6 +6740,11 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + content-disposition@0.5.3, content-disposition@~0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -5500,6 +6757,89 @@ content-type@1.0.4, content-type@^1.0.4, 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== +conventional-changelog-angular@^5.0.3: + version "5.0.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059" + integrity sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA== + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-core@^3.1.6: + version "3.2.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" + integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== + dependencies: + conventional-changelog-writer "^4.0.6" + conventional-commits-parser "^3.0.3" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^2.0.3" + lodash "^4.2.1" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^3.0.0" + +conventional-changelog-preset-loader@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.0.tgz#580fa8ab02cef22c24294d25e52d7ccd247a9a6a" + integrity sha512-/rHb32J2EJnEXeK4NpDgMaAVTFZS3o1ExmjKMtYVgIC4MQn0vkNSbYpdGRotkfGGRWiqk3Ri3FBkiZGbAfIfOQ== + +conventional-changelog-writer@^4.0.6: + version "4.0.11" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4" + integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw== + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^2.0.2" + dateformat "^3.0.0" + handlebars "^4.4.0" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^5.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^3.0.0" + +conventional-commits-filter@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" + integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.0.3: + version "3.0.8" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" + integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^5.0.0" + split2 "^2.0.0" + through2 "^3.0.0" + trim-off-newlines "^1.0.0" + +conventional-recommended-bump@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" + integrity sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.1.1" + conventional-commits-filter "^2.0.2" + conventional-commits-parser "^3.0.3" + git-raw-commits "2.0.0" + git-semver-tags "^2.0.3" + meow "^4.0.0" + q "^1.5.1" + convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.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" @@ -5595,7 +6935,7 @@ corejs-upgrade-webpack-plugin@^2.2.0: resolve-from "^5.0.0" webpack "^4.38.0" -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -5932,13 +7272,24 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-4.2.0.tgz#45673fb648b1a77b9a78d73e58b89ed05212d243" - integrity sha512-8LdreL91S/QiTCLYLNbIjLL8Ht4fJmu/4HGLxUI20Tc7JSfqEfCmXELrRfuPT0kjosJwJJZacdSji9XSRkPKUw== +cypress@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-4.5.0.tgz#01940d085f6429cec3c87d290daa47bb976a7c7b" + integrity sha512-2A4g5FW5d2fHzq8HKUGAMVTnW6P8nlWYQALiCoGN4bqBLvgwhYM/oG9oKc2CS6LnvgHFiKivKzpm9sfk3uU3zQ== dependencies: "@cypress/listr-verbose-renderer" "0.4.1" + "@cypress/request" "2.88.5" "@cypress/xvfb" "1.2.4" + "@types/blob-util" "1.3.3" + "@types/bluebird" "3.5.29" + "@types/chai" "4.2.7" + "@types/chai-jquery" "1.1.40" + "@types/jquery" "3.3.31" + "@types/lodash" "4.14.149" + "@types/minimatch" "3.0.3" + "@types/mocha" "5.2.7" + "@types/sinon" "7.5.1" + "@types/sinon-chai" "3.2.3" "@types/sizzle" "2.3.2" arch "2.1.1" bluebird "3.7.2" @@ -5952,7 +7303,7 @@ cypress@^4.2.0: eventemitter2 "4.1.2" execa "1.0.0" executable "4.1.1" - extract-zip "1.6.7" + extract-zip "1.7.0" fs-extra "8.1.0" getos "3.1.4" is-ci "2.0.0" @@ -5961,12 +7312,11 @@ cypress@^4.2.0: listr "0.14.3" lodash "4.17.15" log-symbols "3.0.0" - minimist "1.2.2" + minimist "1.2.5" moment "2.24.0" ospath "1.2.2" pretty-bytes "5.3.0" ramda "0.26.1" - request cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16 request-progress "3.0.0" supports-color "7.1.0" tmp "0.1.0" @@ -5982,6 +7332,13 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= + dependencies: + number-is-nan "^1.0.0" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -6008,6 +7365,11 @@ date-fns@^2.0.1: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.9.0.tgz#d0b175a5c37ed5f17b97e2272bbc1fa5aec677d2" integrity sha512-khbFLu/MlzLjEzy9Gh8oY1hNt/Dvxw3J6Rbc28cVoYWQaC1S3YI4xwkF9ZWcjDLscbZlY9hISMr66RFzZagLsA== +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + dateformat@~1.0.4-1.2.3: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" @@ -6026,13 +7388,20 @@ debounce@^1.0.0: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: +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" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" +debug@3.1.0, debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -6040,13 +7409,6 @@ debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^3.0.0, debug@^3.1.0, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -6054,7 +7416,20 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.2.5: dependencies: ms "^2.1.1" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= + +decamelize-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -6137,6 +7512,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" @@ -6174,6 +7554,11 @@ depd@~2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -6194,6 +7579,11 @@ detab@2.0.2, detab@^2.0.0: dependencies: repeat-string "^1.5.4" +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -6220,25 +7610,37 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + devalue@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/devalue/-/devalue-2.0.1.tgz#5d368f9adc0928e47b77eea53ca60d2f346f9762" integrity sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q== +dezalgo@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + dependencies: + asap "^2.0.0" + wrappy "1" + diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== -diff-sequences@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32" - integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw== - -diff-sequences@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.1.tgz#fcfe8aa07dd9b0c648396a478dabca8e76c6ab27" - integrity sha512-foe7dXnGlSh3jR1ovJmdv+77VQj98eKCHHwJPbZ2eEf0fHwKbkZicpPxEch9smZ+n2dnF6QFwkOQdLq9hpeJUg== +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== diff@^4.0.1: version "4.0.2" @@ -6262,11 +7664,26 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -6359,6 +7776,20 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= + dependencies: + is-obj "^1.0.0" + +dot-prop@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + dot-prop@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" @@ -6455,6 +7886,11 @@ elegant-spinner@^1.0.1: resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= +elegant-spinner@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94" + integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA== + element-resize-detector@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" @@ -6537,6 +7973,13 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.5.0" tapable "^1.0.0" +enquirer@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" + integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== + dependencies: + ansi-colors "^3.2.1" + entities@^1.1.1, entities@^1.1.2, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -6552,6 +7995,11 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== +envinfo@^7.3.1: + version "7.5.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4" + integrity sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ== + enzyme-adapter-react-16@^1.15.2: version "1.15.2" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz#b16db2f0ea424d58a808f9df86ab6212895a4501" @@ -6623,6 +8071,11 @@ enzyme@^3.11.0: rst-selector-parser "^2.2.3" string.prototype.trim "^1.2.1" +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -6709,6 +8162,18 @@ es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + es6-shim@^0.35.5: version "0.35.5" resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" @@ -6756,17 +8221,51 @@ escodegen@^1.12.0, escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^6.10.1: - version "6.10.1" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" - integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ== +eslint-config-prettier@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" + integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== dependencies: get-stdin "^6.0.0" -eslint-plugin-prettier@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" - integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.20.2: + version "2.20.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" + integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-prettier@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" + integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== dependencies: prettier-linter-helpers "^1.0.0" @@ -6924,6 +8423,11 @@ eventemitter2@4.1.2: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-4.1.2.tgz#0e1a8477af821a6ef3995b311bf74c23a5247f15" integrity sha1-DhqEd6+CGm7zmVsxG/dMI6UkfxU= +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + eventemitter3@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" @@ -6967,7 +8471,7 @@ execa@1.0.0, execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.2.0, execa@^3.4.0: +execa@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== @@ -6983,6 +8487,21 @@ execa@^3.2.0, execa@^3.4.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.1.tgz#988488781f1f0238cd156f7aaede11c3e853b4c1" + integrity sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + executable@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -7030,17 +8549,17 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -expect@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.2.3.tgz#ee714f82bf33c43466fcef139ace0a57b3d0aa48" - integrity sha512-kil4jFRFAK2ySyCyXPqYrphc3EiiKKFd9BthrkKAyHcqr1B84xFTuj5kO8zL+eHRRjT2jQsOPExO0+1Q/fuUXg== +expect@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" + integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" ansi-styles "^4.0.0" - jest-get-type "^25.2.1" - jest-matcher-utils "^25.2.3" - jest-message-util "^25.2.3" - jest-regex-util "^25.2.1" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-regex-util "^25.2.6" express@^4.17.0: version "4.17.1" @@ -7128,15 +8647,15 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-zip@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" - integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= +extract-zip@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== dependencies: - concat-stream "1.6.2" - debug "2.6.9" - mkdirp "0.5.1" - yauzl "2.4.1" + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" extracted-loader@1.0.4: version "1.0.4" @@ -7168,7 +8687,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^2.0.2: +fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -7229,13 +8748,6 @@ fbjs@^0.8.0: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= - dependencies: - pend "~1.2.0" - fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -7243,6 +8755,11 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +figgy-pudding@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -7270,6 +8787,13 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -7381,7 +8905,7 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@2.1.0, find-up@^2.1.0: +find-up@2.1.0, find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -7599,7 +9123,7 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@8.1.0, fs-extra@^8.0.0, fs-extra@^8.0.1: +fs-extra@8.1.0, fs-extra@^8.0.0, fs-extra@^8.0.1, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -7619,6 +9143,13 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +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.0.1" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.1.tgz#3e5bcc0f7b94507b0390e2c7d4a2516ca16a38d2" @@ -7714,6 +9245,11 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -7724,11 +9260,6 @@ geojson-vt@^3.2.1: resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - 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" @@ -7739,6 +9270,22 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -7749,7 +9296,7 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stream@^4.0.0: +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -7782,6 +9329,55 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-raw-commits@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" + integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^4.0.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" + integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== + dependencies: + meow "^4.0.0" + semver "^6.0.0" + +git-up@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +git-url-parse@^11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" + integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== + dependencies: + git-up "^4.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= + dependencies: + ini "^1.3.2" + github-slugger@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.1.tgz#47e904e70bf2dccd0014748142d31126cfd49508" @@ -7920,6 +9516,20 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + globule@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.0.tgz#41d0e9fb44afd4b80d93a23263714f90b3dec904" @@ -7936,11 +9546,16 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -7974,6 +9589,18 @@ hammerjs@^2.0.8: resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE= +handlebars@^4.4.0: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -8014,7 +9641,7 @@ has-symbols@^1.0.0, 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: +has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -8172,6 +9799,11 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== +hosted-git-info@^2.7.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + html-element-map@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.2.0.tgz#dfbb09efe882806af63d990cf6db37993f099f22" @@ -8251,6 +9883,11 @@ http-assert@^1.3.0: deep-equal "~1.0.1" http-errors "~1.7.2" +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" @@ -8278,6 +9915,14 @@ http-errors@^1.6.3, http-errors@~1.7.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -8292,19 +9937,34 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -husky@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.3.tgz#3b18d2ee5febe99e27f2983500202daffbc3151e" - integrity sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= dependencies: - chalk "^3.0.0" + ms "^2.0.0" + +husky@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" + integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== + dependencies: + chalk "^4.0.0" ci-info "^2.0.0" - compare-versions "^3.5.1" + compare-versions "^3.6.0" cosmiconfig "^6.0.0" find-versions "^3.2.0" opencollective-postinstall "^2.0.2" @@ -8361,12 +10021,19 @@ ignore-loader@0.1.2: resolved "https://registry.yarnpkg.com/ignore-loader/-/ignore-loader-0.1.2.tgz#d81f240376d0ba4f0d778972c3ad25874117a463" integrity sha1-2B8kA3bQuk8Nd4lyw60lh0EXpGM= +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.6: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -8406,6 +10073,14 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -8474,11 +10149,25 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +init-package-json@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" @@ -8503,6 +10192,25 @@ inquirer@6.5.0: strip-ansi "^5.1.0" through "^2.3.6" +inquirer@^6.2.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + inquirer@^7.0.0: version "7.0.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.3.tgz#f9b4cd2dff58b9f73e8d43759436ace15bed4567" @@ -8548,17 +10256,12 @@ invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@^1.1.5: +ip@1.1.5, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= @@ -8828,7 +10531,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.1: +is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= @@ -8864,7 +10567,7 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.0.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -8915,6 +10618,13 @@ is-set@^2.0.0: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== +is-ssh@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + dependencies: + protocols "^1.1.0" + is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -8942,6 +10652,13 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.1" +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= + dependencies: + text-extensions "^1.0.0" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -8957,7 +10674,7 @@ is-whitespace-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac" integrity sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ== -is-windows@^1.0.2: +is-windows@^1.0.0, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -9076,10 +10793,10 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.0.tgz#d4d16d035db99581b6194e119bbf36c963c5eb70" - integrity sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A== +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -9097,56 +10814,58 @@ iterate-value@^1.0.0: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" -jest-changed-files@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.2.3.tgz#ad19deef9e47ba37efb432d2c9a67dfd97cc78af" - integrity sha512-EFxy94dvvbqRB36ezIPLKJ4fDIC+jAdNs8i8uTwFpaXd6H3LVc3ova1lNS4ZPWk09OCR2vq5kSdSQgar7zMORg== +jest-changed-files@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" + integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" execa "^3.2.0" throat "^5.0.0" -jest-cli@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.2.3.tgz#47e17240ce6d8ce824ca1a01468ea8824ec6b139" - integrity sha512-T7G0TOkFj0wr33ki5xoq3bxkKC+liwJfjV9SmYIKBozwh91W4YjL1o1dgVCUTB1+sKJa/DiAY0p+eXYE6v2RGw== +jest-cli@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d" + integrity sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw== dependencies: - "@jest/core" "^25.2.3" - "@jest/test-result" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/core" "^25.5.4" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" exit "^0.1.2" + graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.2.3" - jest-util "^25.2.3" - jest-validate "^25.2.3" + jest-config "^25.5.4" + jest-util "^25.5.0" + jest-validate "^25.5.0" prompts "^2.0.1" realpath-native "^2.0.0" yargs "^15.3.1" -jest-config@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.2.3.tgz#c304e91e2ba3763c04b38eafc26d30e5c41b48e8" - integrity sha512-UpTNxN8DgmLLCXFizGuvwIw+ZAPB0T3jbKaFEkzJdGqhSsQrVrk1lxhZNamaVIpWirM2ptYmqwUzvoobGCEkiQ== +jest-config@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" + integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.2.3" - "@jest/types" "^25.2.3" - babel-jest "^25.2.3" + "@jest/test-sequencer" "^25.5.4" + "@jest/types" "^25.5.0" + babel-jest "^25.5.1" chalk "^3.0.0" deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^25.2.3" - jest-environment-node "^25.2.3" - jest-get-type "^25.2.1" - jest-jasmine2 "^25.2.3" - jest-regex-util "^25.2.1" - jest-resolve "^25.2.3" - jest-util "^25.2.3" - jest-validate "^25.2.3" + graceful-fs "^4.2.4" + jest-environment-jsdom "^25.5.0" + jest-environment-node "^25.5.0" + jest-get-type "^25.2.6" + jest-jasmine2 "^25.5.4" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" micromatch "^4.0.2" - pretty-format "^25.2.3" + pretty-format "^25.5.0" realpath-native "^2.0.0" jest-diff@^24.3.0, jest-diff@^24.9.0: @@ -9159,66 +10878,56 @@ jest-diff@^24.3.0, jest-diff@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-diff@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.1.0.tgz#58b827e63edea1bc80c1de952b80cec9ac50e1ad" - integrity sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.1.0" - jest-get-type "^25.1.0" - pretty-format "^25.1.0" - -jest-diff@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.2.3.tgz#54d601a0a754ef26e808a8c8dbadd278c215aa3f" - integrity sha512-VtZ6LAQtaQpFsmEzps15dQc5ELbJxy4L2DOSo2Ev411TUEtnJPkAMD7JneVypeMJQ1y3hgxN9Ao13n15FAnavg== +jest-diff@^25.2.1, jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== dependencies: chalk "^3.0.0" - diff-sequences "^25.2.1" - jest-get-type "^25.2.1" - pretty-format "^25.2.3" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" -jest-docblock@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.2.3.tgz#ac45280c43d59e7139f9fbe5896c6e0320c01ebb" - integrity sha512-d3/tmjLLrH5fpRGmIm3oFa3vOaD/IjPxtXVOrfujpfJ9y1tCDB1x/tvunmdOVAyF03/xeMwburl6ITbiQT1mVA== +jest-docblock@^25.3.0: + version "25.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" + integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== dependencies: detect-newline "^3.0.0" -jest-each@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.2.3.tgz#64067ba1508ebbd07e9b126c173ab371e8e6309d" - integrity sha512-RTlmCjsBDK2c9T5oO4MqccA3/5Y8BUtiEy7OOQik1iyCgdnNdHbI0pNEpyapZPBG0nlvZ4mIu7aY6zNUvLraAQ== +jest-each@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" + integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" chalk "^3.0.0" - jest-get-type "^25.2.1" - jest-util "^25.2.3" - pretty-format "^25.2.3" - -jest-environment-jsdom@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.2.3.tgz#f790f87c24878b219d1745f68343380c2d79ab01" - integrity sha512-TLg7nizxIYJafz6tOBAVSmO5Ekswf6Cf3Soseov+mgonXfdYi1I0OZlHlZMJb2fGyXem2ndYFCLrMkwcWPKAnQ== - dependencies: - "@jest/environment" "^25.2.3" - "@jest/fake-timers" "^25.2.3" - "@jest/types" "^25.2.3" - jest-mock "^25.2.3" - jest-util "^25.2.3" + jest-get-type "^25.2.6" + jest-util "^25.5.0" + pretty-format "^25.5.0" + +jest-environment-jsdom@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" + integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" jsdom "^15.2.1" -jest-environment-node@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.2.3.tgz#e50a7e84bf7c7555216aa41aea1e48f53773318f" - integrity sha512-Tu/wlGXfoLtBR4Ym+isz58z3TJkMYX4VnFTkrsxaTGYAxNLN7ArCwL51Ki0WrMd89v+pbCLDj/hDjrb4a2sOrw== +jest-environment-node@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" + integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== dependencies: - "@jest/environment" "^25.2.3" - "@jest/fake-timers" "^25.2.3" - "@jest/types" "^25.2.3" - jest-mock "^25.2.3" - jest-util "^25.2.3" + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" semver "^6.3.0" jest-get-type@^24.9.0: @@ -9226,15 +10935,10 @@ jest-get-type@^24.9.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -jest-get-type@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876" - integrity sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw== - -jest-get-type@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.1.tgz#6c83de603c41b1627e6964da2f5454e6aa3c13a6" - integrity sha512-EYjTiqcDTCRJDcSNKbLTwn/LcDPEE7ITk8yRMNAOjEsN6yp+Uu+V1gx4djwnuj/DvWg0YGmqaBqPVGsPxlvE7w== +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== jest-haste-map@^24.9.0: version "24.9.0" @@ -9255,18 +10959,19 @@ jest-haste-map@^24.9.0: optionalDependencies: fsevents "^1.2.7" -jest-haste-map@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.2.3.tgz#2649392b5af191f0167a27bfb62e5d96d7eaaade" - integrity sha512-pAP22OHtPr4qgZlJJFks2LLgoQUr4XtM1a+F5UaPIZNiCRnePA0hM3L7aiJ0gzwiNIYwMTfKRwG/S1L28J3A3A== +jest-haste-map@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" + integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" + "@types/graceful-fs" "^4.1.2" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.2.1" - jest-util "^25.2.3" - jest-worker "^25.2.1" + graceful-fs "^4.2.4" + jest-serializer "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" @@ -9274,36 +10979,36 @@ jest-haste-map@^25.2.3: optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.2.3.tgz#a824c5dbe383c63d243aab5e64cc85ab65f87598" - integrity sha512-x9PEGPFdnkSwJj1UG4QxG9JxFdyP8fuJ/UfKXd/eSpK8w9x7MP3VaQDuPQF0UQhCT0YeOITEPkQyqS+ptt0suA== +jest-jasmine2@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" + integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.2.3" - "@jest/source-map" "^25.2.1" - "@jest/test-result" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/environment" "^25.5.0" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" co "^4.6.0" - expect "^25.2.3" + expect "^25.5.0" is-generator-fn "^2.0.0" - jest-each "^25.2.3" - jest-matcher-utils "^25.2.3" - jest-message-util "^25.2.3" - jest-runtime "^25.2.3" - jest-snapshot "^25.2.3" - jest-util "^25.2.3" - pretty-format "^25.2.3" + jest-each "^25.5.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-runtime "^25.5.4" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + pretty-format "^25.5.0" throat "^5.0.0" -jest-leak-detector@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.2.3.tgz#4cf39f137925e0061c04c24ca65cae36465f0238" - integrity sha512-yblCMPE7NJKl7778Cf/73yyFWAas5St0iiEBwq7RDyaz6Xd4WPFnPz2j7yDb/Qce71A1IbDoLADlcwD8zT74Aw== +jest-leak-detector@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" + integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== dependencies: - jest-get-type "^25.2.1" - pretty-format "^25.2.3" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" jest-matcher-utils@^24.9.0: version "24.9.0" @@ -9315,15 +11020,15 @@ jest-matcher-utils@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-matcher-utils@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.2.3.tgz#59285bd6d6c810debc9caa585ed985e46a3f28fd" - integrity sha512-ZmiXiwQRVM9MoKjGMP5YsGGk2Th5ncyRxfXKz5AKsmU8m43kgNZirckVzaP61MlSa9LKmXbevdYqVp1ZKAw2Rw== +jest-matcher-utils@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" + integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== dependencies: chalk "^3.0.0" - jest-diff "^25.2.3" - jest-get-type "^25.2.1" - pretty-format "^25.2.3" + jest-diff "^25.5.0" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" jest-message-util@^24.9.0: version "24.9.0" @@ -9339,16 +11044,16 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-message-util@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.2.3.tgz#a911c4e3af06df851cc6065d9a3119fd2a3aa240" - integrity sha512-DcyDmdO5LVIeS0ngRvd7rk701XL60dAakUeQJ1tQRby27fyLYXD+V0nqVaC194W7fIlohjVQOZPHmKXIjn+Byw== +jest-message-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" "@types/stack-utils" "^1.0.1" chalk "^3.0.0" + graceful-fs "^4.2.4" micromatch "^4.0.2" slash "^3.0.0" stack-utils "^1.0.1" @@ -9360,12 +11065,12 @@ jest-mock@^24.9.0: dependencies: "@jest/types" "^24.9.0" -jest-mock@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.2.3.tgz#b37a581f59d61bd91db27a99bf7eb8b3e5e993d5" - integrity sha512-xlf+pyY0j47zoCs8zGGOGfWyxxLximE8YFOfEK8s4FruR8DtM/UjNj61um+iDuMAFEBDe1bhCXkqiKoCmWjJzg== +jest-mock@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" + integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" jest-pnp-resolver@^1.2.1: version "1.2.1" @@ -9377,19 +11082,19 @@ jest-regex-util@^24.9.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== -jest-regex-util@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.1.tgz#db64b0d15cd3642c93b7b9627801d7c518600584" - integrity sha512-wroFVJw62LdqTdkL508ZLV82FrJJWVJMIuYG7q4Uunl1WAPTf4ftPKrqqfec4SvOIlvRZUdEX2TFpWR356YG/w== +jest-regex-util@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" + integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== -jest-resolve-dependencies@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.2.3.tgz#cd4d9d068d5238dfbdfa45690f6e902b6413c2da" - integrity sha512-mcWlvjXLlNzgdE9EQxHuaeWICNxozanim87EfyvPwTY0ryWusFZbgF6F8u3E0syJ4FFSooEm0lQ6fgYcnPGAFw== +jest-resolve-dependencies@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" + integrity sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw== dependencies: - "@jest/types" "^25.2.3" - jest-regex-util "^25.2.1" - jest-snapshot "^25.2.3" + "@jest/types" "^25.5.0" + jest-regex-util "^25.2.6" + jest-snapshot "^25.5.1" jest-resolve@^24.9.0: version "24.9.0" @@ -9402,69 +11107,73 @@ jest-resolve@^24.9.0: jest-pnp-resolver "^1.2.1" realpath-native "^1.1.0" -jest-resolve@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.2.3.tgz#ababeaf2bb948cb6d2dea8453759116da0fb7842" - integrity sha512-1vZMsvM/DBH258PnpUNSXIgtzpYz+vCVCj9+fcy4akZl4oKbD+9hZSlfe9RIDpU0Fc28ozHQrmwX3EqFRRIHGg== +jest-resolve@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" + integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" browser-resolve "^1.11.3" chalk "^3.0.0" + graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.1" + read-pkg-up "^7.0.1" realpath-native "^2.0.0" - resolve "^1.15.1" + resolve "^1.17.0" + slash "^3.0.0" -jest-runner@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.2.3.tgz#88fb448a46cf4ee9194a3e3cf0adbc122e195adb" - integrity sha512-E+u2Zm2TmtTOFEbKs5jllLiV2fwiX77cYc08RdyYZNe/s06wQT3P47aV6a8Rv61L7E2Is7OmozLd0KI/DITRpg== +jest-runner@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" + integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg== dependencies: - "@jest/console" "^25.2.3" - "@jest/environment" "^25.2.3" - "@jest/test-result" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-config "^25.2.3" - jest-docblock "^25.2.3" - jest-haste-map "^25.2.3" - jest-jasmine2 "^25.2.3" - jest-leak-detector "^25.2.3" - jest-message-util "^25.2.3" - jest-resolve "^25.2.3" - jest-runtime "^25.2.3" - jest-util "^25.2.3" - jest-worker "^25.2.1" + graceful-fs "^4.2.4" + jest-config "^25.5.4" + jest-docblock "^25.3.0" + jest-haste-map "^25.5.1" + jest-jasmine2 "^25.5.4" + jest-leak-detector "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.1" + jest-runtime "^25.5.4" + jest-util "^25.5.0" + jest-worker "^25.5.0" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.2.3.tgz#1f0e9ba878a66538c3e9d58be97a6a12c877ed13" - integrity sha512-PZRFeUVF08N24v2G73SDF0b0VpLG7cRNOJ3ggj5TnArBVHkkrWzM3z7txB9OupWu7OO8bH/jFogk6sSjnHLFXQ== - dependencies: - "@jest/console" "^25.2.3" - "@jest/environment" "^25.2.3" - "@jest/source-map" "^25.2.1" - "@jest/test-result" "^25.2.3" - "@jest/transform" "^25.2.3" - "@jest/types" "^25.2.3" +jest-runtime@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" + integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ== + dependencies: + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/globals" "^25.5.2" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" "@types/yargs" "^15.0.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.3" - jest-config "^25.2.3" - jest-haste-map "^25.2.3" - jest-message-util "^25.2.3" - jest-mock "^25.2.3" - jest-regex-util "^25.2.1" - jest-resolve "^25.2.3" - jest-snapshot "^25.2.3" - jest-util "^25.2.3" - jest-validate "^25.2.3" + graceful-fs "^4.2.4" + jest-config "^25.5.4" + jest-haste-map "^25.5.1" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" realpath-native "^2.0.0" slash "^3.0.0" strip-bom "^4.0.0" @@ -9475,10 +11184,12 @@ jest-serializer@^24.9.0: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -jest-serializer@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.1.tgz#51727a5fc04256f461abe0fa024a022ba165877a" - integrity sha512-fibDi7M5ffx6c/P66IkvR4FKkjG5ldePAK1WlbNoaU4GZmIAkS9Le/frAwRUFEX0KdnisSPWf+b1RC5jU7EYJQ== +jest-serializer@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" + integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== + dependencies: + graceful-fs "^4.2.4" jest-snapshot@^24.1.0: version "24.9.0" @@ -9499,24 +11210,25 @@ jest-snapshot@^24.1.0: pretty-format "^24.9.0" semver "^6.2.0" -jest-snapshot@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.2.3.tgz#2d432fcf9e7f1f7eb3e5012ffcce8035794b76ae" - integrity sha512-HlFVbE6vOZ541mtkwjuAe0rfx9EWhB+QXXneLNOP/s3LlHxGQtX7WFXY5OiH4CkAnCc6BpzLNYS9nfINNRb4Zg== +jest-snapshot@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" + integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" "@types/prettier" "^1.19.0" chalk "^3.0.0" - expect "^25.2.3" - jest-diff "^25.2.3" - jest-get-type "^25.2.1" - jest-matcher-utils "^25.2.3" - jest-message-util "^25.2.3" - jest-resolve "^25.2.3" + expect "^25.5.0" + graceful-fs "^4.2.4" + jest-diff "^25.5.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.1" make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^25.2.3" + pretty-format "^25.5.0" semver "^6.3.0" jest-specific-snapshot@^2.0.0: @@ -9544,38 +11256,39 @@ jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" -jest-util@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.2.3.tgz#0abf95a1d6b96f2de5a3ecd61b36c40a182dc256" - integrity sha512-7tWiMICVSo9lNoObFtqLt9Ezt5exdFlWs5fLe1G4XLY2lEbZc814cw9t4YHScqBkWMfzth8ASHKlYBxiX2rdCw== +jest-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" + integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" chalk "^3.0.0" + graceful-fs "^4.2.4" is-ci "^2.0.0" make-dir "^3.0.0" -jest-validate@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.2.3.tgz#ecb0f093cf8ae71d15075fb48439b6f78f1fcb5a" - integrity sha512-GObn91jzU0B0Bv4cusAwjP6vnWy78hJUM8MOSz7keRfnac/ZhQWIsUjvk01IfeXNTemCwgR57EtdjQMzFZGREg== +jest-validate@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" + integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" camelcase "^5.3.1" chalk "^3.0.0" - jest-get-type "^25.2.1" + jest-get-type "^25.2.6" leven "^3.1.0" - pretty-format "^25.2.3" + pretty-format "^25.5.0" -jest-watcher@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.2.3.tgz#a494fe3ddb62da62b0e697abfea457de8f388f1f" - integrity sha512-F6ERbdvJk8nbaRon9lLQVl4kp+vToCCHmy+uWW5QQ8/8/g2jkrZKJQnlQINrYQp0ewg31Bztkhs4nxsZMx6wDg== +jest-watcher@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" + integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== dependencies: - "@jest/test-result" "^25.2.3" - "@jest/types" "^25.2.3" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" ansi-escapes "^4.2.1" chalk "^3.0.0" - jest-util "^25.2.3" + jest-util "^25.5.0" string-length "^3.1.0" jest-worker@24.9.0, jest-worker@^24.9.0: @@ -9586,22 +11299,22 @@ jest-worker@24.9.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.2.1.tgz#209617015c768652646aa33a7828cc2ab472a18a" - integrity sha512-IHnpekk8H/hCUbBlfeaPZzU6v75bqwJp3n4dUrQuQOAgOneI4tx3jV2o8pvlXnDfcRsfkFIUD//HWXpCmR+evQ== +jest-worker@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== dependencies: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.2.3.tgz#0cc9b35192f236fe1d5e76ed8eb3a54e7e0ee2e0" - integrity sha512-UbUmyGeZt0/sCIj/zsWOY0qFfQsx2qEFIZp0iEj8yVH6qASfR22fJOf12gFuSPsdSufam+llZBB0MdXWCg6EEQ== +jest@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" + integrity sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ== dependencies: - "@jest/core" "^25.2.3" + "@jest/core" "^25.5.4" import-local "^3.0.2" - jest-cli "^25.2.3" + jest-cli "^25.5.4" js-base64@^2.1.8: version "2.5.1" @@ -9712,7 +11425,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -9737,7 +11450,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= @@ -9782,6 +11495,11 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + jsonpath@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.0.2.tgz#e6aae681d03e9a77b4651d5d96eac5fc63b1fd13" @@ -9956,12 +11674,29 @@ lazy-universal-dotenv@^3.0.1: dotenv "^8.0.0" dotenv-expand "^5.1.0" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" +lerna@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.21.0.tgz#c81a0f8df45c6b7c9d3fc9fdcd0f846aca2375c6" + integrity sha512-ux8yOwQEgIXOZVUfq+T8nVzPymL19vlIoPbysOP3YA4hcjKlqQIlsjI/1ugBe6b4MF7W4iV5vS3gH9cGqBBc1A== + dependencies: + "@lerna/add" "3.21.0" + "@lerna/bootstrap" "3.21.0" + "@lerna/changed" "3.21.0" + "@lerna/clean" "3.21.0" + "@lerna/cli" "3.18.5" + "@lerna/create" "3.21.0" + "@lerna/diff" "3.21.0" + "@lerna/exec" "3.21.0" + "@lerna/import" "3.21.0" + "@lerna/info" "3.21.0" + "@lerna/init" "3.21.0" + "@lerna/link" "3.21.0" + "@lerna/list" "3.21.0" + "@lerna/publish" "3.21.0" + "@lerna/run" "3.21.0" + "@lerna/version" "3.21.0" + import-local "^2.0.0" + npmlog "^4.1.2" leven@^3.1.0: version "3.1.0" @@ -9988,18 +11723,18 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^10.0.9: - version "10.0.9" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.0.9.tgz#185aabb2432e9467c84add306c990f1c20da3cdb" - integrity sha512-NKJHYgRa8oI9c4Ic42ZtF2XA6Ps7lFbXwg3q0ZEP0r55Tw3YWykCW1RzW6vu+QIGqbsy7DxndvKu93Wtr5vPQw== +lint-staged@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.2.tgz#901403c120eb5d9443a0358b55038b04c8a7db9b" + integrity sha512-78kNqNdDeKrnqWsexAmkOU3Z5wi+1CsQmUmfCuYgMTE8E4rAIX8RHW7xgxwAZ+LAayb7Cca4uYX4P3LlevzjVg== dependencies: - chalk "^3.0.0" - commander "^4.0.1" + chalk "^4.0.0" + commander "^5.0.0" cosmiconfig "^6.0.0" debug "^4.1.1" dedent "^0.7.0" - execa "^3.4.0" - listr "^0.14.3" + execa "^4.0.0" + listr2 "1.3.8" log-symbols "^3.0.0" micromatch "^4.0.2" normalize-path "^3.0.0" @@ -10036,7 +11771,27 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" -listr@0.14.3, listr@^0.14.3: +listr2@1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-1.3.8.tgz#30924d79de1e936d8c40af54b6465cb814a9c828" + integrity sha512-iRDRVTgSDz44tBeBBg/35TQz4W+EZBWsDUq7hPpqeUHm7yLPNll0rkwW3lIX9cPAK7l+x95mGWLpxjqxftNfZA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-truncate "^2.1.0" + elegant-spinner "^2.0.0" + enquirer "^2.3.4" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + pad "^3.2.0" + rxjs "^6.3.3" + through "^2.3.8" + uuid "^7.0.2" + +listr@0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== @@ -10082,6 +11837,17 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +load-json-file@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== + dependencies: + graceful-fs "^4.1.15" + parse-json "^4.0.0" + pify "^4.0.1" + strip-bom "^3.0.0" + type-fest "^0.3.0" + loader-runner@^2.3.1, loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -10138,6 +11904,11 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.curry@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" @@ -10158,11 +11929,21 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -10173,6 +11954,11 @@ lodash.once@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -10183,7 +11969,7 @@ lodash.tail@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= -lodash.template@^4.5.0: +lodash.template@^4.0.2, lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -10208,12 +11994,12 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -lodash.uniq@4.5.0: +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.15, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@~4.17.10: +lodash@4.17.15, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -10248,6 +12034,16 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + loglevelnext@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" @@ -10311,6 +12107,11 @@ lru-cache@^4.0.1, lru-cache@^4.1.5: pseudomap "^1.0.2" yallist "^2.1.2" +macos-release@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" + integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -10338,6 +12139,23 @@ make-error@1.x, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -10360,6 +12178,11 @@ map-obj@^1.0.0, map-obj@^1.0.1: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + map-or-similar@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" @@ -10513,6 +12336,36 @@ meow@^3.3.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" +meow@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist "^1.1.3" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + merge-deep@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" @@ -10547,6 +12400,14 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== +micromatch@4.x, micromatch@^4.0.0, micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -10566,14 +12427,6 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0, micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -10672,6 +12525,14 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + minimist@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" @@ -10687,12 +12548,7 @@ minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.2.tgz#b00a00230a1108c48c169e69a291aafda3aacd63" - integrity sha512-rIqbOrKb8GJmx/5bc2M0QchhUouMXSpd1RTclXsB41JdL+VtnojfaJR+h7F9k18/4kHUsBFgk80Uk+q569vjPA== - -minimist@^1.2.5: +minimist@1.2.5, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -10718,6 +12574,14 @@ minipass-pipeline@^1.2.2: dependencies: minipass "^3.0.0" +minipass@^2.3.5, 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.1" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" @@ -10725,6 +12589,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" @@ -10765,6 +12636,18 @@ mjolnir.js@^2.4.0: "@babel/runtime" "^7.0.0" hammerjs "^2.0.8" +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mkdirp@0.5.1, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -10779,11 +12662,23 @@ mkdirp@^0.5.3: dependencies: minimist "^1.2.5" +mkdirp@^0.5.4: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mockdate@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-2.0.5.tgz#70c6abf9ed4b2dae65c81dfc170dd1a5cec53620" integrity sha512-ST0PnThzWKcgSLyc+ugLVql45PvESt3Ul/wrdV/OPc/6Pr8dbLAIJsN1cIp41FLzbN+srVTNIRn+5Cju0nyV6A== +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + moment@2.24.0, moment@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" @@ -10816,11 +12711,21 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +multimatch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== + dependencies: + array-differ "^2.0.3" + array-union "^1.0.2" + arrify "^1.0.1" + minimatch "^3.0.4" + murmurhash-js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" @@ -10831,20 +12736,29 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@0.0.8: +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mz@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1, nan@^2.13.2: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== -nanoid@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.3.tgz#b2bcfcfda4b4d6838bc22a0c8dd3c0a17a204c20" - integrity sha512-Zw8rTOUfh6FlKgkEbHiB1buOF2zOPOQyGirABUWn+9Z7m9PpyoLVkh6Ksc53vBjndINQ2+9LfRPaHxb/u45EGg== +nanoid@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.7.tgz#3705ccf590b6a51fbd1794fcf204ce7b5dc46c01" + integrity sha512-ruOwuatdEf4BxQmZopZqhIMudQ9V83aKocr+q2Y7KasnDNvo2OgbgZBYago5hSD0tCmoSl4flIw9ytDLIVM2IQ== nanomatch@^1.2.9: version "1.2.13" @@ -11030,7 +12944,16 @@ node-emoji@^1.8.1: dependencies: lodash.toarray "^4.4.0" -node-fetch@2.6.0, node-fetch@^2.6.0: +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-fetch@2.6.0, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== @@ -11061,6 +12984,23 @@ node-gyp@^3.8.0: tar "^2.0.0" which "1" +node-gyp@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" + integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -11139,10 +13079,10 @@ node-releases@^1.1.29, node-releases@^1.1.44, node-releases@^1.1.46: dependencies: semver "^6.3.0" -node-sass@^4.12.0, node-sass@^4.13.1: - version "4.13.1" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" - integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== +node-sass@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -11158,7 +13098,7 @@ node-sass@^4.12.0, node-sass@^4.13.1: node-gyp "^3.8.0" npmlog "^4.0.0" request "^2.88.0" - sass-graph "^2.2.4" + sass-graph "2.2.5" stdout-stream "^1.4.0" "true-case-path" "^1.0.2" @@ -11169,7 +13109,15 @@ node-sass@^4.12.0, node-sass@^4.13.1: dependencies: abbrev "1" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -11206,11 +13154,70 @@ normalize-url@1.9.1: query-string "^4.1.0" sort-keys "^1.0.0" +normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + normalize.css@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-lifecycle@^3.1.2: + version "3.1.5" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" + integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -11353,6 +13360,11 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +octokit-pagination-methods@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" + integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== + on-finished@^2.3.0, on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -11456,19 +13468,20 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= +os-name@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== dependencies: - lcid "^1.0.0" + macos-release "^2.2.0" + windows-release "^3.1.0" 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: +osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -11531,12 +13544,19 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= + dependencies: + p-reduce "^1.0.0" + p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== -p-map@^2.0.0: +p-map@^2.0.0, p-map@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== @@ -11548,6 +13568,30 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= + +p-queue@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" + integrity sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg== + dependencies: + eventemitter3 "^3.1.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -11558,6 +13602,20 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-waterfall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA= + dependencies: + p-reduce "^1.0.0" + +pad@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1" + integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg== + dependencies: + wcwidth "^1.0.1" + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -11610,6 +13668,11 @@ parse-entities@^1.1.0, parse-entities@^1.1.2: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-github-repo-url@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -11635,6 +13698,24 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" +parse-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + parse5-htmlparser2-tree-adapter@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.0.tgz#a8244ee12bbd6b8937ad2a16ea43fe348aebcc86" @@ -11793,7 +13874,7 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== -pify@^2.0.0, pify@^2.2.0: +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -12357,11 +14438,16 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.16.4, prettier@^1.19.1: +prettier@^1.16.4: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" + integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== + pretty-bytes@5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" @@ -12385,22 +14471,12 @@ pretty-format@^24.9.0: ansi-styles "^3.2.0" react-is "^16.8.4" -pretty-format@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8" - integrity sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ== - dependencies: - "@jest/types" "^25.1.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.2.3.tgz#ba6e9603a0d80fa2e470b1fed55de1f9bfd81421" - integrity sha512-IP4+5UOAVGoyqC/DiomOeHBUKN6q00gfyT2qpAsRH64tgOKB2yF7FHJXC18OCiU0/YFierACup/zdCOWw0F/0w== +pretty-format@^25.2.1, pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== dependencies: - "@jest/types" "^25.2.3" + "@jest/types" "^25.5.0" ansi-regex "^5.0.0" ansi-styles "^4.0.0" react-is "^16.12.0" @@ -12449,6 +14525,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + promise.allsettled@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" @@ -12491,6 +14575,13 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.3" +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= + dependencies: + read "1" + prop-types-exact@1.2.0, prop-types-exact@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" @@ -12516,11 +14607,28 @@ property-information@^5.0.0, property-information@^5.3.0: dependencies: xtend "^4.0.1" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + protocol-buffers-schema@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.3.3.tgz#ad7d23406df6997bab9486a1794ea1d569b43e8e" integrity sha512-jiszJ9Nzo8glRgP+PQ+QdQ/WqoolZLTIGBEG2PBwGWVGbTmq+j4S/3NR1kpoGE+pYXV2HfS8ukxXGKkBnMx7eA== +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -12701,7 +14809,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: +q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -12744,6 +14852,11 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + quickselect@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" @@ -12957,6 +15070,11 @@ react-helmet-async@^1.0.2: react-fast-compare "^2.0.4" shallowequal "^1.1.0" +react-hook-form@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-5.2.0.tgz#b5b654516ee03d55d78b7b9e194c7f4632885426" + integrity sha512-EqGCSl3DxSUBtL/9lFvrFQLJ7ICdVKrfjcMHay2SvmU4trR8aqrd7YuiLSojBKmZBRdBnCcxG+LzLWF9z474NA== + react-hotkeys@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-2.0.0.tgz#a7719c7340cbba888b0e9184f806a9ec0ac2c53f" @@ -13095,6 +15213,34 @@ react@16.12.0, react@^16.12.0, react@^16.8.3: object-assign "^4.1.1" prop-types "^15.6.2" +read-cmd-shim@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== + dependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: + version "2.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@^5.1.6: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -13103,6 +15249,22 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" @@ -13111,7 +15273,7 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" -read-pkg-up@^7.0.0: +read-pkg-up@^7.0.0, read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== @@ -13166,6 +15328,13 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +read@1, read@~1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -13179,6 +15348,15 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +"readable-stream@2 || 3", readable-stream@^3.0.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@^3.1.1: version "3.5.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.5.0.tgz#465d70e6d1087f6162d079cd0b5db7fbebfd1606" @@ -13188,6 +15366,16 @@ readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -13268,6 +15456,14 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + redeyed@~0.4.0: version "0.4.4" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz#37e990a6f2b21b2a11c2e6a48fd4135698cba97f" @@ -13529,7 +15725,7 @@ request-promise-core@1.1.3: dependencies: lodash "^4.17.15" -request-promise-native@^1.0.7, request-promise-native@^1.0.8: +request-promise-native@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== @@ -13564,41 +15760,11 @@ request@^2.87.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -request@cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16: - version "2.88.1" - resolved "https://codeload.github.com/cypress-io/request/tar.gz/b5af0d1fa47eec97ba980cde90a13e69a2afcd16" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -13614,6 +15780,13 @@ resize-observer-polyfill@^1.5.1: resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -13653,13 +15826,20 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.0.0, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.0.0, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1: version "1.14.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== dependencies: path-parse "^1.0.6" +resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + resolve@^1.15.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" @@ -13701,6 +15881,11 @@ retry@0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -13708,7 +15893,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, 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== @@ -13776,13 +15961,20 @@ rw@^1.3.3: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= -rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.2, rxjs@^6.5.3, rxjs@^6.5.4: +rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.2, rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" +rxjs@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -13793,7 +15985,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -13825,15 +16017,15 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== dependencies: glob "^7.0.0" lodash "^4.0.0" scss-tokenizer "^0.2.3" - yargs "^7.0.0" + yargs "^13.3.2" sass-loader@6.0.6: version "6.0.6" @@ -13925,21 +16117,21 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@6.x, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -14176,6 +16368,34 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slide@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -14218,6 +16438,22 @@ sockjs-client@1.4.0: json3 "^3.3.2" url-parse "^1.4.3" +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -14225,6 +16461,13 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -14319,6 +16562,20 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== + dependencies: + through2 "^2.0.2" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + split@~0.2.10: version "0.2.10" resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" @@ -14346,7 +16603,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: +ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== @@ -14473,7 +16730,7 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" -string-width@^1.0.1, string-width@^1.0.2: +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= @@ -14646,6 +16903,11 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -14663,6 +16925,15 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strong-log-transformer@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + style-loader@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" @@ -14834,16 +17105,17 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tailwindcss@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.1.4.tgz#786bd5faaf485c9eddcb821dd55666c56baa814e" - integrity sha512-p4AxVa4CKpX7IbNxImwNMGG9MHuLgratOaOE/iGriNd4AsRQRM2xMisoQ3KQHqShunrWuObga7rI7xbNsVoWGA== +tailwindcss@^1.3: + version "1.3.5" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.3.5.tgz#10e2f9f26b3e9f04d3d411d915f2058765cc3b51" + integrity sha512-hHGShfHBj7tAQRobnsYckDySPpMDnPF4KejHYYRcZjZQvyRRnCSHi2S905icK24HrYadOq9pZKwENqg2axSviw== dependencies: autoprefixer "^9.4.5" bytes "^3.0.0" - chalk "^2.4.1" + chalk "^4.0.0" + detective "^5.2.0" fs-extra "^8.0.0" - lodash "^4.17.11" + lodash "^4.17.15" node-emoji "^1.8.1" normalize.css "^8.0.1" postcss "^7.0.11" @@ -14853,6 +17125,7 @@ tailwindcss@^1.1.4: postcss-selector-parser "^6.0.0" pretty-hrtime "^1.0.3" reduce-css-calc "^2.1.6" + resolve "^1.14.2" tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" @@ -14868,6 +17141,19 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" +tar@^4.4.10, tar@^4.4.12, 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" + telejson@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/telejson/-/telejson-3.3.0.tgz#6d814f3c0d254d5c4770085aad063e266b56ad03" @@ -14882,6 +17168,23 @@ telejson@^3.2.0: lodash "^4.17.15" memoizerific "^1.11.3" +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +temp-write@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= + dependencies: + graceful-fs "^4.1.2" + is-stream "^1.1.0" + make-dir "^1.0.0" + pify "^3.0.0" + temp-dir "^1.0.0" + uuid "^3.0.1" + temp@^0.8.1: version "0.8.4" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" @@ -14968,11 +17271,30 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + thread-loader@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" @@ -14997,7 +17319,7 @@ throttleit@^1.0.0: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= -through2@^2.0.0: +through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -15005,7 +17327,14 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, through@^2.3.6: +through2@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -15160,6 +17489,16 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= + trim-trailing-lines@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a" @@ -15187,10 +17526,10 @@ ts-dedent@^1.1.0: resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.1.0.tgz#67983940793183dc7c7f820acb66ba02cdc33c6e" integrity sha512-CVCvDwMBWZKjDxpN3mU/Dx1v3k+sJgE8nrhXcC9vRopRfoa7vVzilNvHEAUi5jQnmFHpnxDx5jZdI1TpG8ny2g== -ts-jest@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.2.1.tgz#49bf05da26a8b7fbfbc36b4ae2fcdc2fef35c85d" - integrity sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A== +ts-jest@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.5.1.tgz#2913afd08f28385d54f2f4e828be4d261f4337c7" + integrity sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -15198,15 +17537,15 @@ ts-jest@^25.2.1: json5 "2.x" lodash.memoize "4.x" make-error "1.x" + micromatch "4.x" mkdirp "0.x" - resolve "1.x" - semver "^5.5" - yargs-parser "^16.1.0" + semver "6.x" + yargs-parser "18.x" -ts-loader@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.2.tgz#dffa3879b01a1a1e0a4b85e2b8421dc0dfff1c58" - integrity sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== +ts-loader@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.4.tgz#5d9b95227de5afb91fdd9668f8920eb193cfe0cc" + integrity sha512-5du6OQHl+4ZjO4crEyoYUyWSrmmo7bAO+inkaILZ68mvahqrfoa4nn0DRmpQ4ruT4l+cuJCgF0xD7SBIyLeeow== dependencies: chalk "^2.3.0" enhanced-resolve "^4.0.0" @@ -15309,6 +17648,16 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -15374,11 +17723,28 @@ uglify-js@^2.6.1: optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@^3.1.4: + version "3.9.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.1.tgz#a56a71c8caa2d36b5556cc1fd57df01ae3491539" + integrity sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA== + dependencies: + commander "~2.20.3" + uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= + +umask@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= + underscore@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" @@ -15539,6 +17905,20 @@ unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.4.0: dependencies: unist-util-visit-parents "^2.0.0" +universal-user-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" + integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== + dependencies: + os-name "^3.1.0" + +universal-user-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" + integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== + dependencies: + os-name "^3.1.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -15567,7 +17947,7 @@ untildify@4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -upath@^1.1.1: +upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -15647,6 +18027,13 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -15689,26 +18076,31 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.1.0, uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -v8-to-istanbul@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.2.tgz#387d173be5383dbec209d21af033dcb892e3ac82" - integrity sha512-G9R+Hpw0ITAmPSr47lSlc5A1uekSYzXxTMlFxso2xoffwo4jQnzbv1p9yXIinO8UMZKfAFewaCHwWvnH4Jb4Ug== +v8-to-istanbul@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" + integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" source-map "^0.7.3" -validate-npm-package-license@^3.0.1: +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -15716,6 +18108,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + vary@^1.1.2, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -15829,17 +18228,16 @@ w3c-xmlserializer@^1.1.2: webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" -wait-on@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-4.0.1.tgz#c49ca18b1ea60580404feed9df76ab3af2425a56" - integrity sha512-x83fmTH2X0KL7vXoGt9aV5x4SMCvO8A/NbwWpaYYh4NJ16d3KSgbHwBy9dVdHj0B30cEhOFRvDob4fnpUmZxvA== +wait-on@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.0.0.tgz#72e554b338490bbc7131362755ca1af04f46d029" + integrity sha512-6v9lttmGGRT7Lr16E/0rISTBIV1DN72n9+77Bpt1iBfzmhBI+75RDlacFe0Q+JizkmwWXmgHUcFG5cgx3Bwqzw== dependencies: - "@hapi/joi" "^17.1.0" + "@hapi/joi" "^17.1.1" + axios "^0.19.2" lodash "^4.17.15" - minimist "^1.2.0" - request "^2.88.0" - request-promise-native "^1.0.8" - rxjs "^6.5.4" + minimist "^1.2.5" + rxjs "^6.5.5" walker@^1.0.7, walker@~1.0.5: version "1.0.7" @@ -15880,7 +18278,16 @@ watchpack@^1.6.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -wcwidth@^1.0.1: +watchpack@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" + integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== + dependencies: + chokidar "^2.1.8" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= @@ -16026,16 +18433,16 @@ webpack@^4.33.0, webpack@^4.38.0: watchpack "^1.6.0" webpack-sources "^1.4.1" -webpack@^4.42.1: - version "4.42.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef" - integrity sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg== +webpack@^4.43.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.2.1" + acorn "^6.4.1" ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" @@ -16052,7 +18459,7 @@ webpack@^4.42.1: schema-utils "^1.0.0" tapable "^1.1.3" terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" + watchpack "^1.6.1" webpack-sources "^1.4.1" websocket-driver@>=0.5.1: @@ -16100,11 +18507,6 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -16148,6 +18550,13 @@ window-size@0.1.0: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= +windows-release@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" + integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ== + dependencies: + execa "^1.0.0" + with@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" @@ -16166,6 +18575,11 @@ wordwrap@0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -16180,14 +18594,6 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -16228,7 +18634,7 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.3.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== @@ -16247,6 +18653,38 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-json-file@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + pify "^3.0.0" + sort-keys "^2.0.0" + write-file-atomic "^2.0.0" + +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-pkg@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== + dependencies: + sort-keys "^2.0.0" + write-json-file "^2.2.0" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -16276,16 +18714,11 @@ xregexp@^4.3.0: dependencies: "@babel/runtime-corejs3" "^7.8.3" -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -16296,7 +18729,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -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== @@ -16313,6 +18746,21 @@ yaml@^1.7.2: dependencies: "@babel/runtime" "^7.6.3" +yargs-parser@18.x: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + yargs-parser@^13.1.1: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" @@ -16321,10 +18769,18 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -16337,13 +18793,6 @@ yargs-parser@^18.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs@^13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" @@ -16360,6 +18809,39 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^14.2.2: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" + yargs@^15.3.1: version "15.3.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" @@ -16377,25 +18859,6 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.1" -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" @@ -16406,7 +18869,7 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" -yauzl@2.10.0: +yauzl@2.10.0, yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= @@ -16414,13 +18877,6 @@ yauzl@2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= - dependencies: - fd-slicer "~1.0.1" - ylru@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f"