diff --git a/.all-contributorsrc b/.all-contributorsrc index cdb0ae8a74..3f3355af90 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -20,7 +20,8 @@ "code", "content", "ideas", - "review" + "review", + "test" ] }, { @@ -1908,7 +1909,8 @@ "avatar_url": "https://avatars.githubusercontent.com/u/1926271?v=4", "profile": "https://github.com/akbo", "contributions": [ - "code" + "code", + "doc" ] }, { @@ -2167,8 +2169,62 @@ "code", "test" ] + }, + { + "login": "mitchazj", + "name": "Mitchell Johnson", + "avatar_url": "https://avatars.githubusercontent.com/u/15032956?v=4", + "profile": "https://github.com/mitchazj", + "contributions": [ + "code" + ] + }, + { + "login": "Roesh", + "name": "Roshan Manuel", + "avatar_url": "https://avatars.githubusercontent.com/u/31125563?v=4", + "profile": "https://roshan.page/", + "contributions": [ + "code" + ] + }, + { + "login": "kevinlangleyjr", + "name": "Kevin Langley Jr.", + "avatar_url": "https://avatars.githubusercontent.com/u/877634?v=4", + "profile": "https://kevinlangleyjr.com", + "contributions": [ + "code" + ] + }, + { + "login": "heavygabriel", + "name": "Gabriel Picard", + "avatar_url": "https://avatars.githubusercontent.com/u/51029779?v=4", + "profile": "https://projet-test-99df0.firebaseapp.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "chenkie", + "name": "Ryan Chenkie", + "avatar_url": "https://avatars.githubusercontent.com/u/1847678?v=4", + "profile": "http://ryanchenkie.com/", + "contributions": [ + "doc" + ] + }, + { + "login": "sbappan", + "name": "Santhosh B. Appan", + "avatar_url": "https://avatars.githubusercontent.com/u/12586088?v=4", + "profile": "https://github.com/sbappan", + "contributions": [ + "doc" + ] } ], "contributorsPerLine": 7, "skipCi": true -} +} \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index 1e59a70a20..797ac32aa0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -6,7 +6,7 @@ module.exports = { ecmaFeatures: { jsx: true, }, - project: `./tsconfig.json`, + project: `./tsconfig.eslint.json`, }, plugins: ["@typescript-eslint", "import", "unicorn", "simple-import-sort"], extends: ["react-app"], diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dcf5bbaf23..78d85443fe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,6 +39,10 @@ jobs: run: yarn install --frozen-lockfile --silent env: CI: true + - name: manypkg lint + run: yarn manypkg check + env: + CI: true - name: yarn lint run: yarn lint env: diff --git a/.gitignore b/.gitignore index 62ac98b91e..2df0948cbb 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,5 @@ dist **/.test* examples/auth2 .idea +.ultra.cache.json +db.sqlite-journal diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000000..31354ec138 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000000..baec99a60f --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn lint-staged +yarn pretty-quick --staged diff --git a/LICENSE b/LICENSE index f409bbbf20..4efa340991 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 Brandon Bayer +Copyright (c) 2021 Brandon Bayer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 9364191239..379aa0372c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ - + @@ -213,7 +213,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e - + @@ -470,7 +470,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e - + @@ -507,6 +507,14 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e + + + + + + + +

Brandon Bayer

💻 🖋 🤔 👀

Brandon Bayer

💻 🖋 🤔 👀 ⚠️

Rudi Yardley

💻 🤔 👀 ⚠️

Dylan Brookes

💻 🤔 👀 ⚠️ 📖

Adam Markon

💻 🤔 👀 ⚠️ 🚧

Kazuma Suzuki

🎨 💻

Yuji Matsumoto

📖

Gimel Dick

💻

Andreas Bollig

💻

Andreas Bollig

💻 📖

AJ Markow

⚠️ 💻

Lewis Blackburn

📖

Vytenis

💻

Matthieu

💻 ⚠️

Mitchell Johnson

💻

Roshan Manuel

💻

Kevin Langley Jr.

💻

Gabriel Picard

📖

Ryan Chenkie

📖

Santhosh B. Appan

📖
diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..0f4bc29ec3 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,29 @@ +module.exports = { + presets: [ + "@babel/preset-typescript", + "@babel/preset-react", + [ + "@babel/preset-env", + { + modules: false, + loose: true, + exclude: [ + "@babel/plugin-transform-async-to-generator", + "@babel/plugin-transform-regenerator", + ], + }, + ], + ], + plugins: [ + "babel-plugin-annotate-pure-calls", + "babel-plugin-dev-expression", + ["@babel/plugin-proposal-class-properties", {loose: true}], + "babel-plugin-macros", + [ + "transform-inline-environment-variables", + { + include: ["BLITZ_PROD_BUILD"], + }, + ], + ], +} diff --git a/examples/auth/app/auth/mutations/forgotPassword.test.ts b/examples/auth/app/auth/mutations/forgotPassword.test.ts index 3e48b465c2..d218a16038 100644 --- a/examples/auth/app/auth/mutations/forgotPassword.test.ts +++ b/examples/auth/app/auth/mutations/forgotPassword.test.ts @@ -8,8 +8,8 @@ beforeEach(async () => { }) const generatedToken = "plain-token" -jest.mock("blitz", () => ({ - ...jest.requireActual("blitz")!, +jest.mock("@blitzjs/core/server", () => ({ + ...jest.requireActual("@blitzjs/core/server")!, generateToken: () => generatedToken, })) jest.mock("preview-email", () => jest.fn()) diff --git a/examples/auth/app/mutations/makeCoffee.ts b/examples/auth/app/mutations/makeCoffee.ts deleted file mode 100644 index 0d0dd80a9b..0000000000 --- a/examples/auth/app/mutations/makeCoffee.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {resolver} from "blitz" -import db from "db" -import * as z from "zod" - -const __Name__ = z - .object({ - id: z.number(), - }) - .nonstrict() - -export default resolver.pipe(resolver.zod(__Name__), resolver.authorize(), async (input) => { - // Do your stuff :) -}) diff --git a/examples/auth/app/pages/index.test.tsx b/examples/auth/app/pages/index.test.tsx index 924d3a9404..6dc20c9087 100644 --- a/examples/auth/app/pages/index.test.tsx +++ b/examples/auth/app/pages/index.test.tsx @@ -1,8 +1,8 @@ import {render} from "test/utils" import Home from "./index" -jest.mock("blitz", () => ({ - ...jest.requireActual("blitz")!, +jest.mock("@blitzjs/core", () => ({ + ...jest.requireActual("@blitzjs/core")!, useQuery: () => [ { id: 1, diff --git a/examples/auth/app/pages/ssr.tsx b/examples/auth/app/pages/ssr.tsx index c7ae65d904..ac16ee8c20 100644 --- a/examples/auth/app/pages/ssr.tsx +++ b/examples/auth/app/pages/ssr.tsx @@ -1,28 +1,20 @@ -import {FC} from "react" -import {getSessionContext} from "@blitzjs/server" import { + getSession, invokeWithMiddleware, useRouter, - GetServerSideProps, - PromiseReturnType, ErrorComponent as ErrorPage, useMutation, AuthenticationError, AuthorizationError, + GetServerSideProps, + InferGetServerSidePropsType, + BlitzPage, } from "blitz" import getUser from "app/users/queries/getUser" import logout from "app/auth/mutations/logout" import path from "path" -type PageProps = { - user?: PromiseReturnType - error?: { - statusCode: number - message: string - } -} - -export const getServerSideProps: GetServerSideProps = async ({req, res}) => { +export const getServerSideProps: GetServerSideProps = async ({req, res}) => { // Ensure these files are not eliminated by trace-based tree-shaking (like Vercel) // https://github.com/blitz-js/blitz/issues/794 path.resolve("next.config.js") @@ -30,7 +22,7 @@ export const getServerSideProps: GetServerSideProps = async ({req, re path.resolve(".next/blitz/db.js") // End anti-tree-shaking - const session = await getSessionContext(req, res) + const session = await getSession(req, res) console.log("Session id:", session.userId) try { const user = await invokeWithMiddleware( @@ -62,7 +54,7 @@ export const getServerSideProps: GetServerSideProps = async ({req, re } } -const Test: FC = ({user, error}: PageProps) => { +const Test: BlitzPage> = ({user, error}) => { const router = useRouter() const [logoutMutation] = useMutation(logout) diff --git a/examples/auth/blitz.config.js b/examples/auth/blitz.config.js index 7fcf9df72d..dadad2ebe8 100644 --- a/examples/auth/blitz.config.js +++ b/examples/auth/blitz.config.js @@ -1,22 +1,24 @@ -const {sessionMiddleware, simpleRolesIsAuthorized} = require("@blitzjs/server") +const {sessionMiddleware, simpleRolesIsAuthorized} = require("blitz") +const withMonorepoBuildTooling = require("@preconstruct/next") const withBundleAnalyzer = require("@next/bundle-analyzer")({ enabled: process.env.ANALYZE === "true", }) -module.exports = withBundleAnalyzer({ - middleware: [ - sessionMiddleware({ - isAuthorized: simpleRolesIsAuthorized, - // sessionExpiryMinutes: 4, - }), - ], - log: { - // level: "trace", - }, - experimental: { - isomorphicResolverImports: false, - }, - /* +module.exports = withMonorepoBuildTooling( + withBundleAnalyzer({ + middleware: [ + sessionMiddleware({ + isAuthorized: simpleRolesIsAuthorized, + // sessionExpiryMinutes: 4, + }), + ], + log: { + // level: "trace", + }, + experimental: { + isomorphicResolverImports: false, + }, + /* webpack: (config, {buildId, dev, isServer, defaultLoaders, webpack}) => { // Note: we provide webpack above so you should not `require` it // Perform customizations to webpack config @@ -29,4 +31,5 @@ module.exports = withBundleAnalyzer({ return config }, */ -}) + }), +) diff --git a/examples/auth/cypress/integration/index.test.ts b/examples/auth/cypress/integration/index.test.ts index bccf2ad724..a18fe56b4d 100644 --- a/examples/auth/cypress/integration/index.test.ts +++ b/examples/auth/cypress/integration/index.test.ts @@ -53,6 +53,7 @@ describe("index page", () => { cy.contains("button", "Logout").click() cy.location("pathname").should("equal", "/") + cy.wait(1000) cy.contains("a", /login/i) }) @@ -62,6 +63,7 @@ describe("index page", () => { const user = createRandomUser() cy.contains("button", "Track view").click() + cy.wait(500) cy.contains("button", "Track view").click() cy.wait(1000) cy.contains('"views": 2') diff --git a/examples/auth/package.json b/examples/auth/package.json index 4b06dc6925..232e1ec781 100644 --- a/examples/auth/package.json +++ b/examples/auth/package.json @@ -1,6 +1,6 @@ { "name": "@examples/auth", - "version": "0.30.5", + "version": "0.31.1", "scripts": { "dev": "blitz dev", "build": "blitz build", @@ -9,7 +9,7 @@ "lint": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx .", "analyze": "cross-env ANALYZE=true blitz build", "cy:open": "cypress open", - "cy:run": "cypress run || cypress run", + "cy:run": "cypress run --browser chrome", "test": "prisma generate && yarn test:jest && yarn test:e2e", "test:jest": "jest", "test:server": "cross-env NODE_ENV=test blitz prisma migrate deploy --preview-feature && blitz build && cross-env NODE_ENV=test blitz start -p 3099", @@ -27,20 +27,9 @@ "bracketSpacing": false, "trailingComma": "all" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged && pretty-quick --staged", - "pre-push": "blitz test" - } - }, - "lint-staged": { - "*.{js,ts,tsx}": [ - "eslint --fix" - ] - }, "dependencies": { "@prisma/client": "2.17.0", - "blitz": "0.30.5", + "blitz": "0.31.1", "final-form": "4.20.1", "passport-auth0": "1.4.0", "passport-github2": "0.1.12", @@ -55,8 +44,8 @@ "devDependencies": { "@cypress/skip-test": "2.6.0", "@next/bundle-analyzer": "^10.0.6", - "@testing-library/react": "11.2.3", - "@testing-library/react-hooks": "4.0.1", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^4.0.1", "@types/passport-auth0": "1.0.4", "@types/passport-github2": "1.2.4", "@types/passport-twitter": "1.0.36", @@ -65,7 +54,7 @@ "cross-env": "7.0.3", "cypress": "6.2.1", "eslint": "7.18.0", - "husky": "4.3.8", + "husky": "5.1.2", "lint-staged": "10.5.3", "prettier": "2.2.1", "pretty-quick": "3.1.0", diff --git a/examples/auth/tsconfig.json b/examples/auth/tsconfig.json index edf1cf98a1..a3c0cdee48 100644 --- a/examples/auth/tsconfig.json +++ b/examples/auth/tsconfig.json @@ -14,8 +14,9 @@ "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, + "downlevelIteration": true, "jsx": "preserve" }, "exclude": ["node_modules", "cypress"], - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"] + "include": ["**/*.ts", "**/*.tsx"] } diff --git a/examples/auth/types b/examples/auth/types new file mode 120000 index 0000000000..8788aa2845 --- /dev/null +++ b/examples/auth/types @@ -0,0 +1 @@ +../../types \ No newline at end of file diff --git a/examples/auth/types.ts b/examples/auth/types.ts index a123848dd4..dfd2c5d465 100644 --- a/examples/auth/types.ts +++ b/examples/auth/types.ts @@ -1,5 +1,4 @@ -import {DefaultCtx, SessionContext} from "blitz" -import {SimpleRolesIsAuthorized} from "@blitzjs/server" +import {DefaultCtx, SessionContext, SimpleRolesIsAuthorized} from "blitz" import {User} from "db" export type Role = "ADMIN" | "USER" diff --git a/examples/custom-server/app/pages/index.test.tsx b/examples/custom-server/app/pages/index.test.tsx deleted file mode 100644 index 534f563344..0000000000 --- a/examples/custom-server/app/pages/index.test.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from "react" -import {render} from "test/utils" - -import Home from "./index" -import {useCurrentUser} from "app/hooks/useCurrentUser" - -jest.mock("app/hooks/useCurrentUser") -const mockUseCurrentUser = useCurrentUser as jest.MockedFunction - -test.skip("renders blitz documentation link", () => { - // This is an example of how to ensure a specific item is in the document - // But it's disabled by default (by test.skip) so the test doesn't fail - // when you remove the the default content from the page - - // This is an example on how to mock api hooks when testing - mockUseCurrentUser.mockReturnValue({ - id: 1, - name: "User", - email: "user@email.com", - role: "user", - }) - - const {getByText} = render() - const linkElement = getByText(/Documentation/i) - expect(linkElement).toBeInTheDocument() -}) diff --git a/examples/custom-server/blitz.config.js b/examples/custom-server/blitz.config.js index cd2ed4d23a..60b3a9e995 100644 --- a/examples/custom-server/blitz.config.js +++ b/examples/custom-server/blitz.config.js @@ -1,6 +1,7 @@ -const {sessionMiddleware, simpleRolesIsAuthorized} = require("@blitzjs/server") +const {sessionMiddleware, simpleRolesIsAuthorized} = require("blitz") +const withMonorepoBuildTooling = require("@preconstruct/next") -module.exports = { +module.exports = withMonorepoBuildTooling({ middleware: [ sessionMiddleware({ isAuthorized: simpleRolesIsAuthorized, @@ -14,4 +15,4 @@ module.exports = { return config }, */ -} +}) diff --git a/examples/custom-server/package.json b/examples/custom-server/package.json index 6b3ce3c4b1..f806d05487 100644 --- a/examples/custom-server/package.json +++ b/examples/custom-server/package.json @@ -1,6 +1,6 @@ { "name": "@examples/custom-server", - "version": "0.30.5", + "version": "0.31.1", "scripts": { "dev": "nodemon --watch server.js --exec 'blitz dev'", "build": "blitz build", @@ -11,7 +11,7 @@ "cy-open": "cypress open", "cy-run": "cypress run", "test:migrate": "prisma generate && blitz prisma migrate deploy --preview-feature", - "test:jest": "jest", + "test:jest": "jest --passWithNoTests", "test-server": "blitz build && blitz start", "test:e2e": "cross-env NODE_ENV=test PORT=3099 start-server-and-test test-server http://localhost:3099 cy-run", "test": "run-s test:*" @@ -28,25 +28,14 @@ "bracketSpacing": false, "trailingComma": "all" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged && pretty-quick --staged", - "pre-push": "tsc && npm run lint && npm run test" - } - }, - "lint-staged": { - "*.{js,ts,tsx}": [ - "eslint --fix" - ] - }, "dependencies": { "@prisma/client": "2.17.0", - "blitz": "0.30.5", + "blitz": "0.31.1", "final-form": "4.20.1", "prisma": "2.17.0", "react": "0.0.0-experimental-3310209d0", "react-dom": "0.0.0-experimental-3310209d0", - "react-error-boundary": "2.3.2", + "react-error-boundary": "3.1.0", "react-final-form": "6.5.2", "secure-password": "4.0.0", "typescript": "4.1.3", @@ -54,36 +43,19 @@ }, "devDependencies": { "@cypress/skip-test": "2.6.0", - "@testing-library/jest-dom": "5.11.9", - "@testing-library/react": "11.2.3", - "@testing-library/react-hooks": "4.0.1", - "@types/jest": "26.0.20", - "@types/react": "16.14.1", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^4.0.1", + "@types/react": "17.0.0", "@types/secure-password": "3.1.0", - "@typescript-eslint/eslint-plugin": "4.12.0", - "@typescript-eslint/parser": "4.12.0", - "babel-eslint": "10.1.0", "cypress": "6.2.1", "eslint": "7.18.0", - "eslint-config-react-app": "5.2.1", - "eslint-plugin-cypress": "2.11.1", - "eslint-plugin-flowtype": "5.2.0", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsx-a11y": "6.4.1", - "eslint-plugin-react": "7.21.5", - "eslint-plugin-react-hooks": "4.2.0", - "husky": "4.3.8", - "jest": "26.6.3", - "jest-environment-jsdom-fourteen": "1.0.1", - "jest-watch-typeahead": "0.6.1", - "lint-staged": "10.5.1", + "husky": "5.1.2", + "lint-staged": "10.5.3", "nodemon": "2.0.7", "npm-run-all": "4.1.5", - "prettier": "2.2.0", + "prettier": "2.2.1", "pretty-quick": "3.1.0", - "react-test-renderer": "16.14.0", - "start-server-and-test": "1.11.2", - "ts-jest": "26.5.0" + "start-server-and-test": "1.11.7" }, "private": true } diff --git a/examples/custom-server/server.js b/examples/custom-server/server.js index 44cf7bd6ea..63cf2fe57f 100644 --- a/examples/custom-server/server.js +++ b/examples/custom-server/server.js @@ -1,6 +1,6 @@ const {createServer} = require("http") const {parse} = require("url") -const blitz = require("@blitzjs/server") +const blitz = require("blitz/custom-server") const {log} = require("@blitzjs/display") const {PORT = "3000"} = process.env diff --git a/examples/custom-server/types b/examples/custom-server/types new file mode 120000 index 0000000000..8788aa2845 --- /dev/null +++ b/examples/custom-server/types @@ -0,0 +1 @@ +../../types \ No newline at end of file diff --git a/examples/custom-server/types.ts b/examples/custom-server/types.ts index 71fa961ca9..b11dc17f59 100644 --- a/examples/custom-server/types.ts +++ b/examples/custom-server/types.ts @@ -1,5 +1,4 @@ -import {DefaultCtx, SessionContext} from "blitz" -import {simpleRolesIsAuthorized} from "@blitzjs/server" +import {DefaultCtx, SessionContext, SimpleRolesIsAuthorized} from "blitz" import React from "react" declare module "blitz" { @@ -7,7 +6,7 @@ declare module "blitz" { session: SessionContext } export interface Session { - isAuthorized: typeof simpleRolesIsAuthorized + isAuthorized: SimpleRolesIsAuthorized PublicData: { userId: number } diff --git a/examples/fauna/.npmrc b/examples/fauna/.npmrc index cffe8cdef1..1b78f1c6f2 100644 --- a/examples/fauna/.npmrc +++ b/examples/fauna/.npmrc @@ -1 +1,2 @@ save-exact=true +legacy-peer-deps=true diff --git a/examples/fauna/blitz.config.js b/examples/fauna/blitz.config.js index f153c2579f..f9a47d0b86 100644 --- a/examples/fauna/blitz.config.js +++ b/examples/fauna/blitz.config.js @@ -1,4 +1,5 @@ -const { sessionMiddleware, simpleRolesIsAuthorized } = require("@blitzjs/server") +const { sessionMiddleware, simpleRolesIsAuthorized } = require("blitz") +const withMonorepoBuildTooling = require("@preconstruct/next") const { GraphQLClient, gql } = require("graphql-request") const graphQLClient = new GraphQLClient("https://graphql.fauna.com/graphql", { @@ -17,7 +18,7 @@ const normalizeSession = (faunaSession) => { } } -module.exports = { +module.exports = withMonorepoBuildTooling({ middleware: [ sessionMiddleware({ isAuthorized: simpleRolesIsAuthorized, @@ -158,4 +159,4 @@ module.exports = { return config }, */ -} +}) diff --git a/examples/fauna/package.json b/examples/fauna/package.json index 8e9a427dd7..fdd4e60eb0 100644 --- a/examples/fauna/package.json +++ b/examples/fauna/package.json @@ -1,6 +1,6 @@ { "name": "@examples/fauna", - "version": "0.30.5", + "version": "0.31.1", "scripts": { "dev": "blitz dev", "build": "blitz build", @@ -28,7 +28,7 @@ ] }, "dependencies": { - "blitz": "0.30.5", + "blitz": "0.31.1", "final-form": "4.20.1", "graphql": "15.5.0", "graphql-request": "3.4.0", @@ -41,25 +41,25 @@ }, "devDependencies": { "@testing-library/jest-dom": "5.11.9", - "@testing-library/react": "11.2.3", - "@testing-library/react-hooks": "4.0.1", - "@types/jest": "26.0.20", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^4.0.1", + "@types/jest": "^26.0.20", "@types/react": "17.0.0", "@types/secure-password": "3.1.0", - "@typescript-eslint/eslint-plugin": "4.12.0", - "@typescript-eslint/parser": "4.12.0", - "babel-eslint": "10.1.0", + "@typescript-eslint/eslint-plugin": "~4.14.0", + "@typescript-eslint/parser": "~4.14.0", + "babel-eslint": "~10.1.0", "eslint": "7.18.0", - "eslint-config-react-app": "6.0.0", - "eslint-plugin-flowtype": "5.2.0", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsx-a11y": "6.4.1", - "eslint-plugin-react": "7.22.0", - "eslint-plugin-react-hooks": "4.2.0", - "husky": "4.3.8", - "jest": "26.6.3", - "jest-environment-jsdom-fourteen": "1.0.1", - "jest-watch-typeahead": "0.6.1", + "eslint-config-react-app": "~6.0.0", + "eslint-plugin-flowtype": "~5.2.0", + "eslint-plugin-import": "~2.22.1", + "eslint-plugin-jsx-a11y": "~6.4.1", + "eslint-plugin-react": "~7.22.0", + "eslint-plugin-react-hooks": "~4.2.0", + "husky": "5.1.2", + "jest": "^26.6.3", + "jest-environment-jsdom-fourteen": "^1.0.1", + "jest-watch-typeahead": "^0.6.1", "lint-staged": "10.5.3", "prettier": "2.2.1", "pretty-quick": "3.1.0", diff --git a/examples/fauna/types b/examples/fauna/types new file mode 120000 index 0000000000..8788aa2845 --- /dev/null +++ b/examples/fauna/types @@ -0,0 +1 @@ +../../types \ No newline at end of file diff --git a/examples/fauna/types.ts b/examples/fauna/types.ts index 72cba3ccf0..4b3cee2549 100644 --- a/examples/fauna/types.ts +++ b/examples/fauna/types.ts @@ -1,12 +1,11 @@ -import { DefaultCtx, SessionContext } from "blitz" -import { simpleRolesIsAuthorized } from "@blitzjs/server" +import { DefaultCtx, SessionContext, SimpleRolesIsAuthorized } from "blitz" declare module "blitz" { export interface Ctx extends DefaultCtx { session: SessionContext } export interface Session { - isAuthorized: typeof simpleRolesIsAuthorized + isAuthorized: SimpleRolesIsAuthorized PublicData: { userId: string } diff --git a/examples/no-prisma/blitz.config.js b/examples/no-prisma/blitz.config.js index 3b17b02ef1..891863f454 100644 --- a/examples/no-prisma/blitz.config.js +++ b/examples/no-prisma/blitz.config.js @@ -1,4 +1,6 @@ -module.exports = { +const withMonorepoBuildTooling = require("@preconstruct/next") + +module.exports = withMonorepoBuildTooling({ webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => { // Note: we provide webpack above so you should not `require` it // Perform customizations to webpack config @@ -10,4 +12,4 @@ module.exports = { // Important: return the modified config return config }, -} +}) diff --git a/examples/no-prisma/package.json b/examples/no-prisma/package.json index 2955f66378..fe71311be0 100644 --- a/examples/no-prisma/package.json +++ b/examples/no-prisma/package.json @@ -1,6 +1,6 @@ { "name": "no-prisma", - "version": "0.30.5", + "version": "0.31.1", "scripts": { "dev": "blitz dev", "build": "blitz build", @@ -17,8 +17,7 @@ }, "husky": { "hooks": { - "pre-commit": "lint-staged && pretty-quick --staged", - "pre-push": "blitz test" + "pre-commit": "lint-staged && pretty-quick --staged" } }, "lint-staged": { @@ -27,7 +26,7 @@ ] }, "dependencies": { - "blitz": "0.30.5", + "blitz": "0.31.1", "knex": "0.21.16", "react": "0.0.0-experimental-3310209d0", "react-dom": "0.0.0-experimental-3310209d0", @@ -35,17 +34,17 @@ }, "devDependencies": { "@types/react": "17.0.0", - "@typescript-eslint/eslint-plugin": "4.12.0", - "@typescript-eslint/parser": "4.12.0", - "babel-eslint": "10.1.0", + "@typescript-eslint/eslint-plugin": "~4.14.0", + "@typescript-eslint/parser": "~4.14.0", + "babel-eslint": "~10.1.0", "eslint": "7.18.0", - "eslint-config-react-app": "6.0.0", - "eslint-plugin-flowtype": "5.2.0", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsx-a11y": "6.4.1", - "eslint-plugin-react": "7.22.0", - "eslint-plugin-react-hooks": "4.2.0", - "husky": "4.3.8", + "eslint-config-react-app": "~6.0.0", + "eslint-plugin-flowtype": "~5.2.0", + "eslint-plugin-import": "~2.22.1", + "eslint-plugin-jsx-a11y": "~6.4.1", + "eslint-plugin-react": "~7.22.0", + "eslint-plugin-react-hooks": "~4.2.0", + "husky": "5.1.2", "lint-staged": "10.5.3", "prettier": "2.2.1", "pretty-quick": "3.1.0", diff --git a/examples/no-prisma/types b/examples/no-prisma/types new file mode 120000 index 0000000000..8788aa2845 --- /dev/null +++ b/examples/no-prisma/types @@ -0,0 +1 @@ +../../types \ No newline at end of file diff --git a/examples/plain-js/package.json b/examples/plain-js/package.json index 5b41649a48..e8d2a19f57 100644 --- a/examples/plain-js/package.json +++ b/examples/plain-js/package.json @@ -1,6 +1,6 @@ { "name": "@examples/plain-js", - "version": "0.30.5", + "version": "0.31.1", "scripts": { "dev": "blitz dev", "build": "blitz prisma migrate deploy --preview-feature && blitz build", @@ -19,8 +19,7 @@ }, "husky": { "hooks": { - "pre-commit": "lint-staged && pretty-quick --staged", - "pre-push": "blitz test" + "pre-commit": "lint-staged && pretty-quick --staged" } }, "lint-staged": { @@ -31,23 +30,23 @@ }, "dependencies": { "@prisma/client": "2.17.0", - "blitz": "0.30.5", + "blitz": "0.31.1", "prisma": "2.17.0", "react": "0.0.0-experimental-3310209d0", "react-dom": "0.0.0-experimental-3310209d0" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "4.12.0", - "@typescript-eslint/parser": "4.12.0", - "babel-eslint": "10.1.0", + "@typescript-eslint/eslint-plugin": "~4.14.0", + "@typescript-eslint/parser": "~4.14.0", + "babel-eslint": "~10.1.0", "eslint": "7.18.0", - "eslint-config-react-app": "6.0.0", - "eslint-plugin-flowtype": "5.2.0", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsx-a11y": "6.4.1", - "eslint-plugin-react": "7.22.0", - "eslint-plugin-react-hooks": "4.2.0", - "husky": "4.3.8", + "eslint-config-react-app": "~6.0.0", + "eslint-plugin-flowtype": "~5.2.0", + "eslint-plugin-import": "~2.22.1", + "eslint-plugin-jsx-a11y": "~6.4.1", + "eslint-plugin-react": "~7.22.0", + "eslint-plugin-react-hooks": "~4.2.0", + "husky": "5.1.2", "lint-staged": "10.5.3", "prettier": "2.2.1", "pretty-quick": "3.1.0", diff --git a/examples/store/app/pages/_document.tsx b/examples/store/app/pages/_document.tsx index 614d202357..a510cc6531 100644 --- a/examples/store/app/pages/_document.tsx +++ b/examples/store/app/pages/_document.tsx @@ -1,4 +1,4 @@ -import {Document, Html, DocumentHead, Main, BlitzScript, DocumentContext} from "@blitzjs/core" +import {Document, Html, DocumentHead, Main, BlitzScript, DocumentContext} from "blitz" class MyDocument extends Document { static async getInitialProps(ctx: DocumentContext) { diff --git a/examples/store/blitz.config.js b/examples/store/blitz.config.js index 926699068b..c80a855737 100644 --- a/examples/store/blitz.config.js +++ b/examples/store/blitz.config.js @@ -1,4 +1,6 @@ -module.exports = { +const withMonorepoBuildTooling = require("@preconstruct/next") + +module.exports = withMonorepoBuildTooling({ middleware: [ (req, res, next) => { res.blitzCtx.referer = req.headers.referer @@ -22,4 +24,4 @@ module.exports = { // // Important: return the modified config // return config // }, -} +}) diff --git a/examples/store/package.json b/examples/store/package.json index 840ee660f4..8d3a09d9f3 100644 --- a/examples/store/package.json +++ b/examples/store/package.json @@ -1,6 +1,6 @@ { "name": "@examples/store", - "version": "0.30.5", + "version": "0.31.1", "private": true, "scripts": { "build": "blitz prisma migrate deploy --preview-feature && blitz build", @@ -21,7 +21,7 @@ }, "dependencies": { "@prisma/client": "2.17.0", - "blitz": "0.30.5", + "blitz": "0.31.1", "final-form": "4.20.1", "prisma": "2.17.0", "react": "0.0.0-experimental-3310209d0", @@ -33,7 +33,7 @@ "devDependencies": { "@types/react": "17.0.0", "cypress": "6.2.1", - "eslint-plugin-cypress": "2.11.2", + "eslint-plugin-cypress": "~2.11.2", "sass": "1.32.5", "start-server-and-test": "1.11.7" } diff --git a/examples/store/types b/examples/store/types new file mode 120000 index 0000000000..8788aa2845 --- /dev/null +++ b/examples/store/types @@ -0,0 +1 @@ +../../types \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index 39b2b22716..159f74998e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,16 +1,24 @@ -const {resolveAliases} = require("@blitzjs/config") - module.exports = { preset: "ts-jest", testEnvironment: "node", - moduleFileExtensions: ["ts", "tsx", "js", "json"], + moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], modulePathIgnorePatterns: ["/tmp", "/dist", "/templates"], - moduleNameMapper: { - ...resolveAliases.node, + moduleNameMapper: {}, + setupFilesAfterEnv: ["/jest.setup.js"], + transform: { + ".(ts|tsx)$": require.resolve("ts-jest/dist"), + ".(js|jsx)$": require.resolve("babel-jest"), // jest's default }, + transformIgnorePatterns: ["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"], + testMatch: ["/**/*.(spec|test).{ts,tsx,js,jsx}"], + testURL: "http://localhost", + watchPlugins: [ + require.resolve("jest-watch-typeahead/filename"), + require.resolve("jest-watch-typeahead/testname"), + ], coverageReporters: ["json", "lcov", "text", "clover"], // collectCoverage: !!`Boolean(process.env.CI)`, - collectCoverageFrom: ["src/**/*.ts"], + collectCoverageFrom: ["src/**/*.{ts,tsx,js,jsx}"], coveragePathIgnorePatterns: ["/templates/"], // coverageThreshold: { // global: { @@ -20,4 +28,10 @@ module.exports = { // statements: 100, // }, // }, + globals: { + "ts-jest": { + tsconfig: __dirname + "/tsconfig.test.json", + isolatedModules: true, + }, + }, } diff --git a/lerna.json b/lerna.json index dccbe9d1cf..8db654ab63 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.30.5", + "version": "0.31.1", "packages": ["packages/*"], "npmClient": "yarn", "useWorkspaces": true, diff --git a/package.json b/package.json index 92b8d8dafa..7acb6fe428 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,5 @@ { "name": "root", - "private": true, "workspaces": { "packages": [ "packages/*", @@ -12,43 +11,65 @@ "**/@prisma/**" ] }, - "engines": { - "node": ">=12" + "preconstruct": { + "packages": [ + "packages/*", + "!packages/cli", + "!packages/eslint-config" + ] }, "scripts": { - "postinstall": "npm rebuild husky && patch-package", - "predev": "lerna run clean --no-private --stream --parallel", - "dev": "lerna run dev --no-private --stream --parallel", + "postinstall": "husky install", + "dev:tsc": "tsc --watch --pretty --preserveWatchOutput", + "dev:cli": "yarn workspace @blitzjs/cli dev", + "dev:templates": "yarn workspace @blitzjs/generator dev", + "dev": "preconstruct dev && concurrently --names \"typecheck,cli,templates\" -c \"blue,green,yellow,magenta\" -p \"{name}\" \"npm:dev:tsc\" \"npm:dev:cli\" \"npm:dev:templates\"", + "build": "cross-env BLITZ_PROD_BUILD=true preconstruct build && ultra -r --filter 'packages/*' buildpkg && tsc", + "lint": "eslint --ignore-path .gitignore --ignore-pattern types --ext \".js,.ts,.tsx\" .", "link-cli": "yarn workspace blitz link", "unlink-cli": "yarn workspace blitz unlink", - "build": "lerna run build --no-private --stream", - "lint": "eslint --ignore-path .gitignore --ext \".js,.ts,.tsx\" .", - "test": "yarn run lint && yarn run build && lerna run test --stream", + "test": "yarn run lint && yarn run build && ultra -r test", "test:packages": "yarn run build && yarn testonly:packages", "test:examples": "yarn run build && yarn testonly:examples", "testonly": "yarn test:packages && yarn test:examples", - "testonly:packages": "lerna run test --scope blitz && lerna run test --stream --scope @blitzjs/*", - "testonly:examples": "lerna run test --stream --scope @examples/* --concurrency 1", + "testonly:packages": "ultra -r --filter 'packages/*' --concurrency 15 test", + "testonly:examples": "ultra -r --filter 'examples/*' --concurrency 1 test", "reset": "rimraf node_modules && git clean -xfd packages && yarn", - "publish-prep": "lerna run clean && yarn && yarn build", - "prepack": "cpy README.md packages/blitz/", + "publish-prep": "yarn && yarn build", + "prepack": "cpx README.md packages/blitz/", "postpack": "rimraf packages/blitz/README.md", "publish-local": "yarn workspaces run yalc publish", "publish-canary": "yarn run publish-prep && lerna publish --force-publish --preid canary --pre-dist-tag canary", "publish-latest": "yarn run publish-prep && lerna publish --force-publish", "publish-danger": "lerna publish --canary --pre-dist-tag danger --preid danger.$(git rev-parse --short HEAD) --allow-branch * --force-publish", - "danger:push-all": "git push --no-verify && git push --no-verify --tags" + "prerelease": "patch-package", + "release": "release" }, - "resolutions-NOTE1": "typescript and ts-jest pinned to here overside tsdx included versions", - "resolutions": { - "typescript": "4.1.3", - "ts-jest": "26.5.0" + "engines": { + "node": ">=12" + }, + "lint-staged": { + "*.{js,ts,tsx}": [ + "eslint --fix" + ], + "package.json": [ + "manypkg fix" + ] }, - "devDependencies": { + "dependencies": { + "@babel/core": "7.13.1", + "@babel/plugin-proposal-class-properties": "7.13.0", + "@babel/preset-env": "7.13.5", + "@babel/preset-react": "7.12.13", + "@babel/preset-typescript": "7.13.0", + "@manypkg/cli": "0.17.0", + "@preconstruct/cli": "2.0.5", + "@preconstruct/next": "2.0.0", "@rollup/pluginutils": "4.1.0", + "@size-limit/preset-small-lib": "4.9.2", "@testing-library/jest-dom": "5.11.9", - "@testing-library/react": "11.2.3", - "@testing-library/react-hooks": "4.0.1", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^4.0.1", "@types/b64-lite": "1.3.0", "@types/cookie": "0.4.0", "@types/cookie-session": "2.0.42", @@ -62,9 +83,9 @@ "@types/fs-extra": "9.0.6", "@types/fs-readdir-recursive": "1.0.0", "@types/gulp-if": "0.0.33", + "@types/htmlescape": "^1.1.1", "@types/ink-spinner": "3.0.0", - "@types/jest": "26.0.20", - "@types/module-alias": "2.0.0", + "@types/jest": "^26.0.20", "@types/jsonwebtoken": "8.5.0", "@types/lodash": "4.14.168", "@types/mem-fs": "1.1.2", @@ -77,6 +98,7 @@ "@types/passport": "1.0.5", "@types/pluralize": "0.0.29", "@types/prettier": "2.1.6", + "@types/progress": "^2.0.3", "@types/pump": "1.1.0", "@types/pumpify": "1.4.1", "@types/react": "17.0.0", @@ -88,35 +110,39 @@ "@types/through2": "2.0.36", "@types/vinyl": "2.0.4", "@types/vinyl-fs": "2.4.11", - "@typescript-eslint/eslint-plugin": "4.12.0", - "@typescript-eslint/parser": "4.12.0", + "@typescript-eslint/eslint-plugin": "~4.14.0", + "@typescript-eslint/parser": "~4.14.0", "@wessberg/cjs-to-esm-transformer": "0.0.22", "@wessberg/rollup-plugin-ts": "1.3.8", - "babel-eslint": "10.x", + "babel-eslint": "~10.1.0", "babel-jest": "26.6.3", - "concurrently": "5.3.0", - "cpy-cli": "3.1.1", + "babel-plugin-annotate-pure-calls": "0.4.0", + "babel-plugin-dev-expression": "0.2.2", + "babel-plugin-macros": "3.0.1", + "babel-plugin-tester": "10.0.0", + "babel-plugin-transform-inline-environment-variables": "0.4.3", + "concurrently": "6.0.0", + "cpx": "1.5.0", "cross-env": "7.0.3", "cypress": "6.2.1", "debug": "4.3.1", "delay": "4.4.1", "directory-tree": "2.2.5", "eslint": "7.18.0", - "eslint-config-react-app": "6.0.0", + "eslint-config-react-app": "~6.0.0", "eslint-plugin-es": "4.1.0", "eslint-plugin-es5": "1.5.0", - "eslint-plugin-flowtype": "5.2.0", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsx-a11y": "6.4.1", + "eslint-plugin-flowtype": "~5.2.0", + "eslint-plugin-import": "~2.22.1", + "eslint-plugin-jsx-a11y": "~6.4.1", "eslint-plugin-prettier": "3.3.1", - "eslint-plugin-react": "7.22.0", - "eslint-plugin-react-hooks": "4.2.0", + "eslint-plugin-react": "~7.22.0", + "eslint-plugin-react-hooks": "~4.2.0", "eslint-plugin-simple-import-sort": "7.0.0", "eslint-plugin-unicorn": "26.0.1", - "husky": "4.3.8", - "@size-limit/preset-small-lib": "4.9.2", - "size-limit": "4.9.2", - "jest": "26.6.3", + "eslint_d": "10.0.0", + "husky": "5.1.2", + "jest": "^26.6.3", "jest-environment-jsdom-sixteen": "1.0.3", "lerna": "3.22.1", "lint-staged": "10.5.3", @@ -131,7 +157,7 @@ "prompt": "1.1.0", "react-test-renderer": "17.0.1", "release": "6.3.0", - "rimraf": "3.0.2", + "rimraf": "^3.0.2", "rollup": "2.36.1", "rollup-plugin-commonjs": "10.1.0", "rollup-plugin-json": "4.0.0", @@ -139,27 +165,17 @@ "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-peer-deps-external": "2.2.4", "semver": "7.3.4", + "size-limit": "4.9.2", "stdout-stderr": "0.1.13", + "strip-ansi": "6.0.0", "test-listen": "1.1.0", "ts-jest": "26.5.0", - "tsdx": "0.14.1", "tslib": "2.1.0", "typescript": "4.1.3", + "ultra-runner": "3.10.5", "wait-on": "5.2.1", - "yalc": "1.0.0-pre.49", - "eslint_d": "10.0.0" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged && pretty-quick --staged", - "pre-push": "yarn lint", - "post-rebase": "yarn install" - } - }, - "lint-staged": { - "*.{js,ts,tsx}": [ - "eslint --fix" - ] + "yalc": "1.0.0-pre.49" }, + "private": true, "version": "0.0.0" } diff --git a/packages/babel-preset/jest.config.js b/packages/babel-preset/jest.config.js new file mode 100644 index 0000000000..e00a32d77f --- /dev/null +++ b/packages/babel-preset/jest.config.js @@ -0,0 +1,4 @@ +module.exports = { + preset: '../../jest.config.js', + testEnvironment: 'jest-environment-jsdom-sixteen', +}; diff --git a/tsconfig.build.json b/packages/babel-preset/jest.setup.js similarity index 100% rename from tsconfig.build.json rename to packages/babel-preset/jest.setup.js diff --git a/packages/babel-preset/package.json b/packages/babel-preset/package.json index 0144c8604b..512d86eebd 100644 --- a/packages/babel-preset/package.json +++ b/packages/babel-preset/package.json @@ -1,30 +1,25 @@ { "name": "@blitzjs/babel-preset", - "version": "0.30.5", + "version": "0.31.1", "license": "MIT", - "main": "dist/index.js", - "typings": "dist/index.d.ts", + "scripts": { + "test": "jest", + "test:watch": "jest --watch" + }, + "module": "dist/blitzjs-babel-preset.esm.js", + "main": "dist/blitzjs-babel-preset.cjs.js", + "typings": "dist/blitzjs-babel-preset.cjs.d.ts", + "author": "Brandon Bayer", "files": [ "dist", "src" ], - "scripts": { - "clean": "rimraf dist", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test --passWithNoTests", - "test:watch": "tsdx test --watch --passWithNoTests", - "size": "size-limit", - "analyze": "size-limit --why" - }, "prettier": { "printWidth": 80, "semi": true, "singleQuote": true, "trailingComma": "es5" }, - "author": "Brandon Bayer", - "module": "dist/babel-preset.esm.js", "size-limit": [ { "path": "dist/babel-preset.cjs.production.min.js", @@ -36,6 +31,13 @@ } ], "dependencies": { + "@babel/helper-module-imports": "^7.0.0", "babel-plugin-superjson-next": "0.2.2" + }, + "peerDependencies": { + "@babel/core": "*" + }, + "devDependencies": { + "@babel/core": "7.13.1" } } diff --git a/packages/babel-preset/src/index.ts b/packages/babel-preset/src/index.ts index 48efa625c9..4ce300a678 100644 --- a/packages/babel-preset/src/index.ts +++ b/packages/babel-preset/src/index.ts @@ -1,9 +1,19 @@ import AddBlitzAppRoot from './add-blitz-app-root'; +import RewriteImports from './rewrite-imports'; // eslint-disable-next-line import/no-default-export export default function preset(_api: any, options = {}) { - return { + // const isTest = _api.env('test'); + const isRunningInJest = Boolean(process.env.JEST_WORKER_ID); + + const config = { presets: [[require('next/babel'), options]], plugins: [require('babel-plugin-superjson-next'), AddBlitzAppRoot], }; + + if (!isRunningInJest) { + config.plugins.push(RewriteImports); + } + + return config; } diff --git a/packages/babel-preset/src/rewrite-imports.test.ts b/packages/babel-preset/src/rewrite-imports.test.ts new file mode 100644 index 0000000000..3cbad29eb5 --- /dev/null +++ b/packages/babel-preset/src/rewrite-imports.test.ts @@ -0,0 +1,41 @@ +import pluginTester from 'babel-plugin-tester'; +import RewriteImports from './rewrite-imports'; + +pluginTester({ + pluginName: RewriteImports.name, + plugin: RewriteImports, + tests: [ + { + code: `import { useQuery } from 'blitz';`, + output: `import { useQuery } from '@blitzjs/core';`, + }, + { + code: `import { Image } from 'blitz';`, + output: `import { Image } from '@blitzjs/core/image';`, + }, + { + code: `import {Image, Link} from 'blitz';`, + output: ` + import { Link } from '@blitzjs/core'; + import { Image } from '@blitzjs/core/image'; + `, + }, + { + code: `import {Image as BlitzImage, Link} from 'blitz';`, + output: ` + import { Link } from '@blitzjs/core'; + import { Image as BlitzImage } from '@blitzjs/core/image'; + `, + }, + { + code: `import {Document, Html, DocumentHead, Main, BlitzScript} from "blitz";`, + output: ` + import { BlitzScript } from '@blitzjs/core/document'; + import { Main } from '@blitzjs/core/document'; + import { DocumentHead } from '@blitzjs/core/document'; + import { Html } from '@blitzjs/core/document'; + import { Document } from '@blitzjs/core/document'; + `, + }, + ], +}); diff --git a/packages/babel-preset/src/rewrite-imports.ts b/packages/babel-preset/src/rewrite-imports.ts new file mode 100644 index 0000000000..f8adf1d227 --- /dev/null +++ b/packages/babel-preset/src/rewrite-imports.ts @@ -0,0 +1,110 @@ +import { PluginObj } from '@babel/core'; +import { BabelType } from 'babel-plugin-tester'; + +/* + * https://astexplorer.net/#/gist/dd0cdbd56a701d8c9e078d20505b3980/latest + */ + +const defaultImportSource = '@blitzjs/core'; + +const specialImports: Record = { + Image: '@blitzjs/core/image', + + Head: '@blitzjs/core/head', + + dynamic: '@blitzjs/core/dynamic', + noSSR: '@blitzjs/core/dynamic', + + getConfig: '@blitzjs/core/config', + setConfig: '@blitzjs/core/config', + + Document: '@blitzjs/core/document', + DocumentHead: '@blitzjs/core/document', + Html: '@blitzjs/core/document', + Main: '@blitzjs/core/document', + BlitzScript: '@blitzjs/core/document', + + getAllMiddlewareForModule: '@blitzjs/core/server', + handleRequestWithMiddleware: '@blitzjs/core/server', + connectMiddleware: '@blitzjs/core/server', + invokeWithMiddleware: '@blitzjs/core/server', + paginate: '@blitzjs/core/server', + resolver: '@blitzjs/core/server', + isLocalhost: '@blitzjs/core/server', + passportAuth: '@blitzjs/core/server', + sessionMiddleware: '@blitzjs/core/server', + simpleRolesIsAuthorized: '@blitzjs/core/server', + getSession: '@blitzjs/core/server', + SecurePassword: '@blitzjs/core/server', + hash256: '@blitzjs/core/server', + generateToken: '@blitzjs/core/server', + rpcApiHandler: '@blitzjs/core/server', +}; + +function RewriteImports(babel: BabelType): PluginObj { + const { types: t } = babel; + + return { + name: 'RewriteImports', + visitor: { + ImportDeclaration(path) { + if ( + !looksLike(path, { + node: { + source: { value: 'blitz' }, + }, + }) + ) { + return; + } + + path.node.source = t.stringLiteral(defaultImportSource); + + const specifierIndexesToRemove: number[] = []; + path.node.specifiers.slice().forEach((specifier, index) => { + if (!t.isImportSpecifier(specifier)) return; + const importedName = t.isStringLiteral(specifier.imported) + ? specifier.imported.value + : specifier.imported.name; + if (importedName in specialImports) { + path.insertAfter( + t.importDeclaration( + [specifier], + t.stringLiteral(specialImports[importedName]) + ) + ); + + specifierIndexesToRemove.push(index); + } + }); + specifierIndexesToRemove.reverse().forEach((index) => { + path.node.specifiers.splice(index, 1); + }); + if (!path.node.specifiers.length) { + path.remove(); + } + }, + }, + }; +} + +function looksLike(a: any, b: any): boolean { + return ( + a && + b && + Object.keys(b).every((bKey) => { + const bVal = b[bKey]; + const aVal = a[bKey]; + if (typeof bVal === 'function') { + return bVal(aVal); + } + return isPrimitive(bVal) ? bVal === aVal : looksLike(aVal, bVal); + }) + ); +} +function isPrimitive(val: any) { + return val == null || /^[sbn]/.test(typeof val); +} + +// eslint-disable-next-line import/no-default-export +export default RewriteImports; diff --git a/packages/babel-preset/test/blah.test.ts b/packages/babel-preset/test/blah.test.ts deleted file mode 100644 index 33ebf5319c..0000000000 --- a/packages/babel-preset/test/blah.test.ts +++ /dev/null @@ -1,3 +0,0 @@ -it.skip('works', () => { - expect(true).toBe(true); -}); diff --git a/packages/babel-preset/tsconfig.json b/packages/babel-preset/tsconfig.json deleted file mode 100644 index 7d1fedfe18..0000000000 --- a/packages/babel-preset/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "types"], - "compilerOptions": { - "rootDir": "./src", - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true - } -} diff --git a/packages/blitz/bin/blitz b/packages/blitz/bin/blitz index d818077bff..4025def2d3 100755 --- a/packages/blitz/bin/blitz +++ b/packages/blitz/bin/blitz @@ -8,7 +8,7 @@ if (process.env.INSPECT_BRK === 'true') { } try { - const cliBin = require.resolve('../dist/cli') + const cliBin = require.resolve('../cli/dist/blitz-cli.cjs') const binArgs = process.argv.slice(2) const result = spawn.sync('node', [...nodeOpts, cliBin, ...binArgs], { stdio: 'inherit' }) process.exit(result.status) diff --git a/packages/blitz/cli/package.json b/packages/blitz/cli/package.json new file mode 100644 index 0000000000..c79d9317a7 --- /dev/null +++ b/packages/blitz/cli/package.json @@ -0,0 +1,4 @@ +{ + "main": "dist/blitz-cli.cjs.js", + "module": "dist/blitz-cli.esm.js" +} diff --git a/packages/blitz/custom-server/package.json b/packages/blitz/custom-server/package.json new file mode 100644 index 0000000000..9c7dcf5af3 --- /dev/null +++ b/packages/blitz/custom-server/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitz-custom-server.cjs.js", + "module": "dist/blitz-custom-server.esm.js", + "types": "dist/blitz-custom-server.cjs.d.ts" +} diff --git a/packages/blitz/jest-preset.js b/packages/blitz/jest-preset.js index 48e0e9f645..f7b0b225d0 100644 --- a/packages/blitz/jest-preset.js +++ b/packages/blitz/jest-preset.js @@ -1,13 +1,11 @@ const path = require("path") const {pathsToModuleNameMapper} = require("ts-jest/utils") -const {getProjectRoot, resolveAliases} = require("@blitzjs/config") +const {getProjectRoot} = require("@blitzjs/config") const projectRoot = getProjectRoot() const {compilerOptions} = require(path.join(projectRoot, "tsconfig")) const common = { globalSetup: path.resolve(__dirname, "./jest-preset/global-setup.js"), - // Add type checking to TypeScript test files - preset: "ts-jest", // Automatically clear mock calls and instances between every test clearMocks: true, testPathIgnorePatterns: [ @@ -18,16 +16,11 @@ const common = { "/test/e2e", "/cypress", ], - transformIgnorePatterns: ["[/\\\\]node_modules[/\\\\].+\\.(ts|tsx)$"], - transform: { - "^.+\\.(ts|tsx)$": "babel-jest", - }, // This makes absolute imports work moduleDirectories: ["node_modules", ""], // Ignore the build directories modulePathIgnorePatterns: ["/.blitz", "/.next"], moduleNameMapper: { - ...resolveAliases.node, // This ensures any path aliases in tsconfig also work in jest ...pathsToModuleNameMapper(compilerOptions.paths || {}), "\\.(css|less|sass|scss)$": path.resolve(__dirname, "./jest-preset/identity-obj-proxy.js"), diff --git a/packages/blitz/jest.config.js b/packages/blitz/jest.config.js new file mode 100644 index 0000000000..caa51b037b --- /dev/null +++ b/packages/blitz/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: "../../jest.config.js", +} diff --git a/packages/blitz/package.json b/packages/blitz/package.json index 6f1cc6f6fb..a4168ec3eb 100644 --- a/packages/blitz/package.json +++ b/packages/blitz/package.json @@ -1,28 +1,34 @@ { "name": "blitz", "description": "Blitz is a Rails-like framework for monolithic, full-stack React apps — built on Next.js", - "version": "0.30.5", + "version": "0.31.1", "license": "MIT", "scripts": { - "clean": "rimraf dist", - "predev": "wait-on ../core/dist/packages/core/src/index.d.ts && wait-on ../server/dist/packages/server/src/index.d.ts && wait-on ../generator/dist/packages/generator/src/index.d.ts && wait-on ../cli/lib/src/index.js", - "dev": "rollup -c rollup.config.js --watch", - "build": "rollup -c rollup.config.js", - "test": "tsdx test" + "test": "jest", + "test:watch": "jest --watch" }, "author": { "name": "Brandon Bayer", "email": "b@bayer.ws", "url": "https://twitter.com/flybayer" }, + "preconstruct": { + "entrypoints": [ + "index.ts", + "cli.ts", + "custom-server.ts" + ] + }, "bin": { "blitz": "./bin/blitz" }, - "main": "dist/index.js", + "main": "dist/blitz.cjs.js", "module": "dist/blitz.esm.js", - "types": "dist/index.d.ts", + "types": "dist/blitz.cjs.d.ts", "files": [ "dist", + "cli", + "custom-server", "jest-preset.js", "jest-preset", "babel.js" @@ -43,28 +49,35 @@ "url": "https://github.com/blitz-js/blitz" }, "dependencies": { - "@blitzjs/babel-preset": "0.30.5", - "@blitzjs/cli": "0.30.5", - "@blitzjs/config": "0.30.5", - "@blitzjs/core": "0.30.5", - "@blitzjs/display": "0.30.5", - "@blitzjs/generator": "0.30.5", - "@blitzjs/installer": "0.30.5", - "@blitzjs/server": "0.30.5", + "@blitzjs/babel-preset": "0.31.1", + "@blitzjs/cli": "0.31.1", + "@blitzjs/config": "0.31.1", + "@blitzjs/core": "0.31.1", + "@blitzjs/display": "0.31.1", + "@blitzjs/generator": "0.31.1", + "@blitzjs/installer": "0.31.1", + "@blitzjs/server": "0.31.1", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "^11.2.3", "@testing-library/react-hooks": "^4.0.1", "@types/jest": "^26.0.20", + "chalk": "^4.1.0", "envinfo": "^7.7.3", - "eslint-config-blitz": "0.30.5", + "eslint-config-blitz": "0.31.1", "jest": "^26.6.3", "jest-environment-jsdom-fourteen": "^1.0.1", "jest-watch-typeahead": "^0.6.1", "os-name": "^4.0.0", "pkg-dir": "^5.0.0", - "react-test-renderer": "0.0.0-experimental-3310209d0", + "react-test-renderer": "17.0.1", "resolve-from": "^5.0.0", - "ts-jest": "^26.4.4" + "ts-jest": "26.5.0" + }, + "devDependencies": { + "next": "10.0.7" + }, + "peerDependencies": { + "next": "*" }, "keywords": [ "blitz", diff --git a/packages/blitz/src/bin/cli.ts b/packages/blitz/src/cli.ts similarity index 98% rename from packages/blitz/src/bin/cli.ts rename to packages/blitz/src/cli.ts index 74bffd2128..95237d1911 100755 --- a/packages/blitz/src/bin/cli.ts +++ b/packages/blitz/src/cli.ts @@ -2,7 +2,7 @@ import chalk from "chalk" import * as path from "path" import pkgDir from "pkg-dir" import resolveFrom from "resolve-from" -import {parseSemver} from "../utils/parse-semver" +import {parseSemver} from "./utils/parse-semver" async function main() { const options = require("minimist")(process.argv.slice(2)) diff --git a/packages/blitz/src/custom-server.ts b/packages/blitz/src/custom-server.ts new file mode 100644 index 0000000000..b402772895 --- /dev/null +++ b/packages/blitz/src/custom-server.ts @@ -0,0 +1,10 @@ +import next from "next" + +// Support commonjs `require('blitz')` +if (process.env.BLITZ_PROD_BUILD) { + module.exports = next + exports = module.exports +} + +// eslint-disable-next-line import/no-default-export +export default next diff --git a/packages/blitz/src/index.ts b/packages/blitz/src/index.ts index fd1b10efa4..e7c3adf612 100644 --- a/packages/blitz/src/index.ts +++ b/packages/blitz/src/index.ts @@ -1 +1,7 @@ +export * from "@blitzjs/core/config" +export * from "@blitzjs/core/document" +export * from "@blitzjs/core/dynamic" +export * from "@blitzjs/core/head" +export * from "@blitzjs/core/image" export * from "@blitzjs/core" +export * from "@blitzjs/core/server" diff --git a/packages/blitz/tsconfig.json b/packages/blitz/tsconfig.json deleted file mode 100644 index b7e1d5cea6..0000000000 --- a/packages/blitz/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "types", "test"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "downlevelIteration": true, - "paths": { - "*": ["src/*", "node_modules/*"] - }, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/cli/jest.config.js b/packages/cli/jest.config.js index ad2725658b..111f511f81 100644 --- a/packages/cli/jest.config.js +++ b/packages/cli/jest.config.js @@ -1,13 +1,7 @@ module.exports = { preset: "../../jest.config.js", // collectCoverage: !!`Boolean(process.env.CI)`, - modulePathIgnorePatterns: ["/tmp", "/lib"], - testPathIgnorePatterns: ["src/commands/test.ts"], + modulePathIgnorePatterns: ["/tmp", "/lib", "/commands/.test"], + testPathIgnorePatterns: ["src/commands/test.ts", "test/commands/.test"], testTimeout: 30000, - globals: { - "ts-jest": { - tsconfig: "test/tsconfig.json", - isolatedModules: true, - }, - }, } diff --git a/packages/cli/package.json b/packages/cli/package.json index e9aaaf5d83..3782756f3c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,19 +1,12 @@ { "name": "@blitzjs/cli", "description": "Blitz.js CLI", - "version": "0.30.5", + "version": "0.31.1", "license": "MIT", "scripts": { - "b": "./bin/run", - "clean": "rimraf lib", - "predev": "yarn wait:installer && yarn wait:server && yarn wait:generator && yarn wait:repl", - "wait:generator": "wait-on ../generator/dist/packages/generator/src/index.d.ts", - "wait:server": "wait-on ../server/dist/packages/server/src/index.d.ts", - "wait:installer": "wait-on ../installer/dist/packages/installer/src/index.d.ts", - "wait:repl": "wait-on ../repl/dist/packages/repl/src/index.d.ts", - "dev": "rimraf lib && tsc --watch --preserveWatchOutput", - "build": "rimraf lib && tsc", - "test": "tsdx test", + "dev": "rimraf lib && tsc --watch --pretty --preserveWatchOutput", + "buildpkg": "rimraf lib && tsc", + "test": "jest", "test:watch": "jest --watch", "cypress:open": "cypress open", "cypress:run": "cypress run" @@ -32,8 +25,8 @@ "/lib" ], "dependencies": { - "@blitzjs/display": "0.30.5", - "@blitzjs/repl": "0.30.5", + "@blitzjs/display": "0.31.1", + "@blitzjs/repl": "0.31.1", "@oclif/command": "1.8.0", "@oclif/config": "1.17.0", "@oclif/plugin-autocomplete": "0.3.0", @@ -42,7 +35,7 @@ "@prisma/sdk": "2.17.0", "@salesforce/lazy-require": "0.4.0", "camelcase": "^6.2.0", - "chalk": "4.1.0", + "chalk": "^4.1.0", "cross-spawn": "7.0.3", "dotenv-expand": "^5.1.0", "dotenv-flow": "^3.2.0", @@ -53,7 +46,6 @@ "hasbin": "1.2.3", "import-cwd": "3.0.0", "minimist": "1.2.5", - "module-alias": "2.2.2", "p-event": "4.2.0", "pkg-dir": "^5.0.0", "pluralize": "^8.0.0", @@ -64,9 +56,9 @@ "v8-compile-cache": "2.2.0" }, "devDependencies": { - "@blitzjs/generator": "0.30.5", - "@blitzjs/installer": "0.30.5", - "@blitzjs/server": "0.30.5", + "@blitzjs/generator": "0.31.1", + "@blitzjs/installer": "0.31.1", + "@blitzjs/server": "0.31.1", "@oclif/dev-cli": "1.26.0", "@oclif/test": "1.2.8", "nock": "13.0.6", diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index bdd10bb92c..963a30ca59 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -1,5 +1,5 @@ import {Command, flags} from "@oclif/command" -import {build as ServerBuild, ServerConfig} from "@blitzjs/server" +import {ServerConfig} from "@blitzjs/server" export class Build extends Command { static description = "Creates a production build" @@ -17,7 +17,7 @@ export class Build extends Command { this.parse(Build) try { - const build: typeof ServerBuild = require("@blitzjs/server").build + const {build} = await import("@blitzjs/server") await build(config) } catch (err) { console.error(err) diff --git a/packages/cli/src/commands/new.ts b/packages/cli/src/commands/new.ts index 57234b8f8a..84c05f9baf 100644 --- a/packages/cli/src/commands/new.ts +++ b/packages/cli/src/commands/new.ts @@ -84,10 +84,13 @@ export class New extends Command { }) if (promptUpgrade.upgrade === "yes") { + var useYarn: boolean = false + const checkYarn = spawn.sync("yarn", ["global", "list"], {stdio: "pipe"}) - const useYarn = checkYarn.stdout.toString().includes("blitz@") + if (checkYarn && checkYarn.stdout) { + useYarn = checkYarn.stdout.toString().includes("blitz@") + } const upgradeOpts = useYarn ? ["global", "add", "blitz"] : ["i", "-g", "blitz@latest"] - spawn.sync(useYarn ? "yarn" : "npm", upgradeOpts, {stdio: "inherit"}) const versionResult = spawn.sync("blitz", ["--version"], {stdio: "pipe"}) @@ -142,8 +145,9 @@ export class New extends Command { const {"dry-run": dryRun, "skip-install": skipInstall, npm} = flags const needsInstall = dryRun || skipInstall const postInstallSteps = [`cd ${args.name}`] + const AppGenerator = require("@blitzjs/generator").AppGenerator - const generator = new (require("@blitzjs/generator").AppGenerator)({ + const generator = new AppGenerator({ destinationRoot, appName, dryRun, diff --git a/packages/cli/src/commands/test.ts b/packages/cli/src/commands/test.ts deleted file mode 100644 index c1f07d0f64..0000000000 --- a/packages/cli/src/commands/test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import {spawn} from "cross-spawn" -import {Command, flags} from "@oclif/command" - -export class Test extends Command { - static description = "Run project tests" - static aliases = ["t"] - - static args = [ - { - name: "watch", - description: "Run test:watch", - }, - ] - - static flags = { - help: flags.help({char: "h"}), - } - - async run() { - const {args} = this.parse(Test) - - let watchMode: boolean = false - const watch = args["watch"] - if (watch) { - watchMode = watch === "watch" || watch === "w" - } - const packageManager = require("has-yarn")() ? "yarn" : "npm" - - if (watchMode) spawn(packageManager, ["test:watch"], {stdio: "inherit"}) - else spawn(packageManager, ["test"], {stdio: "inherit"}) - } -} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index c71c95e410..1a8b25b52c 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -3,10 +3,6 @@ const cacheFile = require("path").join(__dirname, ".blitzjs-cli-cache") const lazyLoad = require("@salesforce/lazy-require").default.create(cacheFile) lazyLoad.start() import {run as oclifRun} from "@oclif/command" -import moduleAlias from "module-alias" -import {resolveAliases} from "@blitzjs/config" - -moduleAlias.addAliases(resolveAliases.node) // Load the .env environment variable so it's available for all commands require("dotenv-expand")(require("dotenv-flow").config({silent: true})) diff --git a/packages/cli/test/commands/test.test.ts b/packages/cli/test/commands/test.test.ts deleted file mode 100644 index ede8957614..0000000000 --- a/packages/cli/test/commands/test.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -jest.mock("cross-spawn") -jest.mock("has-yarn") - -import crossSpawn from "cross-spawn" -import hasYarn from "has-yarn" -import {Test} from "../../src/commands/test" - -const testParams = [["test"], {stdio: "inherit"}] -const testWatchParams = [["test:watch"], {stdio: "inherit"}] - -describe("Test command", () => { - beforeEach(() => { - jest.clearAllMocks() - }) - - it("runs yarn test script", async () => { - jest.spyOn(hasYarn, "default").mockReturnValue(true) - - await Test.run([]) - - expect(crossSpawn.spawn).toBeCalledWith("yarn", ...testParams) - }) - - it("runs npm test script", async () => { - jest.spyOn(hasYarn, "default").mockReturnValue(false) - - await Test.run([]) - - expect(crossSpawn.spawn).toBeCalledWith("npm", ...testParams) - }) - - it("runs yarn test:watch script", async () => { - jest.spyOn(hasYarn, "default").mockReturnValue(true) - - await Test.run(["watch"]) - - expect(crossSpawn.spawn).toBeCalledWith("yarn", ...testWatchParams) - }) - - it("runs yarn test:watch script with alias", async () => { - jest.spyOn(hasYarn, "default").mockReturnValue(true) - - await Test.run(["w"]) - - expect(crossSpawn.spawn).toBeCalledWith("yarn", ...testWatchParams) - }) - - it("runs yarn test and ignores invalid argument", async () => { - jest.spyOn(hasYarn, "default").mockReturnValue(true) - - await Test.run(["invalid"]) - - expect(crossSpawn.spawn).toBeCalledWith("yarn", ...testParams) - }) -}) diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 3fef3127f3..7c6cdde0ea 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -2,17 +2,17 @@ "extends": "../../tsconfig.json", "compilerOptions": { "target": "es2015", + "lib": ["dom", "dom.iterable", "ES2018"], + "rootDir": ".", "baseUrl": "./", "module": "commonjs", - "rootDir": ".", "outDir": "lib", "declaration": false, "sourceMap": false, "esModuleInterop": true, - "types": [], + "isolatedModules": false, "noEmit": false, - "lib": ["dom", "dom.iterable", "ES2018"] + "incremental": true }, - "include": ["src/**/*", "types", "../../types"], - "exclude": ["node_modules"] + "include": ["src/**/*", "types", "../../types"] } diff --git a/packages/config/index-browser.js b/packages/config/index-browser.js deleted file mode 100644 index 4ba52ba2c8..0000000000 --- a/packages/config/index-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/packages/config/package.json b/packages/config/package.json index c376282140..f73f510ae0 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -1,28 +1,18 @@ { "name": "@blitzjs/config", - "version": "0.30.5", + "version": "0.31.1", "description": "Loads the blitz app config", "license": "MIT", "scripts": { - "clean": "rimraf dist", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test --env=jest-environment-jsdom-sixteen --passWithNoTests", - "test:watch": "tsdx test --watch --env=jest-environment-jsdom-sixteen" + "test": "jest --passWithNoTests", + "test:watch": "jest --watch" }, - "browser": "index-browser.js", - "main": "dist/index.js", - "module": "dist/config.esm.js", - "types": "dist/packages/config/src/index.d.ts", + "main": "dist/blitzjs-config.cjs.js", + "module": "dist/blitzjs-config.esm.js", + "types": "dist/blitzjs-config.cjs.d.ts", "files": [ - "dist", - "index-browser.js" + "dist" ], - "jest": { - "setupFilesAfterEnv": [ - "/jest.setup.js" - ] - }, "keywords": [ "next.config.js", "blitz.config.js", @@ -35,6 +25,7 @@ }, "gitHead": "d3b9fce0bdd251c2b1890793b0aa1cd77c1c0922", "dependencies": { - "module-alias": "2.2.2" + "fs-extra": "^9.1.0", + "pkg-dir": "^5.0.0" } } diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 50bc698f68..66cb17f0fe 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -1,4 +1,4 @@ -import {readJSONSync} from "fs-extra" +import {existsSync, readJSONSync} from "fs-extra" import {join} from "path" import path from "path" import pkgDir from "pkg-dir" @@ -7,20 +7,6 @@ export function getProjectRoot() { return pkgDir.sync() || process.cwd() } -const projectRoot = getProjectRoot() - -export const resolveAliases = { - node: { - "__blitz__/config-file": path.join(projectRoot, "blitz.config.js"), - }, - webpack: { - // In webpack build, next.config.js is always present which wraps blitz.config.js - "__blitz__/config-file": path.join(projectRoot, "next.config.js"), - }, -} - -require("module-alias").addAliases(resolveAliases.node) - export interface BlitzConfig extends Record { target?: string experimental?: { @@ -61,22 +47,46 @@ export const getConfig = (reload?: boolean): BlitzConfig => { }, } - let file - let loadedConfig = {} + const projectRoot = getProjectRoot() + const nextConfigPath = path.join(projectRoot, "next.config.js") + const blitzConfigPath = path.join(projectRoot, "blitz.config.js") + try { + // -------------------------------- + // Load next.config.js if it exists + // -------------------------------- + let loadedNextConfig = {} + if (existsSync(nextConfigPath)) { + // eslint-disable-next-line no-eval -- block webpack from following this module path + loadedNextConfig = eval("require")(nextConfigPath) + if (typeof loadedNextConfig === "function") { + const phase = + process.env.NODE_ENV === "production" ? PHASE_PRODUCTION_SERVER : PHASE_DEVELOPMENT_SERVER + loadedNextConfig = loadedNextConfig(phase, {}) + } + } + + // -------------------------------- + // Load blitz.config.js + // -------------------------------- // eslint-disable-next-line no-eval -- block webpack from following this module path - file = eval("require")("__blitz__/config-file") - if (typeof file === "function") { + let loadedBlitzConfig = eval("require")(blitzConfigPath) + if (typeof loadedBlitzConfig === "function") { const phase = process.env.NODE_ENV === "production" ? PHASE_PRODUCTION_SERVER : PHASE_DEVELOPMENT_SERVER - loadedConfig = file(phase, {}) - } else { - loadedConfig = file + loadedBlitzConfig = loadedBlitzConfig(phase, {}) + } + + // ------------- + // Merge configs + // ------------- + blitzConfig = { + ...blitzConfig, + ...loadedNextConfig, + ...loadedBlitzConfig, } - } catch {} - blitzConfig = { - ...loadedConfig, - ...blitzConfig, + } catch { + console.error("Failed to load config in getConfig()") } global.blitzConfig = blitzConfig diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json deleted file mode 100644 index b7e1d5cea6..0000000000 --- a/packages/config/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "types", "test"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "downlevelIteration": true, - "paths": { - "*": ["src/*", "node_modules/*"] - }, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/config/tsdx.config.js b/packages/config/tsdx.config.js deleted file mode 100644 index 41a9f8bc3d..0000000000 --- a/packages/config/tsdx.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - rollup(config, options) { - config.onwarn = (warning, warn) => { - if (warning.code === "EVAL" && /[/\\](index.ts)$/.test(warning.loc.file)) { - return - } - warn(warning) - } - return config - }, -} diff --git a/packages/core/config/package.json b/packages/core/config/package.json new file mode 100644 index 0000000000..fee00ec099 --- /dev/null +++ b/packages/core/config/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitzjs-core-config.cjs.js", + "module": "dist/blitzjs-core-config.esm.js", + "types": "dist/blitzjs-core-config.cjs.d.ts" +} diff --git a/packages/core/document/package.json b/packages/core/document/package.json new file mode 100644 index 0000000000..00b24c3fc9 --- /dev/null +++ b/packages/core/document/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitzjs-core-document.cjs.js", + "module": "dist/blitzjs-core-document.esm.js", + "types": "dist/blitzjs-core-document.cjs.d.ts" +} diff --git a/packages/core/dynamic/package.json b/packages/core/dynamic/package.json new file mode 100644 index 0000000000..55e91f7dba --- /dev/null +++ b/packages/core/dynamic/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitzjs-core-dynamic.cjs.js", + "module": "dist/blitzjs-core-dynamic.esm.js", + "types": "dist/blitzjs-core-dynamic.cjs.d.ts" +} diff --git a/packages/core/head/package.json b/packages/core/head/package.json new file mode 100644 index 0000000000..077db48d76 --- /dev/null +++ b/packages/core/head/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitzjs-core-head.cjs.js", + "module": "dist/blitzjs-core-head.esm.js", + "types": "dist/blitzjs-core-head.cjs.d.ts" +} diff --git a/packages/core/image/package.json b/packages/core/image/package.json new file mode 100644 index 0000000000..69edeccf7d --- /dev/null +++ b/packages/core/image/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitzjs-core-image.cjs.js", + "module": "dist/blitzjs-core-image.esm.js", + "types": "dist/blitzjs-core-image.cjs.d.ts" +} diff --git a/packages/core/jest.config.js b/packages/core/jest.config.js index caa51b037b..8859cbff33 100644 --- a/packages/core/jest.config.js +++ b/packages/core/jest.config.js @@ -1,3 +1,4 @@ module.exports = { preset: "../../jest.config.js", + testEnvironment: "jest-environment-jsdom-sixteen", } diff --git a/packages/core/package.json b/packages/core/package.json index 1e43b25ffb..f5f339251e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,61 +1,74 @@ { "name": "@blitzjs/core", "description": "Blitz.js core functionality", - "version": "0.30.5", + "version": "0.31.1", "license": "MIT", "scripts": { - "clean": "rimraf dist", - "wait:display": "wait-on ../display/dist/packages/display/src/index.d.ts", - "predev": "yarn wait:display", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test --env=jest-environment-jsdom-sixteen", - "test:watch": "tsdx test --watch --env=jest-environment-jsdom-sixteen" + "test": "jest", + "test:watch": "jest --watch" }, - "author": { - "name": "Brandon Bayer", - "email": "b@bayer.ws", - "url": "https://twitter.com/flybayer" + "preconstruct": { + "entrypoints": [ + "config.ts", + "document.ts", + "dynamic.ts", + "head.ts", + "image.ts", + "index.ts", + "server/index.ts", + "with-blitz.ts" + ] }, - "contributors": [ - { - "name": "Michael Edelman", - "email": "michael@fabulas.io", - "url": "https://twitter.com/edelman215" - } - ], - "main": "dist/index.js", - "module": "dist/core.esm.js", - "types": "dist/packages/core/src/index.d.ts", + "main": "dist/blitzjs-core.cjs.js", + "module": "dist/blitzjs-core.esm.js", + "types": "dist/blitzjs-core.cjs.d.ts", "files": [ - "dist" + "dist", + "config", + "document", + "dynamic", + "head", + "image", + "server", + "with-blitz" ], - "jest": { - "setupFilesAfterEnv": [ - "/jest.setup.js" - ] - }, - "repository": { - "type": "git", - "url": "https://github.com/blitz-js/blitz" - }, "dependencies": { - "@blitzjs/display": "0.30.5", - "@types/htmlescape": "^1.1.1", "@types/secure-password": "3.1.0", "b64-lite": "^1.4.0", "bad-behavior": "^1.0.1", + "chalk": "^4.1.0", + "cookie": "0.4.1", "cookie-session": "^1.4.0", "cross-spawn": "7.0.3", "htmlescape": "^1.1.1", - "lodash": "^4.17.20", - "lodash-es": "^4.17.20", + "jsonwebtoken": "8.5.1", + "lodash.frompairs": "4.0.1", + "nanoid": "^3.1.20", + "next": "10.0.7", "npm-which": "^3.0.1", + "null-loader": "4.0.1", "passport": "0.4.1", "react-query": "2.5.12", "secure-password": "4.0.0", - "superjson": "1.7.2", - "zod": ">=1.0.0" + "superjson": "1.7.2" + }, + "peerDependencies": { + "@blitzjs/config": "*", + "@blitzjs/display": "*", + "react": ">=0.0.0 || >=0.0.0-experimental", + "zod": "*" + }, + "devDependencies": { + "@blitzjs/config": "0.31.1", + "@blitzjs/display": "0.31.1", + "react": "0.0.0-experimental-3310209d0", + "zod": "1.11.11" + }, + "repository": "https://github.com/blitz-js/blitz", + "author": { + "name": "Brandon Bayer", + "email": "b@bayer.ws", + "url": "https://twitter.com/flybayer" }, "gitHead": "d3b9fce0bdd251c2b1890793b0aa1cd77c1c0922" } diff --git a/packages/core/server/package.json b/packages/core/server/package.json new file mode 100644 index 0000000000..b3c1eced83 --- /dev/null +++ b/packages/core/server/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitzjs-core-server.cjs.js", + "module": "dist/blitzjs-core-server.esm.js", + "types": "dist/blitzjs-core-server.cjs.d.ts" +} diff --git a/packages/core/src/auth/auth-client.test.ts b/packages/core/src/auth/auth-client.test.ts new file mode 100644 index 0000000000..41b3809ec5 --- /dev/null +++ b/packages/core/src/auth/auth-client.test.ts @@ -0,0 +1,62 @@ +/* eslint @typescript-eslint/no-floating-promises: off */ +import {act} from "@testing-library/react-hooks" +import {renderHook} from "../../test/test-utils" +import {useSession} from "./auth-client" +import {publicDataStore} from "./public-data-store" + +describe("useSession", () => { + it("returns empty at when no value is set", () => { + const {result} = renderHook(() => useSession()) + + expect(result.current).toEqual({ + isLoading: false, + ...publicDataStore.emptyPublicData, + }) + }) + + it("subscribes to the public data store", () => { + const {result} = renderHook(() => useSession()) + + act(() => { + publicDataStore.updateState({roles: ["foo"], userId: "bar"} as any) + }) + + expect(result.current).toEqual({ + isLoading: false, + userId: "bar", + roles: ["foo"], + }) + + act(() => { + publicDataStore.updateState({roles: ["baz"], userId: "boo"} as any) + }) + + expect(result.current).toEqual({ + isLoading: false, + userId: "boo", + roles: ["baz"], + }) + }) + + it("un-subscribes from the public data store on unmount", () => { + const {result, unmount} = renderHook(() => useSession()) + + act(() => { + publicDataStore.updateState({roles: ["foo"], userId: "bar"} as any) + }) + + act(() => { + unmount() + }) + + act(() => { + publicDataStore.updateState({roles: ["baz"], userId: "boo"} as any) + }) + + expect(result.current).toEqual({ + isLoading: false, + userId: "bar", + roles: ["foo"], + }) + }) +}) diff --git a/packages/core/src/auth/auth-client.ts b/packages/core/src/auth/auth-client.ts new file mode 100644 index 0000000000..6134ad6047 --- /dev/null +++ b/packages/core/src/auth/auth-client.ts @@ -0,0 +1,73 @@ +import {useEffect, useState} from "react" +import {getBlitzRuntimeData} from "../blitz-data" +import {COOKIE_CSRF_TOKEN, COOKIE_LEGACY_CSRF_TOKEN} from "../constants" +import {AuthenticationError} from "../errors" +import {isServer} from "../utils" +import {readCookie} from "../utils/cookie" +import {AuthenticatedClientSession, ClientSession, PublicData} from "./auth-types" +import {publicDataStore} from "./public-data-store" + +export const getAntiCSRFToken = () => + readCookie(COOKIE_CSRF_TOKEN()) || readCookie(COOKIE_LEGACY_CSRF_TOKEN()) + +interface UseSessionOptions { + initialPublicData?: PublicData + suspense?: boolean | null +} + +export const useSession = (options: UseSessionOptions = {}): ClientSession => { + const suspense = options?.suspense ?? getBlitzRuntimeData().suspenseEnabled + + let initialState: ClientSession + if (options.initialPublicData) { + initialState = {...options.initialPublicData, isLoading: false} + } else if (suspense) { + if (isServer) { + throw new Promise((_) => {}) + } else { + initialState = {...publicDataStore.getData(), isLoading: false} + } + } else { + initialState = {...publicDataStore.emptyPublicData, isLoading: true} + } + + const [session, setSession] = useState(initialState) + + useEffect(() => { + // Initialize on mount + setSession({...publicDataStore.getData(), isLoading: false}) + const subscription = publicDataStore.observable.subscribe((data) => + setSession({...data, isLoading: false}), + ) + return subscription.unsubscribe + }, []) + + return session +} + +export const useAuthenticatedSession = ( + options: UseSessionOptions = {}, +): AuthenticatedClientSession => { + useAuthorize() + return useSession(options) as AuthenticatedClientSession +} + +export const useAuthorize = () => { + useAuthorizeIf(true) +} + +export const useAuthorizeIf = (condition?: boolean) => { + useEffect(() => { + if (condition && !publicDataStore.getData().userId) { + const error = new AuthenticationError() + delete error.stack + throw error + } + }) +} + +export const useRedirectAuthenticated = (to: string) => { + if (typeof window !== "undefined" && publicDataStore.getData().userId) { + window.location.replace(to) + } +} diff --git a/packages/core/src/auth/auth-types.ts b/packages/core/src/auth/auth-types.ts new file mode 100644 index 0000000000..75c8d0099a --- /dev/null +++ b/packages/core/src/auth/auth-types.ts @@ -0,0 +1,83 @@ +import {Ctx} from "@blitzjs/core" + +export interface Session { + // isAuthorize can be injected here + // PublicData can be injected here +} + +export type PublicData = "PublicData" extends keyof Session + ? Session["PublicData"] + : {userId: unknown} + +export interface EmptyPublicData extends Partial> { + userId: PublicData["userId"] | null +} + +export type IsAuthorizedArgs = "isAuthorized" extends keyof Session + ? "args" extends keyof Parameters[0] + ? Parameters[0]["args"] + : unknown[] + : unknown[] + +export interface SessionModel extends Record { + handle: string + userId?: PublicData["userId"] + expiresAt?: Date + hashedSessionToken?: string + antiCSRFToken?: string + publicData?: string + privateData?: string +} + +export type SessionConfig = { + sessionExpiryMinutes?: number + method?: "essential" | "advanced" + sameSite?: "none" | "lax" | "strict" + domain?: string + publicDataKeysToSyncAcrossSessions?: string[] + getSession: (handle: string) => Promise + getSessions: (userId: PublicData["userId"]) => Promise + createSession: (session: SessionModel) => Promise + updateSession: (handle: string, session: Partial) => Promise + deleteSession: (handle: string) => Promise + isAuthorized: (data: {ctx: Ctx; args: any[]}) => boolean +} + +export interface SessionContextBase { + $handle: string | null + $publicData: unknown + $authorize(...args: IsAuthorizedArgs): asserts this is AuthenticatedSessionContext + // $isAuthorized cannot have assertion return type because it breaks advanced use cases + // with multiple isAuthorized calls + $isAuthorized: (...args: IsAuthorizedArgs) => boolean + $create: (publicData: PublicData, privateData?: Record) => Promise + $revoke: () => Promise + $revokeAll: () => Promise + $getPrivateData: () => Promise> + $setPrivateData: (data: Record) => Promise + $setPublicData: (data: Partial>) => Promise +} + +// Could be anonymous +export interface SessionContext extends SessionContextBase, EmptyPublicData { + $publicData: Partial | EmptyPublicData +} + +export interface AuthenticatedSessionContext extends SessionContextBase, PublicData { + userId: PublicData["userId"] + $publicData: PublicData +} + +export interface ClientSession extends EmptyPublicData { + isLoading: boolean +} + +export interface AuthenticatedClientSession extends PublicData { + isLoading: boolean +} + +export type VerifyCallbackResult = { + publicData: PublicData + privateData?: Record + redirectUrl?: string +} diff --git a/packages/core/src/public-data-store.test.ts b/packages/core/src/auth/public-data-store.test.ts similarity index 90% rename from packages/core/src/public-data-store.test.ts rename to packages/core/src/auth/public-data-store.test.ts index 7abb3f79e3..df8a0a49c2 100644 --- a/packages/core/src/public-data-store.test.ts +++ b/packages/core/src/auth/public-data-store.test.ts @@ -1,12 +1,12 @@ -import {COOKIE_PUBLIC_DATA_TOKEN} from "./constants" +import {COOKIE_PUBLIC_DATA_TOKEN} from "../constants" +import {deleteCookie, readCookie} from "../utils/cookie" import {publicDataStore} from "./public-data-store" -import {deleteCookie, readCookie} from "./utils/cookie" -import {parsePublicDataToken} from "./utils/tokens" +import {parsePublicDataToken} from "./public-data-token" -jest.mock("./utils/tokens", () => ({ +jest.mock("./public-data-token", () => ({ parsePublicDataToken: jest.fn(), })) -jest.mock("./utils/cookie", () => ({ +jest.mock("../utils/cookie", () => ({ readCookie: jest.fn(), deleteCookie: jest.fn(), })) diff --git a/packages/core/src/public-data-store.ts b/packages/core/src/auth/public-data-store.ts similarity index 73% rename from packages/core/src/public-data-store.ts rename to packages/core/src/auth/public-data-store.ts index 749c3fb657..b9e9e5f090 100644 --- a/packages/core/src/public-data-store.ts +++ b/packages/core/src/auth/public-data-store.ts @@ -1,13 +1,13 @@ import BadBehavior from "bad-behavior" -import {COOKIE_PUBLIC_DATA_TOKEN, LOCALSTORAGE_PREFIX} from "./constants" -import {PublicData} from "./types" -import {deleteCookie, readCookie} from "./utils/cookie" -import {parsePublicDataToken} from "./utils/tokens" +import {COOKIE_PUBLIC_DATA_TOKEN, LOCALSTORAGE_PREFIX} from "../constants" +import {deleteCookie, readCookie} from "../utils/cookie" +import {EmptyPublicData, PublicData} from "./auth-types" +import {parsePublicDataToken} from "./public-data-token" class PublicDataStore { private eventKey = `${LOCALSTORAGE_PREFIX}publicDataUpdated` - readonly emptyPublicData: PublicData = {userId: null} - readonly observable = BadBehavior() + readonly emptyPublicData: EmptyPublicData = {userId: null} + readonly observable = BadBehavior() constructor() { if (typeof window !== "undefined") { @@ -22,7 +22,7 @@ class PublicDataStore { } } - updateState(value?: PublicData, opts?: {suppressEvent: boolean}) { + updateState(value?: PublicData | EmptyPublicData, opts?: {suppressEvent: boolean}) { // We use localStorage as a message bus between tabs. // Setting the current time in ms will cause other tabs to receive the `storage` event if (!opts?.suppressEvent) { diff --git a/packages/core/src/auth/public-data-token.test.ts b/packages/core/src/auth/public-data-token.test.ts new file mode 100644 index 0000000000..3d38e076d1 --- /dev/null +++ b/packages/core/src/auth/public-data-token.test.ts @@ -0,0 +1,30 @@ +import {toBase64} from "b64-lite" +import {parsePublicDataToken} from "./public-data-token" + +describe("parsePublicDataToken", () => { + it("throws if token is empty", () => { + const ret = () => parsePublicDataToken("") + expect(ret).toThrow("[parsePublicDataToken] Failed: token is empty") + }) + + it("throws if the token cannot be parsed", () => { + const invalidJSON = "{" + const ret = () => parsePublicDataToken(toBase64(invalidJSON)) + + expect(ret).toThrowError("[parsePublicDataToken] Failed to parse publicDataStr: {") + }) + + it("parses the public data", () => { + const validJSON = '{"foo": "bar"}' + expect(parsePublicDataToken(toBase64(validJSON))).toEqual({ + publicData: {foo: "bar"}, + }) + }) + + it("parses the public data containing unicode chars", () => { + const data = '"foo-κόσμε-żółć-平仮名"' + expect(parsePublicDataToken(toBase64(data))).toEqual({ + publicData: "foo-κόσμε-żółć-平仮名", + }) + }) +}) diff --git a/packages/core/src/utils/tokens.ts b/packages/core/src/auth/public-data-token.ts similarity index 93% rename from packages/core/src/utils/tokens.ts rename to packages/core/src/auth/public-data-token.ts index 668548900c..e80e8859dd 100644 --- a/packages/core/src/utils/tokens.ts +++ b/packages/core/src/auth/public-data-token.ts @@ -1,5 +1,5 @@ import {fromBase64} from "b64-lite" -import {PublicData} from "../types" +import {PublicData} from "./auth-types" function assert(condition: any, message: string): asserts condition { if (!condition) throw new Error(message) diff --git a/packages/core/src/blitz-app-root.tsx b/packages/core/src/blitz-app-root.tsx index bcef968e79..8b2f942218 100644 --- a/packages/core/src/blitz-app-root.tsx +++ b/packages/core/src/blitz-app-root.tsx @@ -1,7 +1,7 @@ import React, {ComponentPropsWithoutRef, useEffect} from "react" -import {Head} from "./nextjs" -import {publicDataStore} from "./public-data-store" -import {useAuthorizeIf} from "./supertokens" +import {useAuthorizeIf} from "./auth/auth-client" +import {publicDataStore} from "./auth/public-data-store" +import {Head} from "./head" import {AppProps, BlitzPage} from "./types" const customCSS = ` diff --git a/packages/core/src/config.ts b/packages/core/src/config.ts new file mode 100644 index 0000000000..da9d8e4a35 --- /dev/null +++ b/packages/core/src/config.ts @@ -0,0 +1,6 @@ +/* + * IF YOU CHANGE THIS FILE + * You also need to update the rewrite map in + * packages/babel-preset/src/rewrite-imports.ts + */ +export {default as getConfig, setConfig} from "next/config" diff --git a/packages/core/src/document.ts b/packages/core/src/document.ts new file mode 100644 index 0000000000..44f8d1af3f --- /dev/null +++ b/packages/core/src/document.ts @@ -0,0 +1,8 @@ +/* + * IF YOU CHANGE THIS FILE + * You also need to update the rewrite map in + * packages/babel-preset/src/rewrite-imports.ts + */ +export {default as Document, Head as DocumentHead, Html, Main} from "next/document" +export type {DocumentProps, DocumentContext, DocumentInitialProps} from "next/document" +export {BlitzScript} from "./blitz-script" diff --git a/packages/core/src/dynamic.ts b/packages/core/src/dynamic.ts new file mode 100644 index 0000000000..6a2234c22b --- /dev/null +++ b/packages/core/src/dynamic.ts @@ -0,0 +1,6 @@ +/* + * IF YOU CHANGE THIS FILE + * You also need to update the rewrite map in + * packages/babel-preset/src/rewrite-imports.ts + */ +export {default as dynamic, noSSR} from "next/dynamic" diff --git a/packages/core/src/error.ts b/packages/core/src/error.ts new file mode 100644 index 0000000000..78418acc6c --- /dev/null +++ b/packages/core/src/error.ts @@ -0,0 +1 @@ +export {default as ErrorComponent} from "next/error" diff --git a/packages/core/src/head.ts b/packages/core/src/head.ts new file mode 100644 index 0000000000..2ebcddb29b --- /dev/null +++ b/packages/core/src/head.ts @@ -0,0 +1,6 @@ +/* + * IF YOU CHANGE THIS FILE + * You also need to update the rewrite map in + * packages/babel-preset/src/rewrite-imports.ts + */ +export {default as Head} from "next/head" diff --git a/packages/core/src/image.ts b/packages/core/src/image.ts new file mode 100644 index 0000000000..21a1f5c040 --- /dev/null +++ b/packages/core/src/image.ts @@ -0,0 +1,7 @@ +/* + * IF YOU CHANGE THIS FILE + * You also need to update the rewrite map in + * packages/babel-preset/src/rewrite-imports.ts + */ +export {default as Image} from "next/image" +export type {ImageProps, ImageLoader, ImageLoaderProps} from "next/image" diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c7fced0ac4..e6ebfbccb0 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,46 +1,24 @@ -export * from "./nextjs" export * from "./types" +export * from "./router" +export * from "./link" +export * from "./error" export * from "./errors" export * from "./constants" -export {BlitzScript} from "./blitz-script" export {withBlitzAppRoot} from "./blitz-app-root" export {useQuery, usePaginatedQuery, useInfiniteQuery} from "./use-query-hooks" export {getQueryKey, invalidateQuery, setQueryData} from "./utils/react-query-utils" -export {useParam, useParams} from "./use-params" -export {withRouter, RouterContext, BlitzRouter} from "./with-router" -export {useRouter} from "./use-router" -export {useRouterQuery} from "./use-router-query" -export {passportAuth} from "./passport-adapter" -export {getIsomorphicEnhancedResolver} from "./rpc" +export {getIsomorphicEnhancedResolver} from "./rpc-client" export {useMutation} from "./use-mutation" -export {invoke, invokeWithMiddleware} from "./invoke" +export {invoke} from "./invoke" export {getBlitzRuntimeData} from "./blitz-data" -export {resolver, AuthenticatedMiddlewareCtx} from "./resolver" -export {paginate} from "./server-utils" -export { - getAllMiddlewareForModule, - handleRequestWithMiddleware, - connectMiddleware, - Ctx, - DefaultCtx, -} from "./middleware" export { getAntiCSRFToken, useSession, useAuthenticatedSession, useAuthorize, useRedirectAuthenticated, - SessionConfig, - SessionContext, - AuthenticatedSessionContext, - ClientSession, - AuthenticatedClientSession, -} from "./supertokens" - -export {SecurePassword, hash256, generateToken} from "./auth-utils" - -export {isLocalhost} from "./utils/index" -export {prettyMs} from "./utils/pretty-ms" +} from "./auth/auth-client" +export * from "./auth/auth-types" export {enhancePrisma} from "./prisma-utils" diff --git a/packages/core/src/invoke.ts b/packages/core/src/invoke.ts index 9bb54c5048..afcf1dd18f 100644 --- a/packages/core/src/invoke.ts +++ b/packages/core/src/invoke.ts @@ -1,22 +1,17 @@ -import {baseLogger, chalk, log as displayLog} from "@blitzjs/display" -import {getAllMiddlewareForModule, handleRequestWithMiddleware} from "./middleware" import { + CancellablePromise, EnhancedResolver, EnhancedResolverRpcClient, FirstParam, - InvokeWithMiddlewareConfig, - MiddlewareResponse, PromiseReturnType, QueryFn, - Resolver, } from "./types" import {isClient} from "./utils" -import {prettyMs} from "./utils/pretty-ms" -export function invoke, TResult = PromiseReturnType>( +export function invoke>( queryFn: T, params: TInput, -) { +): CancellablePromise> { if (typeof queryFn === "undefined") { throw new Error( "invoke is missing the first argument - it must be a query or mutation function", @@ -24,54 +19,10 @@ export function invoke, TResult = Prom } if (isClient) { - const fn = (queryFn as unknown) as EnhancedResolverRpcClient + const fn = (queryFn as unknown) as EnhancedResolverRpcClient> return fn(params, {fromInvoke: true}) } else { - const fn = (queryFn as unknown) as EnhancedResolver + const fn = (queryFn as unknown) as EnhancedResolver> return fn(params) as ReturnType } } - -export async function invokeWithMiddleware( - resolver: Resolver, - params: TInput, - ctx: InvokeWithMiddlewareConfig, -): Promise { - if (!ctx.req) { - throw new Error("You must provide `req` in third argument of invokeWithMiddleware()") - } - if (!ctx.res) { - throw new Error("You must provide `res` in third argument of invokeWithMiddleware()") - } - const enhancedResolver = (resolver as unknown) as EnhancedResolver - - const middleware = getAllMiddlewareForModule(enhancedResolver) - - if (ctx.middleware) { - middleware.push(...ctx.middleware) - } - - middleware.push(async (_req, res, next) => { - const log = baseLogger().getChildLogger({prefix: [enhancedResolver._meta.name + "()"]}) - displayLog.newline() - try { - log.info(chalk.dim("Starting with input:"), params) - const startTime = Date.now() - - const result = await enhancedResolver(params, res.blitzCtx) - - const duration = Date.now() - startTime - log.info(chalk.dim(`Finished in ${prettyMs(duration)}`)) - displayLog.newline() - - res.blitzResult = result - return next() - } catch (error) { - throw error - } - }) - - await handleRequestWithMiddleware(ctx.req, ctx.res, middleware) - - return (ctx.res as MiddlewareResponse).blitzResult as TResult -} diff --git a/packages/core/src/link.ts b/packages/core/src/link.ts new file mode 100644 index 0000000000..e2d478e238 --- /dev/null +++ b/packages/core/src/link.ts @@ -0,0 +1,7 @@ +/* + * IF YOU CHANGE THIS FILE + * You also need to update the rewrite map in + * packages/babel-preset/src/rewrite-imports.ts + */ +export {default as Link} from "next/link" +export type {LinkProps} from "next/link" diff --git a/packages/core/src/nextjs.ts b/packages/core/src/nextjs.ts deleted file mode 100644 index fc165b5e34..0000000000 --- a/packages/core/src/nextjs.ts +++ /dev/null @@ -1,25 +0,0 @@ -// -------------------- -// Exports from Next.js -// -------------------- -export {default as Head} from "next/head" - -export {default as Link, LinkProps} from "next/link" - -export {default as Router} from "next/router" - -export {default as Image, ImageProps} from "next/image" - -export { - default as Document, - Html, - Head as DocumentHead, - Main, - DocumentContext, - DocumentInitialProps, -} from "next/document" - -export {default as dynamic} from "next/dynamic" - -export {default as ErrorComponent, ErrorProps} from "next/error" - -export {default as getConfig} from "next/config" diff --git a/packages/core/src/prisma-utils.ts b/packages/core/src/prisma-utils.ts index 0d4f6150bc..947b0e963c 100644 --- a/packages/core/src/prisma-utils.ts +++ b/packages/core/src/prisma-utils.ts @@ -39,7 +39,7 @@ export const enhancePrisma = ( const process = spawn( prismaBin, ["migrate", "reset", "--force", "--skip-generate", "--preview-feature"], - {stdio: "inherit"}, + {stdio: "ignore"}, ) process.on("exit", (code) => (code === 0 ? res(0) : rej(code))) }) diff --git a/packages/core/src/router/index.tsx b/packages/core/src/router/index.tsx new file mode 100644 index 0000000000..fccee21a9d --- /dev/null +++ b/packages/core/src/router/index.tsx @@ -0,0 +1,45 @@ +import {WithRouterProps as WithNextRouterProps} from "next/dist/client/with-router" +import { + default as NextRouter, + NextRouter as NextRouterType, + useRouter as useNextRouter, + withRouter as withNextRouter, +} from "next/router" +import React from "react" +import {extractRouterParams, useParams, useRouterQuery} from "./router-hooks" + +export const Router = NextRouter +export {createRouter, makePublicRouterInstance} from "next/router" +export {RouterContext} from "next/dist/next-server/lib/router-context" + +export {useParam, useParams, useRouterQuery} from "./router-hooks" + +export interface BlitzRouter extends NextRouterType { + params: ReturnType + query: ReturnType +} + +export interface WithRouterProps { + router: BlitzRouter +} + +export function withRouter(WrappedComponent: React.ComponentType) { + const Wrapper: React.FC = ({router}) => { + const query = useRouterQuery() + const params = useParams() + return + } + return withNextRouter(Wrapper) +} + +export function useRouter() { + const router = useNextRouter() + const query = useRouterQuery() + const params = useParams() + + // TODO - we have to explicitly define the return type otherwise TS complains about + // NextHistoryState and TransitionOptions not being exported from Next.js code + return React.useMemo(() => { + return {...router, query, params} + }, [params, query, router]) as BlitzRouter +} diff --git a/packages/core/src/use-params.ts b/packages/core/src/router/router-hooks.ts similarity index 74% rename from packages/core/src/use-params.ts rename to packages/core/src/router/router-hooks.ts index d3b7913042..bd5eaa96bf 100644 --- a/packages/core/src/use-params.ts +++ b/packages/core/src/router/router-hooks.ts @@ -1,8 +1,18 @@ -import {fromPairs} from "lodash" +import fromPairs from "lodash.frompairs" import {useRouter} from "next/router" import {useMemo} from "react" -import {Dict, ParsedUrlQuery, ParsedUrlQueryValue} from "./types" -import {useRouterQuery} from "./use-router-query" +import {Dict, ParsedUrlQuery, ParsedUrlQueryValue} from "../types" + +export function useRouterQuery() { + const router = useRouter() + + const query = useMemo(() => { + const query = decode(router.asPath.split("?")[1]) + return query + }, [router.asPath]) + + return query +} function areQueryValuesEqual(value1: ParsedUrlQueryValue, value2: ParsedUrlQueryValue) { // Check if their type match @@ -104,3 +114,34 @@ export function useParam( return value } + +/* + * Copied from https://github.com/lukeed/qss + */ +function toValue(mix: any) { + if (!mix) return "" + var str = decodeURIComponent(mix) + if (str === "false") return false + if (str === "true") return true + return +str * 0 === 0 ? +str : str +} +function decode(str: string) { + if (!str) return {} + let tmp: any + let k + const out: Record = {} + const arr = str.split("&") + + // eslint-disable-next-line no-cond-assign + while ((tmp = arr.shift())) { + tmp = tmp.split("=") + k = tmp.shift() + if (out[k] !== void 0) { + out[k] = [].concat(out[k], toValue(tmp.shift()) as any) + } else { + out[k] = toValue(tmp.shift()) + } + } + + return out +} diff --git a/packages/core/test/rpc.test.ts b/packages/core/src/rpc-client.test.ts similarity index 96% rename from packages/core/test/rpc.test.ts rename to packages/core/src/rpc-client.test.ts index ace771f67b..7f806ef82d 100644 --- a/packages/core/test/rpc.test.ts +++ b/packages/core/src/rpc-client.test.ts @@ -1,6 +1,6 @@ import {serialize} from "superjson" import {getBlitzRuntimeData} from "../src/blitz-data" -import {executeRpcCall, getIsomorphicEnhancedResolver} from "../src/rpc" +import {executeRpcCall, getIsomorphicEnhancedResolver} from "./rpc-client" declare global { namespace NodeJS { diff --git a/packages/core/src/rpc.ts b/packages/core/src/rpc-client.ts similarity index 98% rename from packages/core/src/rpc.ts rename to packages/core/src/rpc-client.ts index f3e5b14344..efd3522c10 100644 --- a/packages/core/src/rpc.ts +++ b/packages/core/src/rpc-client.ts @@ -1,6 +1,8 @@ import {queryCache} from "react-query" import {deserialize, serialize} from "superjson" import {SuperJSONResult} from "superjson/dist/types" +import {getAntiCSRFToken} from "./auth/auth-client" +import {publicDataStore} from "./auth/public-data-store" import { HEADER_CSRF, HEADER_CSRF_ERROR, @@ -9,8 +11,6 @@ import { HEADER_SESSION_REVOKED, } from "./constants" import {CSRFTokenMismatchError} from "./errors" -import {publicDataStore} from "./public-data-store" -import {getAntiCSRFToken} from "./supertokens" import { CancellablePromise, EnhancedResolver, diff --git a/packages/core/test/auth-utils.test.ts b/packages/core/src/server/auth/auth-utils.test.ts similarity index 95% rename from packages/core/test/auth-utils.test.ts rename to packages/core/src/server/auth/auth-utils.test.ts index c488750315..a6b8aae38a 100644 --- a/packages/core/test/auth-utils.test.ts +++ b/packages/core/src/server/auth/auth-utils.test.ts @@ -1,4 +1,4 @@ -import {SecurePassword} from "../src/auth-utils" +import {SecurePassword} from "./auth-utils" describe("SecurePassword", () => { describe("hash", () => { diff --git a/packages/core/src/auth-utils.ts b/packages/core/src/server/auth/auth-utils.ts similarity index 88% rename from packages/core/src/auth-utils.ts rename to packages/core/src/server/auth/auth-utils.ts index 9449e55b9b..569645b92d 100644 --- a/packages/core/src/auth-utils.ts +++ b/packages/core/src/server/auth/auth-utils.ts @@ -1,10 +1,11 @@ import * as crypto from "crypto" import {nanoid} from "nanoid" import SecurePasswordLib from "secure-password" -import {AuthenticationError} from "./errors" +import {AuthenticationError} from "../../errors" -export const hash256 = (input: string = "") => - crypto.createHash("sha256").update(input).digest("hex") +export const hash256 = (input: string = "") => { + return crypto.createHash("sha256").update(input).digest("hex") +} export const generateToken = (numberOfCharacters: number = 32) => nanoid(numberOfCharacters) diff --git a/packages/core/src/passport-adapter.ts b/packages/core/src/server/auth/passport-adapter.ts similarity index 93% rename from packages/core/src/passport-adapter.ts rename to packages/core/src/server/auth/passport-adapter.ts index 336a1e26f1..2b7e999149 100644 --- a/packages/core/src/passport-adapter.ts +++ b/packages/core/src/server/auth/passport-adapter.ts @@ -3,16 +3,21 @@ import {log} from "@blitzjs/display" import cookieSession from "cookie-session" import passport from "passport" -import {BlitzApiRequest, BlitzApiResponse, ConnectMiddleware} from "." +import {SessionContext, VerifyCallbackResult} from "../../auth/auth-types" +import { + BlitzApiRequest, + BlitzApiResponse, + BlitzPassportConfig, + ConnectMiddleware, + Middleware, +} from "../../types" import { connectMiddleware, getAllMiddlewareForModule, handleRequestWithMiddleware, -} from "./middleware" +} from "../middleware" +import {isLocalhost} from "../server-utils" import {secureProxyMiddleware} from "./secure-proxy-middleware" -import {SessionContext} from "./supertokens" -import {BlitzPassportConfig, Middleware, VerifyCallbackResult} from "./types" -import {isLocalhost} from "./utils/index" function assert(condition: any, message: string): asserts condition { if (!condition) throw new Error(message) @@ -65,7 +70,7 @@ export function passportAuth(config: BlitzPassportConfig) { log.info(`Starting authentication via ${strategyName}...`) if (req.query.redirectUrl) { middleware.push(async (req, res, next) => { - const session = res.blitzCtx.session as SessionContext + const session = (res as any).blitzCtx.session as SessionContext assert(session, "Missing Blitz sessionMiddleware!") await session.$setPublicData({[INTERNAL_REDIRECT_URL_KEY]: req.query.redirectUrl} as any) return next() diff --git a/packages/core/src/secure-proxy-middleware.test.ts b/packages/core/src/server/auth/secure-proxy-middleware.test.ts similarity index 100% rename from packages/core/src/secure-proxy-middleware.test.ts rename to packages/core/src/server/auth/secure-proxy-middleware.test.ts diff --git a/packages/core/src/secure-proxy-middleware.ts b/packages/core/src/server/auth/secure-proxy-middleware.ts similarity index 97% rename from packages/core/src/secure-proxy-middleware.ts rename to packages/core/src/server/auth/secure-proxy-middleware.ts index 5e4b6991c9..d982a03dc3 100644 --- a/packages/core/src/secure-proxy-middleware.ts +++ b/packages/core/src/server/auth/secure-proxy-middleware.ts @@ -1,4 +1,4 @@ -import {Middleware, MiddlewareRequest, MiddlewareResponse} from "./types" +import {Middleware, MiddlewareRequest, MiddlewareResponse} from "../../types" export const secureProxyMiddleware: Middleware = function ( req: MiddlewareRequest, diff --git a/packages/server/src/supertokens.test.ts b/packages/core/src/server/auth/sessions.test.ts similarity index 94% rename from packages/server/src/supertokens.test.ts rename to packages/core/src/server/auth/sessions.test.ts index 42a44251a4..924a08da6e 100644 --- a/packages/server/src/supertokens.test.ts +++ b/packages/core/src/server/auth/sessions.test.ts @@ -14,8 +14,8 @@ import http from "http" import {apiResolver} from "next/dist/next-server/server/api-utils" import fetch from "node-fetch" import listen from "test-listen" -import {rpcApiHandler} from "./rpc" -import {sessionMiddleware, simpleRolesIsAuthorized} from "./supertokens" +import {rpcApiHandler} from "../rpc-server" +import {sessionMiddleware, simpleRolesIsAuthorized} from "./sessions" const isIsoDate = (str: string) => { if (!/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(str)) return false @@ -38,14 +38,14 @@ type CtxWithSession = { session: SessionContext } -describe("supertokens", () => { +describe("sessions", () => { it("anonymous", async () => { const resolverModule = ((() => { return }) as unknown) as EnhancedResolver resolverModule.middleware = [ (_req, res, next) => { - expect(typeof (res.blitzCtx.session as SessionContext).$create).toBe("function") + expect(typeof ((res as any).blitzCtx.session as SessionContext).$create).toBe("function") return next() }, ] @@ -89,7 +89,7 @@ describe("supertokens", () => { }) as unknown) as EnhancedResolver resolverModule.middleware = [ (_req, res, next) => { - expect(typeof (res.blitzCtx.session as SessionContext).$create).toBe("function") + expect(typeof ((res as any).blitzCtx.session as SessionContext).$create).toBe("function") return next() }, ] diff --git a/packages/server/src/supertokens.ts b/packages/core/src/server/auth/sessions.ts similarity index 91% rename from packages/server/src/supertokens.ts rename to packages/core/src/server/auth/sessions.ts index 6254a275f5..85a63afae6 100644 --- a/packages/server/src/supertokens.ts +++ b/packages/core/src/server/auth/sessions.ts @@ -1,45 +1,43 @@ +/* eslint-disable es5/no-es6-methods -- file only used on the server */ import {getConfig} from "@blitzjs/config" import {getProjectRoot} from "@blitzjs/config" +// Must import this type from 'blitz' +import {log} from "@blitzjs/display" +import {fromBase64, toBase64} from "b64-lite" +import cookie from "cookie" +import {IncomingMessage, ServerResponse} from "http" +import {sign as jwtSign, verify as jwtVerify} from "jsonwebtoken" +import {getCookieParser} from "next/dist/next-server/server/api-utils" +import {join} from "path" +import { + EmptyPublicData, + IsAuthorizedArgs, + PublicData, + SessionConfig, + SessionContext, +} from "../../auth/auth-types" import { - AuthenticationError, - AuthorizationError, - BlitzApiRequest, - BlitzApiResponse, COOKIE_ANONYMOUS_SESSION_TOKEN, COOKIE_CSRF_TOKEN, COOKIE_PUBLIC_DATA_TOKEN, COOKIE_REFRESH_TOKEN, COOKIE_SESSION_TOKEN, - CSRFTokenMismatchError, - generateToken, HANDLE_SEPARATOR, - hash256, HEADER_CSRF, HEADER_CSRF_ERROR, HEADER_PUBLIC_DATA_TOKEN, HEADER_SESSION_CREATED, HEADER_SESSION_REVOKED, - IsAuthorizedArgs, - isLocalhost, - Middleware, - MiddlewareResponse, - PublicData, SESSION_TOKEN_VERSION_0, SESSION_TYPE_ANONYMOUS_JWT, SESSION_TYPE_OPAQUE_TOKEN_SIMPLE, - SessionConfig, - SessionContext, TOKEN_SEPARATOR, -} from "@blitzjs/core" -// Must import this type from 'blitz' -import {log} from "@blitzjs/display" -import {fromBase64, toBase64} from "b64-lite" -import cookie from "cookie" -import {addMinutes, addYears, differenceInMinutes, isPast} from "date-fns" -import {IncomingMessage, ServerResponse} from "http" -import {sign as jwtSign, verify as jwtVerify} from "jsonwebtoken" -import {getCookieParser} from "next/dist/next-server/server/api-utils" -import {join} from "path" +} from "../../constants" +import {AuthenticationError, AuthorizationError, CSRFTokenMismatchError} from "../../errors" +import {BlitzApiRequest, BlitzApiResponse, Ctx, Middleware, MiddlewareResponse} from "../../types" +import {addMinutes, addYears, differenceInMinutes, isPast} from "../../utils/date-utils" +import {isLocalhost} from "../server-utils" +import {generateToken, hash256} from "./auth-utils" const debug = require("debug")("blitz:session") function assert(condition: any, message: string): asserts condition { @@ -99,8 +97,9 @@ export interface SimpleRolesIsAuthorized { export const simpleRolesIsAuthorized: SimpleRolesIsAuthorized = ({ctx, args}) => { const [roleOrRoles] = args - const publicData = (ctx.session as SessionContext).$publicData as PublicData & - ({roles: unknown} | {role: unknown}) + const publicData = (ctx.session as SessionContext).$publicData as + | {roles: unknown} + | {role: unknown} if ("role" in publicData && "roles" in publicData) { throw new Error("Session publicData can only have only `role` or `roles`, but not both.'") @@ -152,9 +151,9 @@ export const sessionMiddleware = (sessionConfig: Partial = {}): M } as Required return async (req, res, next) => { - if (req.method !== "HEAD" && !res.blitzCtx.session) { + if (req.method !== "HEAD" && !(res.blitzCtx as any).session) { // This function also saves session to res.blitzCtx - await getSessionContext(req, res) + await getSession(req, res) } return next() } @@ -163,7 +162,7 @@ export const sessionMiddleware = (sessionConfig: Partial = {}): M type JwtPayload = AnonymousSessionPayload | null type AnonSessionKernel = { handle: string - publicData: PublicData + publicData: EmptyPublicData jwtPayload: JwtPayload antiCSRFToken: string anonymousSessionToken: string @@ -197,24 +196,24 @@ function ensureMiddlewareResponse( res: BlitzApiResponse | ServerResponse, ): asserts res is MiddlewareResponse { if (!("blitzCtx" in res)) { - ;(res as MiddlewareResponse).blitzCtx = {} + ;(res as MiddlewareResponse).blitzCtx = {} as Ctx } } -export async function getSessionContext( +export async function getSession( req: BlitzApiRequest | IncomingMessage, res: BlitzApiResponse | ServerResponse, ): Promise { ensureBlitzApiRequest(req) ensureMiddlewareResponse(res) - if (res.blitzCtx.session) { - return res.blitzCtx.session as SessionContext - } + let response = res as MiddlewareResponse<{session?: SessionContext}> - // ensureMiddlewareResponse(res) + if (response.blitzCtx.session) { + return response.blitzCtx.session + } - let sessionKernel = await getSession(req, res) + let sessionKernel = await getSessionKernel(req, res) if (sessionKernel) { debug("Got existing session", sessionKernel) @@ -226,7 +225,7 @@ export async function getSessionContext( } const sessionContext = makeProxyToPublicData(new SessionContextClass(req, res, sessionKernel)) - res.blitzCtx.session = sessionContext + response.blitzCtx.session = sessionContext return sessionContext } @@ -282,8 +281,13 @@ export class SessionContextClass implements SessionContext { } async $create(publicData: PublicData, privateData?: Record) { - this._kernel = await createNewSession(this._req, this._res, publicData, privateData, { + this._kernel = await createNewSession({ + req: this._req, + res: this._res, + publicData, + privateData, jwtPayload: this._kernel.jwtPayload, + anonymous: false, }) } @@ -358,7 +362,7 @@ export const parseSessionToken = (token: string) => { } } -export const createPublicDataToken = (publicData: string | PublicData) => { +export const createPublicDataToken = (publicData: string | PublicData | EmptyPublicData) => { const payload = typeof publicData === "string" ? publicData : JSON.stringify(publicData) return toBase64(payload) } @@ -368,7 +372,7 @@ export const createAntiCSRFToken = () => generateToken(TOKEN_LENGTH) export type AnonymousSessionPayload = { isAnonymous: true handle: string - publicData: PublicData + publicData: EmptyPublicData antiCSRFToken: string } @@ -536,7 +540,7 @@ export const setPublicDataCookie = ( // -------------------------------- // Get Session // -------------------------------- -export async function getSession( +export async function getSessionKernel( req: BlitzApiRequest, res: ServerResponse, ): Promise { @@ -548,7 +552,7 @@ export async function getSession( const antiCSRFToken = req.headers[HEADER_CSRF] as string if (sessionToken) { - debug("[getSession] Request has sessionToken") + debug("[getSessionKernel] Request has sessionToken") const {handle, version, hashedPublicData} = parseSessionToken(sessionToken) if (!handle) { @@ -670,28 +674,42 @@ export async function getSession( // -------------------------------- // Create Session // -------------------------------- +interface CreateNewAnonSession { + req: IncomingMessage + res: ServerResponse + publicData: EmptyPublicData + privateData?: Record + anonymous: true + jwtPayload?: JwtPayload +} +interface CreateNewAuthedSession { + req: IncomingMessage + res: ServerResponse + publicData: PublicData + privateData?: Record + anonymous: false + jwtPayload?: JwtPayload +} + export async function createNewSession( - req: IncomingMessage, - res: ServerResponse, - publicData: PublicData, - privateData: Record = {}, - opts: {anonymous?: boolean; jwtPayload?: JwtPayload} = {}, + args: CreateNewAnonSession | CreateNewAuthedSession, ): Promise { - assert(publicData.userId !== undefined, "You must provide publicData.userId") + const {req, res} = args + assert(args.publicData.userId !== undefined, "You must provide publicData.userId") const antiCSRFToken = createAntiCSRFToken() - if (opts.anonymous) { + if (args.anonymous) { debug("Creating new anonymous session") const handle = generateAnonymousSessionHandle() const payload: AnonymousSessionPayload = { isAnonymous: true, handle, - publicData, + publicData: args.publicData, antiCSRFToken, } const anonymousSessionToken = createAnonymousSessionToken(payload) - const publicDataToken = createPublicDataToken(publicData) + const publicDataToken = createPublicDataToken(args.publicData) const expiresAt = addYears(new Date(), 30) setAnonymousSessionCookie(req, res, anonymousSessionToken, expiresAt) @@ -704,7 +722,7 @@ export async function createNewSession( return { handle, - publicData, + publicData: args.publicData, jwtPayload: payload, antiCSRFToken, anonymousSessionToken, @@ -713,27 +731,27 @@ export async function createNewSession( debug("Creating new session") const newPublicData: PublicData = { // This carries over any public data from the anonymous session - ...(opts.jwtPayload?.publicData || {}), - ...publicData, + ...(args.jwtPayload?.publicData || {}), + ...args.publicData, } assert(newPublicData.userId, "You must provide a non-empty userId as publicData.userId") // This carries over any private data from the anonymous session let existingPrivateData = {} - if (opts.jwtPayload?.isAnonymous) { - const session = await config.getSession(opts.jwtPayload.handle) + if (args.jwtPayload?.isAnonymous) { + const session = await config.getSession(args.jwtPayload.handle) if (session) { if (session.privateData) { existingPrivateData = JSON.parse(session.privateData) } // Delete the previous anonymous session - await config.deleteSession(opts.jwtPayload.handle) + await config.deleteSession(args.jwtPayload.handle) } } const newPrivateData: Record = { ...existingPrivateData, - ...privateData, + ...args.privateData, } const expiresAt = addMinutes(new Date(), config.sessionExpiryMinutes) @@ -776,7 +794,7 @@ export async function createNewSession( } export async function createAnonymousSession(req: IncomingMessage, res: ServerResponse) { - return await createNewSession(req, res, {userId: null}, undefined, {anonymous: true}) + return await createNewSession({req, res, publicData: {userId: null}, anonymous: true}) } // -------------------------------- @@ -835,12 +853,12 @@ export async function refreshSession( } } -export async function getAllSessionHandlesForUser(userId: string) { +export async function getAllSessionHandlesForUser(userId: PublicData["userId"]) { return (await config.getSessions(userId)).map((session) => session.handle) } export async function syncPubicDataFieldsForUserIfNeeded( - userId: string | number, + userId: PublicData["userId"], data: Record, ) { const dataToSync: Record = {} @@ -901,13 +919,15 @@ export async function revokeMultipleSessions( export async function revokeAllSessionsForUser( req: IncomingMessage, res: ServerResponse, - userId: string | number, + userId: PublicData["userId"], ) { let sessionHandles = (await config.getSessions(userId)).map((session) => session.handle) return revokeMultipleSessions(req, res, sessionHandles) } -export async function getPublicData(sessionKernel: SessionKernel): Promise { +export async function getPublicData( + sessionKernel: SessionKernel, +): Promise { if (sessionKernel.jwtPayload?.publicData) { return sessionKernel.jwtPayload?.publicData } else { @@ -957,10 +977,10 @@ export async function setPublicData( // Don't allow updating userId delete data.userId - const publicData: PublicData = { + const publicData = { ...(await getPublicData(sessionKernel)), ...data, - } + } as PublicData await refreshSession(req, res, {...sessionKernel, publicData}, {publicDataChanged: true}) return publicData diff --git a/packages/core/src/server/index.ts b/packages/core/src/server/index.ts new file mode 100644 index 0000000000..9fb7445a7e --- /dev/null +++ b/packages/core/src/server/index.ts @@ -0,0 +1,25 @@ +/* + * IF YOU CHANGE THIS FILE + * You also need to update the rewrite map in + * packages/babel-preset/src/rewrite-imports.ts + */ +export { + getAllMiddlewareForModule, + handleRequestWithMiddleware, + connectMiddleware, +} from "./middleware" + +export {invokeWithMiddleware} from "./invoke-with-middleware" + +export {paginate, isLocalhost} from "./server-utils" +export type {PaginateArgs} from "./server-utils" + +export {resolver} from "./resolver" +export type {AuthenticatedMiddlewareCtx} from "./resolver" + +export {sessionMiddleware, simpleRolesIsAuthorized, getSession} from "./auth/sessions" +export type {SimpleRolesIsAuthorized} from "./auth/sessions" +export {passportAuth} from "./auth/passport-adapter" +export {SecurePassword, hash256, generateToken} from "./auth/auth-utils" + +export {rpcApiHandler} from "./rpc-server" diff --git a/packages/core/src/invoke.test.ts b/packages/core/src/server/invoke-with-middleware.test.ts similarity index 96% rename from packages/core/src/invoke.test.ts rename to packages/core/src/server/invoke-with-middleware.test.ts index f0de3801cc..320545db5a 100644 --- a/packages/core/src/invoke.test.ts +++ b/packages/core/src/server/invoke-with-middleware.test.ts @@ -2,8 +2,8 @@ import delay from "delay" import http, {IncomingMessage, ServerResponse} from "http" import fetch from "node-fetch" import listen from "test-listen" -import {invokeWithMiddleware} from "./invoke" -import {EnhancedResolver} from "./types" +import {EnhancedResolver} from "../types" +import {invokeWithMiddleware} from "./invoke-with-middleware" describe("invokeWithMiddleware", () => { it("works without middleware", async () => { diff --git a/packages/core/src/server/invoke-with-middleware.ts b/packages/core/src/server/invoke-with-middleware.ts new file mode 100644 index 0000000000..fe302b61af --- /dev/null +++ b/packages/core/src/server/invoke-with-middleware.ts @@ -0,0 +1,48 @@ +import {baseLogger, chalk, log as displayLog} from "@blitzjs/display" +import {EnhancedResolver, InvokeWithMiddlewareConfig, MiddlewareResponse, Resolver} from "../types" +import {prettyMs} from "../utils/pretty-ms" +import {getAllMiddlewareForModule, handleRequestWithMiddleware} from "./middleware" + +export async function invokeWithMiddleware( + resolver: Resolver, + params: TInput, + ctx: InvokeWithMiddlewareConfig, +): Promise { + if (!ctx.req) { + throw new Error("You must provide `req` in third argument of invokeWithMiddleware()") + } + if (!ctx.res) { + throw new Error("You must provide `res` in third argument of invokeWithMiddleware()") + } + const enhancedResolver = (resolver as unknown) as EnhancedResolver + + const middleware = getAllMiddlewareForModule(enhancedResolver) + + if (ctx.middleware) { + middleware.push(...ctx.middleware) + } + + middleware.push(async (_req, res, next) => { + const log = baseLogger().getChildLogger({prefix: [enhancedResolver._meta.name + "()"]}) + displayLog.newline() + try { + log.info(chalk.dim("Starting with input:"), params) + const startTime = Date.now() + + const result = await enhancedResolver(params, res.blitzCtx) + + const duration = Date.now() - startTime + log.info(chalk.dim(`Finished in ${prettyMs(duration)}`)) + displayLog.newline() + + res.blitzResult = result + return next() + } catch (error) { + throw error + } + }) + + await handleRequestWithMiddleware(ctx.req, ctx.res, middleware) + + return (ctx.res as MiddlewareResponse).blitzResult as TResult +} diff --git a/packages/core/src/middleware.test.ts b/packages/core/src/server/middleware.test.ts similarity index 97% rename from packages/core/src/middleware.test.ts rename to packages/core/src/server/middleware.test.ts index b8ce699a54..1b49ac1356 100644 --- a/packages/core/src/middleware.test.ts +++ b/packages/core/src/server/middleware.test.ts @@ -2,9 +2,8 @@ import http from "http" import {apiResolver} from "next/dist/next-server/server/api-utils" import fetch from "node-fetch" import listen from "test-listen" -import {BlitzApiRequest, BlitzApiResponse} from "." +import {BlitzApiRequest, BlitzApiResponse, Middleware} from "../types" import {handleRequestWithMiddleware} from "./middleware" -import {Middleware} from "./types" describe("handleRequestWithMiddleware", () => { it("works without await", async () => { diff --git a/packages/core/src/middleware.ts b/packages/core/src/server/middleware.ts similarity index 96% rename from packages/core/src/middleware.ts rename to packages/core/src/server/middleware.ts index 6b5592ac54..6f5175a6cc 100644 --- a/packages/core/src/middleware.ts +++ b/packages/core/src/server/middleware.ts @@ -2,18 +2,17 @@ import {getConfig} from "@blitzjs/config" import {baseLogger, log} from "@blitzjs/display" import {IncomingMessage, ServerResponse} from "http" -import {BlitzApiRequest, BlitzApiResponse} from "." import { + BlitzApiRequest, + BlitzApiResponse, ConnectMiddleware, + Ctx, EnhancedResolver, Middleware, MiddlewareNext, MiddlewareRequest, MiddlewareResponse, -} from "./types" - -export interface DefaultCtx {} -export interface Ctx extends DefaultCtx {} +} from "../types" export function getAllMiddlewareForModule( resolverModule: EnhancedResolver, @@ -48,7 +47,7 @@ export async function handleRequestWithMiddleware( } = {}, ) { if (!(res as MiddlewareResponse).blitzCtx) { - ;(res as MiddlewareResponse).blitzCtx = {} + ;(res as MiddlewareResponse).blitzCtx = {} as Ctx } if (!(res as any)._blitz) { ;(res as any)._blitz = {} diff --git a/packages/core/test/resolver.test.ts b/packages/core/src/server/resolver.test.ts similarity index 92% rename from packages/core/test/resolver.test.ts rename to packages/core/src/server/resolver.test.ts index 6d44d5f9ff..c66155bce9 100644 --- a/packages/core/test/resolver.test.ts +++ b/packages/core/src/server/resolver.test.ts @@ -1,5 +1,6 @@ import * as z from "zod" -import {Ctx, resolver} from "../src" +import {Ctx} from "../types" +import {resolver} from "./resolver" describe("resolver", () => { it("should typecheck and pass along value", async () => { diff --git a/packages/core/src/resolver.ts b/packages/core/src/server/resolver.ts similarity index 97% rename from packages/core/src/resolver.ts rename to packages/core/src/server/resolver.ts index d73dcda72e..a51e29e1a8 100644 --- a/packages/core/src/resolver.ts +++ b/packages/core/src/server/resolver.ts @@ -1,7 +1,6 @@ import {infer as zInfer, ZodSchema} from "zod" -import {Ctx} from "./middleware" -import {AuthenticatedSessionContext, SessionContext, SessionContextBase} from "./supertokens" -import {Await, EnsurePromise} from "./types" +import {AuthenticatedSessionContext, SessionContext, SessionContextBase} from "../auth/auth-types" +import {Await, Ctx, EnsurePromise} from "../types" interface ResultWithContext { __blitz: true @@ -18,7 +17,7 @@ export interface AuthenticatedMiddlewareCtx extends Omit { session: AuthenticatedSessionContext } -type PipeFn = ( +type PipeFn = ( i: Await, c: PrevCtx, ) => Next extends ResultWithContext ? never : Next | ResultWithContext diff --git a/packages/server/test/rpc.test.ts b/packages/core/src/server/rpc-server.test.ts similarity index 97% rename from packages/server/test/rpc.test.ts rename to packages/core/src/server/rpc-server.test.ts index 751401dc2f..d2ae14e19a 100644 --- a/packages/server/test/rpc.test.ts +++ b/packages/core/src/server/rpc-server.test.ts @@ -1,10 +1,11 @@ -import {connectMiddleware, EnhancedResolver} from "@blitzjs/core" import delay from "delay" import http from "http" import {apiResolver} from "next/dist/next-server/server/api-utils" import fetch from "node-fetch" import listen from "test-listen" -import {rpcApiHandler} from "../src/rpc" +import {EnhancedResolver} from "../types" +import {connectMiddleware} from "./middleware" +import {rpcApiHandler} from "./rpc-server" describe("rpcMiddleware", () => { describe("HEAD", () => { diff --git a/packages/server/src/rpc.ts b/packages/core/src/server/rpc-server.ts similarity index 94% rename from packages/server/src/rpc.ts rename to packages/core/src/server/rpc-server.ts index f6ccfe88bd..88ca45b92b 100644 --- a/packages/server/src/rpc.ts +++ b/packages/core/src/server/rpc-server.ts @@ -1,14 +1,9 @@ -import { - BlitzApiRequest, - BlitzApiResponse, - EnhancedResolver, - handleRequestWithMiddleware, - Middleware, - prettyMs, -} from "@blitzjs/core" import {baseLogger, log as displayLog} from "@blitzjs/display" import chalk from "chalk" import {deserialize, serialize} from "superjson" +import {BlitzApiRequest, BlitzApiResponse, EnhancedResolver, Middleware} from "../types" +import {prettyMs} from "../utils/pretty-ms" +import {handleRequestWithMiddleware} from "./middleware" const rpcMiddleware = ( resolver: EnhancedResolver, diff --git a/packages/core/test/server-utils.test.ts b/packages/core/src/server/server-utils.test.ts similarity index 98% rename from packages/core/test/server-utils.test.ts rename to packages/core/src/server/server-utils.test.ts index 02ba4355dd..b5567dc8ee 100644 --- a/packages/core/test/server-utils.test.ts +++ b/packages/core/src/server/server-utils.test.ts @@ -1,4 +1,4 @@ -import {paginate} from "../src" +import {paginate} from "./server-utils" describe("paginate", () => { const dummyPaginationPromises = { diff --git a/packages/core/src/server-utils.ts b/packages/core/src/server/server-utils.ts similarity index 79% rename from packages/core/src/server-utils.ts rename to packages/core/src/server/server-utils.ts index da49edfc4a..e1a45a3d9f 100644 --- a/packages/core/src/server-utils.ts +++ b/packages/core/src/server/server-utils.ts @@ -1,6 +1,18 @@ -import {PaginationArgumentError} from "./errors" +import {IncomingMessage} from "http" +import {PaginationArgumentError} from "../errors" +import {BlitzApiRequest} from "../types" -type PaginateArgs = { +export function isLocalhost(req: BlitzApiRequest | IncomingMessage): boolean { + let {host} = req.headers + let localhost = false + if (host) { + host = host.split(":")[0] + localhost = host === "localhost" + } + return localhost +} + +export type PaginateArgs = { skip?: number take?: number maxTake?: number diff --git a/packages/core/src/supertokens.ts b/packages/core/src/supertokens.ts deleted file mode 100644 index 510b5e0c8c..0000000000 --- a/packages/core/src/supertokens.ts +++ /dev/null @@ -1,133 +0,0 @@ -import {useEffect, useState} from "react" -import {getBlitzRuntimeData} from "./blitz-data" -import {COOKIE_CSRF_TOKEN, COOKIE_LEGACY_CSRF_TOKEN} from "./constants" -import {AuthenticationError} from "./errors" -import {Ctx} from "./middleware" -import {publicDataStore} from "./public-data-store" -import {IsAuthorizedArgs, PublicData} from "./types" -import {isServer} from "./utils" -import {readCookie} from "./utils/cookie" - -export interface SessionModel extends Record { - handle: string - userId?: PublicData["userId"] - expiresAt?: Date - hashedSessionToken?: string - antiCSRFToken?: string - publicData?: string - privateData?: string -} - -export type SessionConfig = { - sessionExpiryMinutes?: number - method?: "essential" | "advanced" - sameSite?: "none" | "lax" | "strict" - domain?: string - publicDataKeysToSyncAcrossSessions?: string[] - getSession: (handle: string) => Promise - getSessions: (userId: PublicData["userId"]) => Promise - createSession: (session: SessionModel) => Promise - updateSession: (handle: string, session: Partial) => Promise - deleteSession: (handle: string) => Promise - isAuthorized: (data: {ctx: Ctx; args: any[]}) => boolean -} - -export interface SessionContextBase { - $handle: string | null - $publicData: unknown - $authorize(...args: IsAuthorizedArgs): asserts this is AuthenticatedSessionContext - // $isAuthorized cannot have assertion return type because it breaks advanced use cases - // with multiple isAuthorized calls - $isAuthorized: (...args: IsAuthorizedArgs) => boolean - $create: (publicData: PublicData, privateData?: Record) => Promise - $revoke: () => Promise - $revokeAll: () => Promise - $getPrivateData: () => Promise> - $setPrivateData: (data: Record) => Promise - $setPublicData: (data: Partial>) => Promise -} - -// Could be anonymous -export interface SessionContext extends SessionContextBase, Partial { - userId: PublicData["userId"] | null - $publicData: Partial -} - -export interface AuthenticatedSessionContext extends SessionContextBase, PublicData { - userId: PublicData["userId"] - $publicData: PublicData -} - -export const getAntiCSRFToken = () => - readCookie(COOKIE_CSRF_TOKEN()) || readCookie(COOKIE_LEGACY_CSRF_TOKEN()) - -export interface ClientSession extends Partial { - userId: PublicData["userId"] | null - isLoading: boolean -} - -export interface AuthenticatedClientSession extends PublicData { - isLoading: boolean -} - -interface UseSessionOptions { - initialPublicData?: PublicData - suspense?: boolean | null -} - -export const useSession = (options: UseSessionOptions = {}): ClientSession => { - const suspense = options?.suspense ?? getBlitzRuntimeData().suspenseEnabled - - let initialState: ClientSession - if (options.initialPublicData) { - initialState = {...options.initialPublicData, isLoading: false} - } else if (suspense) { - if (isServer) { - throw new Promise((_) => {}) - } else { - initialState = {...publicDataStore.getData(), isLoading: false} - } - } else { - initialState = {...publicDataStore.emptyPublicData, isLoading: true} - } - - const [session, setSession] = useState(initialState) - - useEffect(() => { - // Initialize on mount - setSession({...publicDataStore.getData(), isLoading: false}) - const subscription = publicDataStore.observable.subscribe((data) => - setSession({...data, isLoading: false}), - ) - return subscription.unsubscribe - }, []) - - return session -} - -export const useAuthenticatedSession = ( - options: UseSessionOptions = {}, -): AuthenticatedClientSession => { - useAuthorize() - return useSession(options) -} - -export const useAuthorize = () => { - useAuthorizeIf(true) -} - -export const useAuthorizeIf = (condition?: boolean) => { - useEffect(() => { - if (condition && !publicDataStore.getData().userId) { - const error = new AuthenticationError() - delete error.stack - throw error - } - }) -} - -export const useRedirectAuthenticated = (to: string) => { - if (typeof window !== "undefined" && publicDataStore.getData().userId) { - window.location.replace(to) - } -} diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index ae6917629e..ccf066ab22 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1,6 +1,5 @@ import {IncomingMessage, ServerResponse} from "http" import {AppProps as NextAppProps} from "next/app" -import {NextRouter} from "next/router" import { NextApiRequest, NextApiResponse, @@ -11,11 +10,10 @@ import { import {AuthenticateOptions, Strategy} from "passport" import {MutateOptions, MutationResult} from "react-query" import {BlitzRuntimeData} from "./blitz-data" -import {useParams} from "./use-params" -import {useRouterQuery} from "./use-router-query" -export { +export type { GetServerSideProps, + GetServerSidePropsContext, GetServerSidePropsResult, GetStaticPaths, GetStaticPathsContext, @@ -44,34 +42,19 @@ export type BlitzPage

= NextPage & { redirectAuthenticatedTo?: string } -export interface BlitzRouter extends NextRouter { - query: ReturnType - params: ReturnType -} - -export interface Session { - // isAuthorize can be injected here (see supertokens.ts) - // PublicData can be injected here (see supertokens.ts) -} - -export type PublicData = "PublicData" extends keyof Session ? Session["PublicData"] : {userId: any} - -export type IsAuthorizedArgs = "isAuthorized" extends keyof Session - ? "args" extends keyof Parameters[0] - ? Parameters[0]["args"] - : unknown[] - : unknown[] +export interface DefaultCtx {} +export interface Ctx extends DefaultCtx {} export interface MiddlewareRequest extends BlitzApiRequest { protocol?: string } -export interface MiddlewareResponse extends BlitzApiResponse { +export interface MiddlewareResponse extends BlitzApiResponse { /** * This will be passed as the second argument to Blitz queries/mutations. * * You must set blitzCtx BEFORE calling next() */ - blitzCtx: Record + blitzCtx: C /** * This is the exact result returned from the Blitz query/mutation * @@ -142,12 +125,6 @@ export type BlitzPassportConfig = { secureProxy?: boolean } -export type VerifyCallbackResult = { - publicData: PublicData - privateData?: Record - redirectUrl?: string -} - // The actual resolver source definition export type Resolver = (input: TInput, ctx?: any) => Promise diff --git a/packages/core/src/use-query-hooks.ts b/packages/core/src/use-query-hooks.ts index a6c94f8347..71f74bb56a 100644 --- a/packages/core/src/use-query-hooks.ts +++ b/packages/core/src/use-query-hooks.ts @@ -8,10 +8,10 @@ import { usePaginatedQuery as usePaginatedReactQuery, useQuery as useReactQuery, } from "react-query" -import {isClient} from "./utils" -import {useSession} from "./supertokens" +import {useSession} from "./auth/auth-client" +import {useRouter} from "./router" import {FirstParam, PromiseReturnType, QueryFn} from "./types" -import {useRouter} from "./use-router" +import {isClient} from "./utils" import { emptyQueryFn, getQueryCacheFunctions, diff --git a/packages/core/src/use-router-query.ts b/packages/core/src/use-router-query.ts deleted file mode 100644 index 4ef2bbbdd3..0000000000 --- a/packages/core/src/use-router-query.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {useRouter} from "next/router" -import {useMemo} from "react" -import {parse} from "url" - -export function useRouterQuery() { - const router = useRouter() - - const query = useMemo(() => { - const {query} = parse(router.asPath, true) - - return query - }, [router.asPath]) - - return query -} diff --git a/packages/core/src/use-router.ts b/packages/core/src/use-router.ts deleted file mode 100644 index 1c8ea37697..0000000000 --- a/packages/core/src/use-router.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {useRouter as useNextRouter} from "next/router" -import {useMemo} from "react" -import {BlitzRouter} from "./types" -import {useParams} from "./use-params" -import {useRouterQuery} from "./use-router-query" - -// TODO - we have to explicitly define the return type otherwise TS complains about -// NextHistoryState and TransitionOptions not being exported from Next.js code -export function useRouter() { - const router = useNextRouter() - const query = useRouterQuery() - const params = useParams() - - return useMemo(() => { - return {...router, query, params} - }, [params, query, router]) as BlitzRouter -} diff --git a/packages/core/src/utils/date-utils.ts b/packages/core/src/utils/date-utils.ts new file mode 100644 index 0000000000..4b9f9e6db5 --- /dev/null +++ b/packages/core/src/utils/date-utils.ts @@ -0,0 +1,45 @@ +const MILLISECONDS_IN_MINUTE = 60000 +const MINUTES_IN_YEAR = 525960 + +export const isPast = (date: Date) => { + return date.getTime() < Date.now() +} + +export function differenceInMilliseconds(dateLeft: Date, dateRight: Date) { + return dateLeft.getTime() - dateRight.getTime() +} + +export function differenceInMinutes(dateLeft: Date, dateRight: Date) { + const diff = differenceInMilliseconds(dateLeft, dateRight) / MILLISECONDS_IN_MINUTE + return diff > 0 ? Math.floor(diff) : Math.ceil(diff) +} + +export function addMilliseconds(date: Date, amount: number): Date { + const timestamp = date.getTime() + const cleanAmount = toInteger(amount) + return new Date(timestamp + cleanAmount) +} + +export function addMinutes(date: Date, amount: number): Date { + const cleanAmount = toInteger(amount) + return addMilliseconds(date, cleanAmount * MILLISECONDS_IN_MINUTE) +} + +export function addYears(date: Date, amount: number): Date { + const cleanAmount = toInteger(amount) + return addMinutes(date, cleanAmount * MINUTES_IN_YEAR) +} + +export function toInteger(dirtyNumber: unknown) { + if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) { + return NaN + } + + const number = Number(dirtyNumber) + + if (isNaN(number)) { + return number + } + + return number < 0 ? Math.ceil(number) : Math.floor(number) +} diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index 01b90f1d39..506150617d 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -1,19 +1,6 @@ -import {IncomingMessage} from "http" -import {BlitzApiRequest} from "../" - export const isServer = typeof window === "undefined" export const isClient = typeof window !== "undefined" -export function isLocalhost(req: BlitzApiRequest | IncomingMessage): boolean { - let {host} = req.headers - let localhost = false - if (host) { - host = host.split(":")[0] - localhost = host === "localhost" - } - return localhost -} - export function clientDebug(...args: any) { if (typeof window !== "undefined" && (window as any)["DEBUG_BLITZ"]) { console.log("[BLITZ]", ...args) diff --git a/packages/core/src/utils/tokens.test.ts b/packages/core/src/utils/tokens.test.ts deleted file mode 100644 index 6cf145aad9..0000000000 --- a/packages/core/src/utils/tokens.test.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* eslint @typescript-eslint/no-floating-promises: off */ -import {act} from "@testing-library/react-hooks" -import {toBase64} from "b64-lite" -import {renderHook} from "../../test/test-utils" -import {publicDataStore} from "../public-data-store" -import {useSession} from "../supertokens" -import {parsePublicDataToken} from "./tokens" - -describe("supertokens", () => { - describe("parsePublicDataToken", () => { - it("throws if token is empty", () => { - const ret = () => parsePublicDataToken("") - expect(ret).toThrow("[parsePublicDataToken] Failed: token is empty") - }) - - it("throws if the token cannot be parsed", () => { - const invalidJSON = "{" - const ret = () => parsePublicDataToken(toBase64(invalidJSON)) - - expect(ret).toThrowError("[parsePublicDataToken] Failed to parse publicDataStr: {") - }) - - it("parses the public data", () => { - const validJSON = '{"foo": "bar"}' - expect(parsePublicDataToken(toBase64(validJSON))).toEqual({ - publicData: {foo: "bar"}, - }) - }) - - it("parses the public data containing unicode chars", () => { - const data = '"foo-κόσμε-żółć-平仮名"' - expect(parsePublicDataToken(toBase64(data))).toEqual({ - publicData: "foo-κόσμε-żółć-平仮名", - }) - }) - }) - - describe("useSession", () => { - it("returns empty at when no value is set", () => { - const {result} = renderHook(() => useSession()) - - expect(result.current).toEqual({ - isLoading: false, - ...publicDataStore.emptyPublicData, - }) - }) - - it("subscribes to the public data store", () => { - const {result} = renderHook(() => useSession()) - - act(() => { - publicDataStore.updateState({roles: ["foo"], userId: "bar"} as any) - }) - - expect(result.current).toEqual({ - isLoading: false, - userId: "bar", - roles: ["foo"], - }) - - act(() => { - publicDataStore.updateState({roles: ["baz"], userId: "boo"} as any) - }) - - expect(result.current).toEqual({ - isLoading: false, - userId: "boo", - roles: ["baz"], - }) - }) - - it("un-subscribes from the public data store on unmount", () => { - const {result, unmount} = renderHook(() => useSession()) - - act(() => { - publicDataStore.updateState({roles: ["foo"], userId: "bar"} as any) - }) - - act(() => { - unmount() - }) - - act(() => { - publicDataStore.updateState({roles: ["baz"], userId: "boo"} as any) - }) - - expect(result.current).toEqual({ - isLoading: false, - userId: "bar", - roles: ["foo"], - }) - }) - }) -}) diff --git a/packages/server/test/with-blitz.test.ts b/packages/core/src/with-blitz.test.ts similarity index 92% rename from packages/server/test/with-blitz.test.ts rename to packages/core/src/with-blitz.test.ts index 22540ec131..e0925f4ff6 100644 --- a/packages/server/test/with-blitz.test.ts +++ b/packages/core/src/with-blitz.test.ts @@ -1,13 +1,10 @@ jest.mock("@blitzjs/config", () => { return { getConfig: jest.fn().mockReturnValue({}), - resolveAliases: { - node: {}, - }, } }) -import {withBlitz} from "../src/with-blitz" +import {withBlitz} from "./with-blitz" describe("withBlitz", () => { it("alters the webpack config as expected", () => { diff --git a/packages/server/src/with-blitz.ts b/packages/core/src/with-blitz.ts similarity index 69% rename from packages/server/src/with-blitz.ts rename to packages/core/src/with-blitz.ts index 161faaf8cf..0a75ce5d5b 100644 --- a/packages/server/src/with-blitz.ts +++ b/packages/core/src/with-blitz.ts @@ -1,10 +1,8 @@ -import {getProjectRoot, resolveAliases} from "@blitzjs/config" +/* eslint-disable es5/no-es6-methods -- file only used on the server */ +import {getProjectRoot} from "@blitzjs/config" import fs from "fs" -import moduleAlias from "module-alias" import path from "path" -moduleAlias.addAliases(resolveAliases.node) - export function withBlitz(nextConfig: any) { return (phase: string, nextOpts: any = {}) => { // Need to grab the normalized config based on the phase @@ -21,11 +19,11 @@ export function withBlitz(nextConfig: any) { // ---------------------- // Set up resolve aliases // ---------------------- - config.resolve ??= {} - config.resolve.alias ??= {} - for (const [from, to] of Object.entries(resolveAliases.webpack)) { - config.resolve.alias[from] = to - } + // config.resolve ??= {} + // config.resolve.alias ??= {} + // for (const [from, to] of Object.entries(resolveAliases.webpack)) { + // config.resolve.alias[from] = to + // } if (options.isServer) { const originalEntry = config.entry @@ -34,22 +32,29 @@ export function withBlitz(nextConfig: any) { ...(doesDbModuleExist() ? {"../blitz/db": "./db/index"} : {}), }) } else { - config.module ??= {} - config.module.rules = config.module.rules || [] + config.module = config.module ?? {} + config.module.rules = config.module.rules ?? [] const excluded = [ - /node_modules[\\/]passport/, - /node_modules[\\/]cookie-session/, - /node_modules[\\/]secure-password/, - /node_modules[\\/]npm-which/, - /node_modules[\\/]cross-spawn/, - /node_modules[\\/]node-libs-browser/, - /node_modules[\\/]crypto-browserify/, + /[\\/]npm-which[\\/]/, + /[\\/]cross-spawn[\\/]/, + /@blitzjs[\\/]config/, + /blitz[\\/]packages[\\/]config/, + /blitz2[\\/]packages[\\/]config/, ] excluded.forEach((excluded) => { config.module.rules.push({test: excluded, use: {loader: "null-loader"}}) }) if (normalizedConfig.experimental?.isomorphicResolverImports) { + config.module.rules.push({ + test: /@blitzjs[\\/]core[\\/]server/, + use: {loader: "null-loader"}, + }) + config.module.rules.push({ + test: /blitz[\\/]packages[\\/]core[\\/]server/, + use: {loader: "null-loader"}, + }) + config.plugins.push( new options.webpack.NormalModuleReplacementPlugin( /[/\\]?(mutations|queries)[/\\]/, @@ -98,14 +103,6 @@ export function withBlitz(nextConfig: any) { ) } - // We add next-transpile-modules during internal blitz development so that changes in blitz - // framework code will trigger a hot reload of any example apps that are running - const isInternalBlitzDevelopment = __dirname.includes("packages/server/src") - if (isInternalBlitzDevelopment) { - const withTM = require("next-transpile-modules")(["@blitzjs/core", "@blitzjs/server"]) - return withTM(newConfig) - } else { - return newConfig - } + return newConfig } } diff --git a/packages/core/src/with-router.tsx b/packages/core/src/with-router.tsx deleted file mode 100644 index dc5dbd7787..0000000000 --- a/packages/core/src/with-router.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import {WithRouterProps as WithNextRouterProps} from "next/dist/client/with-router" -import {NextRouter, withRouter as withNextRouter} from "next/router" -import React from "react" -import {extractRouterParams, useParams} from "./use-params" -import {useRouterQuery} from "./use-router-query" - -export {RouterContext} from "next/dist/next-server/lib/router-context" - -export interface BlitzRouter extends NextRouter { - params: ReturnType -} - -interface WithRouterProps { - router: BlitzRouter -} - -export function withRouter(WrappedComponent: React.ComponentType) { - const Wrapper: React.FC = ({router}) => { - const query = useRouterQuery() - const params = useParams() - return - } - return withNextRouter(Wrapper) -} diff --git a/packages/core/test/use-params.test.ts b/packages/core/test/router-hooks.test.ts similarity index 98% rename from packages/core/test/use-params.test.ts rename to packages/core/test/router-hooks.test.ts index 6c9c3e2eca..f23a01bab4 100644 --- a/packages/core/test/use-params.test.ts +++ b/packages/core/test/router-hooks.test.ts @@ -1,4 +1,4 @@ -import {extractRouterParams, useParam, useParams} from "../src/use-params" +import {extractRouterParams, useParam, useParams} from "../src/router/router-hooks" import {renderHook} from "./test-utils" describe("extractRouterParams", () => { diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json deleted file mode 100644 index 289adf0c7d..0000000000 --- a/packages/core/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "types", "test", "../../types"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "downlevelIteration": true, - "paths": { - "*": ["src/*", "node_modules/*"] - }, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/core/tsdx.config.js b/packages/core/tsdx.config.js deleted file mode 100644 index 4a31acf1fe..0000000000 --- a/packages/core/tsdx.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rollup(config, options) { - return config - }, -} diff --git a/packages/core/with-blitz/package.json b/packages/core/with-blitz/package.json new file mode 100644 index 0000000000..bbd2377b12 --- /dev/null +++ b/packages/core/with-blitz/package.json @@ -0,0 +1,5 @@ +{ + "main": "dist/blitzjs-core-with-blitz.cjs.js", + "module": "dist/blitzjs-core-with-blitz.esm.js", + "types": "dist/blitzjs-core-with-blitz.d.ts" +} diff --git a/packages/display/index-browser.js b/packages/display/index-browser.js deleted file mode 100644 index 4ba52ba2c8..0000000000 --- a/packages/display/index-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/packages/display/jest.config.js b/packages/display/jest.config.js new file mode 100644 index 0000000000..caa51b037b --- /dev/null +++ b/packages/display/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: "../../jest.config.js", +} diff --git a/packages/display/jest.setup.js b/packages/display/jest.setup.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/display/package.json b/packages/display/package.json index 96a0fc6b0a..38027799ca 100644 --- a/packages/display/package.json +++ b/packages/display/package.json @@ -1,30 +1,23 @@ { "name": "@blitzjs/display", - "version": "0.30.5", + "version": "0.31.1", "description": "Display package for the Blitz CLI", "homepage": "https://github.com/blitz-js/blitz#readme", "license": "MIT", "scripts": { - "clean": "rimraf dist", - "wait:config": "wait-on ../config/dist/packages/config/src/index.d.ts", - "predev": "yarn wait:config", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test", - "test:watch": "tsdx test --watch" + "test": "jest", + "test:watch": "jest --watch" }, "author": { "name": "Brandon Bayer", "email": "b@bayer.ws", "url": "https://twitter.com/flybayer" }, - "browser": "index-browser.js", - "main": "dist/index.js", - "module": "dist/display.esm.js", - "types": "dist/packages/display/src/index.d.ts", + "main": "dist/blitzjs-display.cjs.js", + "module": "dist/blitzjs-display.esm.js", + "types": "dist/blitzjs-display.cjs.d.ts", "files": [ - "dist", - "index-browser.js" + "dist" ], "keywords": [ "blitz", @@ -35,10 +28,17 @@ "url": "git+https://github.com/blitz-js/blitz.git" }, "dependencies": { - "@blitzjs/display": "0.30.5", + "@blitzjs/display": "0.31.1", "chalk": "^4.1.0", "console-table-printer": "^2.7.5", "ora": "^5.3.0", + "readline": "1.3.0", "tslog": "^3.1.1" + }, + "peerDependencies": { + "@blitzjs/config": "*" + }, + "devDependencies": { + "@blitzjs/config": "0.31.1" } } diff --git a/packages/display/src/index.test.ts b/packages/display/src/index.test.ts index 6cdc514b17..7e3f27bd6e 100644 --- a/packages/display/src/index.test.ts +++ b/packages/display/src/index.test.ts @@ -1,3 +1,5 @@ +export {} + it("should do nothing", () => { expect(true).toBe(true) }) diff --git a/packages/display/tsconfig.json b/packages/display/tsconfig.json deleted file mode 100644 index 736e83f1aa..0000000000 --- a/packages/display/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "downlevelIteration": true, - "paths": { - "*": ["src/*", "node_modules/*"] - }, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index a432ac91ab..f82725d8e1 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,10 +1,9 @@ { "name": "eslint-config-blitz", - "version": "0.30.5", + "version": "0.31.1", "description": "Blitz.js eslint config", "license": "MIT", "scripts": { - "clean": "rimraf dist", "test": "echo \"No tests\"" }, "files": [ diff --git a/packages/file-pipeline/jest.config.js b/packages/file-pipeline/jest.config.js new file mode 100644 index 0000000000..caa51b037b --- /dev/null +++ b/packages/file-pipeline/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: "../../jest.config.js", +} diff --git a/packages/file-pipeline/jest.setup.js b/packages/file-pipeline/jest.setup.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/file-pipeline/package.json b/packages/file-pipeline/package.json index 6c663197fe..afc4d87ea3 100644 --- a/packages/file-pipeline/package.json +++ b/packages/file-pipeline/package.json @@ -1,25 +1,21 @@ { "name": "@blitzjs/file-pipeline", - "version": "0.30.5", + "version": "0.31.1", "description": "Display package for the Blitz CLI", "homepage": "https://github.com/blitz-js/blitz#readme", "license": "MIT", "scripts": { - "wait:display": "wait-on ../display/dist/packages/display/src/index.d.ts", - "predev": "yarn wait:display", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test", - "test:watch": "tsdx test --watch" + "test": "jest", + "test:watch": "jest --watch" }, "author": { "name": "Brandon Bayer", "email": "b@bayer.ws", "url": "https://twitter.com/flybayer" }, - "main": "dist/index.js", - "module": "dist/file-pipeline.esm.js", - "types": "dist/packages/file-pipeline/src/index.d.ts", + "main": "dist/blitzjs-file-pipeline.cjs.js", + "module": "dist/blitzjs-file-pipeline.esm.js", + "types": "dist/blitzjs-file-pipeline.cjs.d.ts", "files": [ "dist" ], @@ -32,21 +28,28 @@ "url": "git+https://github.com/blitz-js/blitz.git" }, "dependencies": { - "@blitzjs/display": "0.30.5", "chalk": "^4.1.0", "chokidar": "3.5.1", "flush-write-stream": "2.0.0", "from2": "2.3.0", "fs-extra": "^9.1.0", "gulp-if": "3.0.0", + "lodash": "^4.0.0", "merge-stream": "2.0.0", + "micromatch": "4.0.2", "parallel-transform": "1.2.0", "pump": "3.0.0", "pumpify": "2.0.1", - "rimraf": "3.0.2", + "rimraf": "^3.0.2", "through2": "4.0.2", "vinyl": "2.2.1", "vinyl-file": "3.0.0", "vinyl-fs": "3.0.3" + }, + "peerDependencies": { + "@blitzjs/display": "*" + }, + "devDependencies": { + "@blitzjs/display": "0.31.1" } } diff --git a/packages/file-pipeline/src/index.ts b/packages/file-pipeline/src/index.ts index eb92f9836f..f2f0a91db7 100644 --- a/packages/file-pipeline/src/index.ts +++ b/packages/file-pipeline/src/index.ts @@ -1,7 +1,8 @@ export {transformFiles} from "./transform-files" -export {Stage, PipelineItem, RouteCacheEntry} from "./types" export * from "./events" export {transform} from "./transform" export {FileCache} from "./helpers/file-cache" export {RouteCache} from "./helpers/route-cache" export {rimraf} from "./helpers/rimraf-promise" + +export * from "./types" diff --git a/packages/file-pipeline/tsconfig.json b/packages/file-pipeline/tsconfig.json deleted file mode 100644 index 736e83f1aa..0000000000 --- a/packages/file-pipeline/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "downlevelIteration": true, - "paths": { - "*": ["src/*", "node_modules/*"] - }, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/generator/jest.config.js b/packages/generator/jest.config.js index 0047b3cd0f..caa51b037b 100644 --- a/packages/generator/jest.config.js +++ b/packages/generator/jest.config.js @@ -1,8 +1,3 @@ module.exports = { preset: "../../jest.config.js", - globals: { - "ts-jest": { - tsconfig: "test/tsconfig.json", - }, - }, } diff --git a/packages/generator/jest.setup.js b/packages/generator/jest.setup.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/generator/package.json b/packages/generator/package.json index fae8247bb2..ed727f167b 100644 --- a/packages/generator/package.json +++ b/packages/generator/package.json @@ -1,30 +1,27 @@ { "name": "@blitzjs/generator", - "version": "0.30.5", + "version": "0.31.1", "description": "File generation for the Blitz CLI", "homepage": "https://github.com/blitz-js/blitz#readme", "license": "MIT", - "files": [ - "dist" - ], "scripts": { - "clean": "rimraf dist", - "predev": "wait-on ../server/dist/packages/server/src/index.d.ts", - "dev": "run-p watch build:templates", - "watch": "tsdx watch --verbose", - "build": "tsdx build && yarn build:templates", - "build:templates": "wait-on dist/index.js && rimraf dist/templates/** && rimraf templates/**/node_modules && cpy --dot --parents '!/node_modules/' templates dist", - "test": "tsdx test", - "test:watch": "tsdx test --watch" + "dev": "yarn build:templates --watch", + "buildpkg": "yarn build:templates", + "build:templates": "cpx --clean \"templates/**/{.*,*}\" dist/templates", + "test": "jest", + "test:watch": "jest --watch" }, "author": { "name": "Brandon Bayer", "email": "b@bayer.ws", "url": "https://twitter.com/flybayer" }, - "main": "dist/index.js", - "module": "dist/generator.esm.js", - "types": "dist/packages/generator/src/index.d.ts", + "main": "dist/blitzjs-generator.cjs.js", + "module": "dist/blitzjs-generator.esm.js", + "types": "dist/blitzjs-generator.cjs.d.ts", + "files": [ + "dist" + ], "keywords": [ "blitz", "generator" @@ -34,9 +31,9 @@ "url": "git+https://github.com/blitz-js/blitz.git" }, "dependencies": { - "@babel/core": "7.12.10", + "@babel/core": "7.13.1", "@babel/plugin-transform-typescript": "7.12.1", - "@blitzjs/display": "0.30.5", + "@blitzjs/display": "0.31.1", "@types/jscodeshift": "0.7.2", "chalk": "^4.1.0", "cross-spawn": "7.0.3", @@ -54,5 +51,11 @@ "username": "^5.1.0", "vinyl": "2.2.1" }, - "gitHead": "d3b9fce0bdd251c2b1890793b0aa1cd77c1c0922" + "peerDependencies": { + "prettier": "*" + }, + "gitHead": "d3b9fce0bdd251c2b1890793b0aa1cd77c1c0922", + "devDependencies": { + "prettier": "2.2.1" + } } diff --git a/packages/generator/src/generator.ts b/packages/generator/src/generator.ts index 4f9feb489c..92d5e4cb8b 100644 --- a/packages/generator/src/generator.ts +++ b/packages/generator/src/generator.ts @@ -15,6 +15,7 @@ import getBabelOptions, {Overrides} from "recast/parsers/_babel_options" import * as babelParser from "recast/parsers/babel" import {ConflictChecker} from "./conflict-checker" import {pipe} from "./utils/pipe" +const debug = require("debug")("blitz:generator") export const customTsParser = { parse(source: string, options?: Overrides) { @@ -136,6 +137,7 @@ export abstract class Generator< constructor(protected readonly options: T) { super() + this.options = options this.store = createStore() this.fs = createEditor(this.store) this.enquirer = new Enquirer() @@ -188,6 +190,7 @@ export abstract class Generator< templateValues: any, prettierOptions: import("prettier").Options | undefined, ): string | Buffer { + debug("Generator.process...") if (new RegExp(`${ignoredExtensions.join("|")}$`).test(pathEnding)) { return input } @@ -225,6 +228,7 @@ export abstract class Generator< } async write(): Promise { + debug("Generator.write...") const paths = readDirRecursive(this.sourcePath(), (name) => { const additionalFilesToIgnore = this.filesToIgnore() return ![...alwaysIgnoreFiles, ...additionalFilesToIgnore].includes(name) @@ -275,6 +279,7 @@ export abstract class Generator< } async run(): Promise { + debug("Generator.run...", {options: this.options}) if (!this.options.dryRun) { await fs.ensureDir(this.options.destinationRoot!) process.chdir(this.options.destinationRoot!) diff --git a/packages/generator/templates/app/README.md b/packages/generator/templates/app/README.md index 90eaa2d5ea..b4d2713bcc 100644 --- a/packages/generator/templates/app/README.md +++ b/packages/generator/templates/app/README.md @@ -33,8 +33,6 @@ DATABASE_URL=postgresql://@localhost:5432/__name___test Runs your tests using Jest. ``` -blitz test -or yarn test ``` diff --git a/packages/generator/templates/app/blitz.config.js b/packages/generator/templates/app/blitz.config.js index fa3795200a..ce6217701c 100644 --- a/packages/generator/templates/app/blitz.config.js +++ b/packages/generator/templates/app/blitz.config.js @@ -1,4 +1,4 @@ -const { sessionMiddleware, simpleRolesIsAuthorized } = require("@blitzjs/server") +const { sessionMiddleware, simpleRolesIsAuthorized } = require("blitz") module.exports = { middleware: [ diff --git a/packages/generator/templates/app/package.json b/packages/generator/templates/app/package.json index 7cca373e25..b51ba28df7 100644 --- a/packages/generator/templates/app/package.json +++ b/packages/generator/templates/app/package.json @@ -35,7 +35,7 @@ "react": "0.0.0-experimental-3310209d0", "react-dom": "0.0.0-experimental-3310209d0", "react-error-boundary": "3.x", - "typescript": "4.x", + "typescript": "~4.1", "zod": "1.x" }, "devDependencies": { diff --git a/packages/generator/templates/app/types.ts b/packages/generator/templates/app/types.ts index cd9e610117..82209331c2 100644 --- a/packages/generator/templates/app/types.ts +++ b/packages/generator/templates/app/types.ts @@ -1,5 +1,4 @@ -import { DefaultCtx, SessionContext } from "blitz" -import { SimpleRolesIsAuthorized } from "@blitzjs/server" +import { DefaultCtx, SessionContext, SimpleRolesIsAuthorized } from "blitz" import { User } from "db" // Note: You should switch to Postgres and then use a DB enum for role type diff --git a/packages/generator/test/tsconfig.json b/packages/generator/test/tsconfig.json deleted file mode 100644 index b8dea2dff1..0000000000 --- a/packages/generator/test/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../tsconfig", - "compilerOptions": { - "noEmit": true, - "types": ["jest"], - "target": "es6" - }, - "references": [{"path": ".."}] -} diff --git a/packages/generator/tsconfig.json b/packages/generator/tsconfig.json deleted file mode 100644 index 940cfb6503..0000000000 --- a/packages/generator/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "test", "../../types"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "declaration": true, - "downlevelIteration": true, - "esModuleInterop": true, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/installer/jest.config.js b/packages/installer/jest.config.js index 2bed8dbee3..caa51b037b 100644 --- a/packages/installer/jest.config.js +++ b/packages/installer/jest.config.js @@ -1,9 +1,3 @@ module.exports = { preset: "../../jest.config.js", - globals: { - "ts-jest": { - tsconfig: "test/tsconfig.json", - isolatedModules: true, - }, - }, } diff --git a/packages/installer/jest.setup.js b/packages/installer/jest.setup.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/installer/package.json b/packages/installer/package.json index a15667899d..3f9e949170 100644 --- a/packages/installer/package.json +++ b/packages/installer/package.json @@ -1,27 +1,21 @@ { "name": "@blitzjs/installer", - "version": "0.30.5", + "version": "0.31.1", "description": "Package installation for the Blitz CLI", "homepage": "https://github.com/blitz-js/blitz#readme", "license": "MIT", "scripts": { - "clean": "rimraf dist", - "predev": "yarn wait:server && yarn wait:generator", - "wait:generator": "wait-on ../generator/dist/packages/generator/src/index.d.ts", - "wait:server": "wait-on ../server/dist/packages/server/src/index.d.ts", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test --no-color", - "test:watch": "tsdx test --watch" + "test": "jest", + "test:watch": "jest --watch" }, "author": { "name": "Brandon Bayer", "email": "b@bayer.ws", "url": "https://twitter.com/flybayer" }, - "main": "dist/index.js", - "module": "dist/installer.esm.js", - "types": "dist/packages/installer/src/index.d.ts", + "main": "dist/blitzjs-installer.cjs.js", + "module": "dist/blitzjs-installer.esm.js", + "types": "dist/blitzjs-installer.cjs.d.ts", "files": [ "dist" ], @@ -34,16 +28,16 @@ "url": "git+https://github.com/blitz-js/blitz.git" }, "dependencies": { - "@babel/core": "7.12.10", + "@babel/core": "7.13.1", "@babel/plugin-transform-typescript": "7.12.1", - "@blitzjs/config": "0.30.5", - "@blitzjs/display": "0.30.5", - "@blitzjs/generator": "0.30.5", + "@blitzjs/config": "0.31.1", + "@blitzjs/display": "0.31.1", + "@blitzjs/generator": "0.31.1", "@types/jscodeshift": "0.7.2", "cross-spawn": "7.0.3", "diff": "5.0.0", "enquirer": "2.3.6", - "fs-extra": "9.1.0", + "fs-extra": "^9.1.0", "globby": "11.0.2", "ink": "3.0.8", "ink-spinner": "4.0.1", diff --git a/packages/installer/src/recipe-executor.tsx b/packages/installer/src/recipe-executor.tsx index c7e5b1270a..03a3bc5322 100644 --- a/packages/installer/src/recipe-executor.tsx +++ b/packages/installer/src/recipe-executor.tsx @@ -12,7 +12,7 @@ type ExecutorConfig = | FileTransformExecutor.Config | NewFileExecutor.Config -export {ExecutorConfig as ExecutorConfigUnion} +export type {ExecutorConfig as ExecutorConfigUnion} export class RecipeExecutor { private readonly steps: ExecutorConfig[] diff --git a/packages/installer/test/executors/executor.test.tsx b/packages/installer/test/executors/executor.test.tsx index 328a2e731f..6c289689b6 100644 --- a/packages/installer/test/executors/executor.test.tsx +++ b/packages/installer/test/executors/executor.test.tsx @@ -1,6 +1,8 @@ import {render} from "ink-testing-library" import React from "react" +import stripAnsi from "strip-ansi" import {Frontmatter} from "../../src/executors/executor" + describe("Executor", () => { const executorConfig = { stepId: "newFile", @@ -11,7 +13,7 @@ describe("Executor", () => { it("should render Frontmatter", () => { const {lastFrame} = render() - expect(lastFrame()).toMatchSnapshot() + expect(stripAnsi(lastFrame())).toMatchSnapshot() }) it("should contain a step name and explanation", () => { diff --git a/packages/installer/test/tsconfig.json b/packages/installer/test/tsconfig.json deleted file mode 100644 index b8dea2dff1..0000000000 --- a/packages/installer/test/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../tsconfig", - "compilerOptions": { - "noEmit": true, - "types": ["jest"], - "target": "es6" - }, - "references": [{"path": ".."}] -} diff --git a/packages/installer/tsconfig.json b/packages/installer/tsconfig.json deleted file mode 100644 index b7e1d5cea6..0000000000 --- a/packages/installer/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "types", "test"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "downlevelIteration": true, - "paths": { - "*": ["src/*", "node_modules/*"] - }, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/repl/jest.config.js b/packages/repl/jest.config.js index 0047b3cd0f..caa51b037b 100644 --- a/packages/repl/jest.config.js +++ b/packages/repl/jest.config.js @@ -1,8 +1,3 @@ module.exports = { preset: "../../jest.config.js", - globals: { - "ts-jest": { - tsconfig: "test/tsconfig.json", - }, - }, } diff --git a/packages/repl/jest.setup.js b/packages/repl/jest.setup.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/repl/package.json b/packages/repl/package.json index 537a894a7c..99124edb06 100644 --- a/packages/repl/package.json +++ b/packages/repl/package.json @@ -1,26 +1,21 @@ { "name": "@blitzjs/repl", - "version": "0.30.5", + "version": "0.31.1", "description": "Repl package for Blitz CLI", "homepage": "https://github.com/blitz-js/blitz/packages/repl/#readme", "license": "MIT", "scripts": { - "clean": "rimraf dist", - "wait:config": "wait-on ../config/dist/packages/config/src/index.d.ts", - "predev": "yarn wait:config", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test", - "test:watch": "tsdx test --watch" + "test": "jest", + "test:watch": "jest --watch" }, "author": { "name": "Brandon Bayer", "email": "b@bayer.ws", "url": "https://twitter.com/flybayer" }, - "main": "dist/index.js", - "module": "dist/repl.esm.js", - "types": "dist/packages/repl/src/index.d.ts", + "main": "dist/blitzjs-repl.cjs.js", + "module": "dist/blitzjs-repl.esm.js", + "types": "dist/blitzjs-repl.cjs.d.ts", "files": [ "dist" ], @@ -33,14 +28,16 @@ "url": "git+https://github.com/blitz-js/blitz.git" }, "dependencies": { - "@blitzjs/config": "0.30.5", "chokidar": "3.5.1", "globby": "11.0.2", "pkg-dir": "^5.0.0", "progress": "^2.0.3" }, + "peerDependencies": { + "@blitzjs/config": "*" + }, "gitHead": "d3b9fce0bdd251c2b1890793b0aa1cd77c1c0922", "devDependencies": { - "@types/progress": "^2.0.3" + "@blitzjs/config": "0.31.1" } } diff --git a/packages/repl/test/tsconfig.json b/packages/repl/test/tsconfig.json deleted file mode 100644 index b8dea2dff1..0000000000 --- a/packages/repl/test/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../tsconfig", - "compilerOptions": { - "noEmit": true, - "types": ["jest"], - "target": "es6" - }, - "references": [{"path": ".."}] -} diff --git a/packages/repl/tsconfig.json b/packages/repl/tsconfig.json deleted file mode 100644 index 139460e6c8..0000000000 --- a/packages/repl/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "test"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "declaration": true, - "downlevelIteration": true, - "esModuleInterop": true, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/server/index-browser.js b/packages/server/index-browser.js deleted file mode 100644 index 4ba52ba2c8..0000000000 --- a/packages/server/index-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/packages/server/package.json b/packages/server/package.json index e25337b319..731725d933 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,59 +1,38 @@ { "name": "@blitzjs/server", "description": "Blitz.js server functionality", - "version": "0.30.5", + "version": "0.31.1", "license": "MIT", "bin": { "next-patched": "./bin/next-patched" }, "scripts": { - "clean": "rimraf dist", - "wait:file-pipeline": "wait-on ../file-pipeline/dist/packages/file-pipeline/src/index.d.ts", - "wait:core": "wait-on ../core/dist/packages/core/src/index.d.ts", - "wait:config": "wait-on ../config/dist/packages/config/src/index.d.ts", - "predev": "yarn wait:config && yarn wait:file-pipeline && yarn wait:core", - "dev": "tsdx watch --verbose", - "build": "tsdx build", - "test": "tsdx test" + "test": "jest", + "test:watch": "jest --watch" }, "author": { "name": "Brandon Bayer", "email": "b@bayer.ws", "url": "https://twitter.com/flybayer" }, - "browser": "index-browser.js", - "main": "dist/index.js", - "module": "dist/server.esm.js", - "types": "dist/packages/server/src/index.d.ts", + "main": "dist/blitzjs-server.cjs.js", + "module": "dist/blitzjs-server.esm.js", + "types": "dist/blitzjs-server.cjs.d.ts", "files": [ "dist", - "register", - "index-browser.js" + "register" ], - "jest": { - "setupFilesAfterEnv": [ - "/jest.setup.js" - ] - }, "dependencies": { - "@blitzjs/file-pipeline": "0.30.5", - "b64-lite": "^1.4.0", - "cookie": "^0.4.1", + "@blitzjs/file-pipeline": "0.31.1", "cross-spawn": "7.0.3", - "date-fns": "^2.16.1", "detect-port": "1.3.0", "expand-tilde": "2.0.2", "fast-glob": "3.2.5", "flush-write-stream": "2.0.0", "from2": "2.3.0", + "fs-extra": "^9.1.0", "gulp-if": "3.0.0", - "jsonwebtoken": "^8.5.1", - "lodash": "^4.17.20", - "lodash-es": "^4.17.20", - "nanoid": "^3.1.20", - "next": "10.0.7", - "null-loader": "4.0.1", - "ora": "^5.3.0", + "lodash": "^4.0.0", "parallel-transform": "1.2.0", "parse-gitignore": "1.0.1", "pirates": "4.0.1", @@ -62,13 +41,19 @@ "readable-stream": "3.6.0", "resolve-cwd": "3.0.0", "slash": "^3.0.0", - "superjson": "1.7.2", "through2": "4.0.2", "vinyl": "2.2.1" }, "devDependencies": { - "@blitzjs/core": "0.30.5", - "next-transpile-modules": "6.1.0" + "@blitzjs/config": "0.31.1", + "@blitzjs/core": "0.31.1", + "@blitzjs/display": "0.31.1", + "next": "10.0.7" + }, + "peerDependencies": { + "@blitzjs/config": "*", + "@blitzjs/core": "*", + "@blitzjs/display": "*" }, "gitHead": "d3b9fce0bdd251c2b1890793b0aa1cd77c1c0922" } diff --git a/packages/server/src/config.ts b/packages/server/src/config.ts index 3313b53bcf..6ffc92b6f4 100644 --- a/packages/server/src/config.ts +++ b/packages/server/src/config.ts @@ -1,5 +1,5 @@ import {transformFiles} from "@blitzjs/file-pipeline" -import {promises} from "fs" +import fs, {promises} from "fs" import {join, resolve} from "path" import {parseChokidarRulesFromGitignore} from "./parse-chokidar-rules-from-gitignore" import {resolveBinAsync} from "./resolve-bin-async" @@ -47,7 +47,19 @@ type NormalizedConfig = ServerConfig & { export const standardBuildFolderPath = ".blitz/build" export const standardBuildFolderPathRegex = /\.blitz[\\/]build[\\/]/g +// https://stackoverflow.com/questions/20010199/how-to-determine-if-a-process-runs-inside-lxc-docker +function isInDocker(): boolean { + const cgroupFile = join("proc", "self", "cgroup") + if (fs.existsSync(cgroupFile)) { + const content = fs.readFileSync(cgroupFile, "utf-8") + return content.includes("docker") + } + return false +} + const defaults = { + hostname: isInDocker() ? "0.0.0.0" : "127.0.0.1", + // - env: "prod" as ServerEnvironment, // - buildFolder: standardBuildFolderPath, @@ -95,6 +107,7 @@ export async function normalize(config: ServerConfig): Promise return { ...config, + hostname: config.hostname ?? defaults.hostname, env, // - rootFolder, diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 87afc28821..b71fd33839 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -1,22 +1,8 @@ -export {withBlitz} from "./with-blitz" export {build} from "./build" export {dev} from "./dev" export {prod} from "./prod" export {routes} from "./routes" -export {normalize, ServerConfig} from "./config" +export {normalize} from "./config" +export type {ServerConfig} from "./config" export {resolveBinAsync} from "./resolve-bin-async" export {ManifestLoader} from "./stages/manifest" -export * from "./rpc" -export * from "./supertokens" - -// ----------------- -// For custom server -// ----------------- -import next from "next" - -// Support commonjs `require('blitz')` -module.exports = next -exports = module.exports - -// eslint-disable-next-line import/no-default-export -export default next diff --git a/packages/server/src/next-utils.ts b/packages/server/src/next-utils.ts index 5f6b0a97d9..9a77694936 100644 --- a/packages/server/src/next-utils.ts +++ b/packages/server/src/next-utils.ts @@ -162,7 +162,7 @@ export async function nextStart(nextBin: string, buildFolder: string, config: Se rej("") } else { const nextjs = spawn(nextBin, spawnCommand, { - cwd: buildFolder, + cwd: process.cwd(), env: spawnEnv, stdio: [process.stdin, "pipe", "pipe"], }) diff --git a/packages/server/src/stages/config/index.ts b/packages/server/src/stages/config/index.ts index 090fd8d3a0..85381b76da 100644 --- a/packages/server/src/stages/config/index.ts +++ b/packages/server/src/stages/config/index.ts @@ -40,7 +40,7 @@ export const createStageConfig: Stage = ({config, processNewFile, processNewChil cwd: config.src, path: resolve(config.src, "next.config.js"), contents: Buffer.from(` -const {withBlitz} = require('@blitzjs/server'); +const {withBlitz} = require('@blitzjs/core/with-blitz'); const config = require('./blitz.config.js'); module.exports = withBlitz(config); `), @@ -72,7 +72,7 @@ module.exports = withBlitz(config); }) file.contents = Buffer.from(` -const {withBlitz} = require('@blitzjs/server'); +const {withBlitz} = require('@blitzjs/core/with-blitz'); const vercelConfig = require('./next-vercel.config.js'); const config = require('./blitz.config.js'); module.exports = withBlitz({...config, ...vercelConfig}); diff --git a/packages/server/src/stages/rpc/index.ts b/packages/server/src/stages/rpc/index.ts index b9da52eea0..63294a3ae3 100644 --- a/packages/server/src/stages/rpc/index.ts +++ b/packages/server/src/stages/rpc/index.ts @@ -60,8 +60,8 @@ export default getIsomorphicEnhancedResolver( const apiHandlerTemplate = (originalPath: string, useTypes: boolean) => ` // This imports the output of getIsomorphicEnhancedResolver() import enhancedResolver from '${originalPath}' -import {getAllMiddlewareForModule} from '@blitzjs/core' -import {rpcApiHandler} from '@blitzjs/server' +import {getAllMiddlewareForModule} from '@blitzjs/core/server' +import {rpcApiHandler} from '@blitzjs/core/server' import path from 'path' // Ensure these files are not eliminated by trace-based tree-shaking (like Vercel) diff --git a/packages/server/src/stages/stage-test-utils.ts b/packages/server/src/stages/stage-test-utils.ts index 6cb3fcf296..457fc43379 100644 --- a/packages/server/src/stages/stage-test-utils.ts +++ b/packages/server/src/stages/stage-test-utils.ts @@ -1,5 +1,5 @@ import {FileCache, RouteCache} from "@blitzjs/file-pipeline" -import {StageArgs, StageConfig} from "@blitzjs/file-pipeline/dist/packages/file-pipeline/src/types" +import {StageArgs, StageConfig} from "@blitzjs/file-pipeline" import {pipeline, through} from "../streams" export function mockStageArgs(a: {entries?: string[]; cwd?: string}): StageArgs { diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json deleted file mode 100644 index 61cd996791..0000000000 --- a/packages/server/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "test"], - "exclude": ["node_modules"], - "compilerOptions": { - "baseUrl": "./", - "declarationDir": "./dist", - "downlevelIteration": true, - "paths": { - "*": ["src/*", "node_modules/*"] - }, - "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo" - } -} diff --git a/packages/server/tsdx.config.js b/packages/server/tsdx.config.js deleted file mode 100644 index 6d8b3bd7f5..0000000000 --- a/packages/server/tsdx.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - rollup(config, options) { - config.onwarn = (warning, warn) => { - if (warning.code === "EVAL" && /[/\\](supertokens.ts)$/.test(warning.loc.file)) { - return - } - warn(warning) - } - return config - }, -} diff --git a/patches/release+6.3.0.patch b/patches/release+6.3.0.patch index bfb3478976..b89dcd4546 100644 --- a/patches/release+6.3.0.patch +++ b/patches/release+6.3.0.patch @@ -111,7 +111,7 @@ index 6d08754..ee1a3be 100644 for (const type of changeTypes) { const short = type.handle; diff --git a/node_modules/release/lib/definitions.js b/node_modules/release/lib/definitions.js -index ce5ece4..dada03f 100644 +index ce5ece4..69fa0af 100644 --- a/node_modules/release/lib/definitions.js +++ b/node_modules/release/lib/definitions.js @@ -1,28 +1,32 @@ @@ -144,7 +144,7 @@ index ce5ece4..dada03f 100644 - return false; -}; -+ if (text.includes("allcontributors") || text.includes("as a contributor")) { ++ if (text.includes("allcontributors") || text.includes("as a contributor") || text.includes("as contributor")) { + return "meta" + } + } diff --git a/recipes/base-web/package.json b/recipes/base-web/package.json index 9d6a54fe55..a640dc444c 100644 --- a/recipes/base-web/package.json +++ b/recipes/base-web/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-base-web", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for installing Base Web", "main": "index.ts", "scripts": { @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5", + "@blitzjs/installer": "0.31.1", "jscodeshift": "0.11.0" }, "devDependencies": { diff --git a/recipes/chakra-ui/package.json b/recipes/chakra-ui/package.json index 7ca74c7312..8d3a062126 100644 --- a/recipes/chakra-ui/package.json +++ b/recipes/chakra-ui/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-chakra-ui", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for installing Chakra UI", "main": "index.ts", "scripts": { @@ -24,7 +24,7 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5", + "@blitzjs/installer": "0.31.1", "jscodeshift": "0.11.0" }, "devDependencies": { diff --git a/recipes/emotion/package.json b/recipes/emotion/package.json index acba23c972..43ffeedfa0 100644 --- a/recipes/emotion/package.json +++ b/recipes/emotion/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-emotion", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for installing Emotion", "main": "index.ts", "scripts": { @@ -22,7 +22,7 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5", + "@blitzjs/installer": "0.31.1", "jscodeshift": "0.11.0" }, "devDependencies": { diff --git a/recipes/gh-action-yarn-mariadb/index.ts b/recipes/gh-action-yarn-mariadb/index.ts new file mode 100644 index 0000000000..9fa4743746 --- /dev/null +++ b/recipes/gh-action-yarn-mariadb/index.ts @@ -0,0 +1,17 @@ +import {RecipeBuilder} from "@blitzjs/installer" +import {join} from "path" + +export default RecipeBuilder() + .setName("Github Action Workflow For Yarn & MariaDB") + .setDescription("This Github Action config will build and test your blitz app on each push") + .setOwner("me@kevinlangleyjr.com") + .setRepoLink("https://github.com/blitz-js/blitz") + .addNewFilesStep({ + stepId: "addWorkflow", + stepName: "Add .github/workflows/main.yml", + explanation: `NOTE: Your app must be configured to use MariaDB for this`, + targetDirectory: ".github/workflows/", + templatePath: join(__dirname, "templates"), + templateValues: {}, + }) + .build() diff --git a/recipes/gh-action-yarn-mariadb/package.json b/recipes/gh-action-yarn-mariadb/package.json new file mode 100644 index 0000000000..f28826a911 --- /dev/null +++ b/recipes/gh-action-yarn-mariadb/package.json @@ -0,0 +1,29 @@ +{ + "name": "@blitzjs/recipe-gh-action-yarn-mariadb", + "private": true, + "version": "0.31.1", + "description": "The Blitz Recipe for adding github actions workflow with MariaDB", + "main": "index.ts", + "scripts": { + "test": "echo \"No tests yet\"" + }, + "repository": { + "type": "git", + "url": "https://github.com/blitz-js/blitz.git" + }, + "keywords": [ + "blitz", + "blitzjs", + "github", + "actions" + ], + "author": "Kevin Langley Jr. ", + "license": "MIT", + "bugs": { + "url": "https://github.com/blitz-js/blitz/issues" + }, + "homepage": "https://github.com/blitz-js/blitz#readme", + "dependencies": { + "@blitzjs/installer": "0.31.1" + } +} diff --git a/recipes/gh-action-yarn-mariadb/templates/main.yml b/recipes/gh-action-yarn-mariadb/templates/main.yml new file mode 100644 index 0000000000..8515eaf537 --- /dev/null +++ b/recipes/gh-action-yarn-mariadb/templates/main.yml @@ -0,0 +1,99 @@ +name: CI + +on: [push] + +jobs: + ############### + # Lint & Test + ############### + tests: + name: Tests + runs-on: ubuntu-latest + env: + NODE_ENV: test + DATABASE_URL: mysql://root:password@127.0.0.1:3306/test + services: + mariadb: + image: mariadb:latest + ports: + - 3306:3306 + env: + MYSQL_DATABASE: test + MYSQL_ROOT_PASSWORD: password + options: >- + --health-cmd="mysqladmin ping" + --health-interval=5s + --health-timeout=2s + --health-retries=3 + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + # Node + - name: Read .node-version + id: node_version + run: echo ::set-output name=NODE_VERSION::$(cat .node-version || echo "14") + - name: Setup Node + uses: actions/setup-node@v2-beta + with: + node-version: ${{ steps.node_version.outputs.NODE_VERSION }} + + # Yarn cache/install + - name: Find yarn cache location + id: yarn-cache + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: JS package cache + uses: actions/cache@v2 + with: + path: | + ${{ steps.yarn-cache.outputs.dir }} + **/node_modules + /home/runner/.cache/Cypress + C:\Users\runneradmin\AppData\Local\Cypress\Cache + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install packages + run: yarn install --frozen-lockfile + + # Lint Code + - name: Lint + run: yarn lint + + # Migrate DB & generate prisma client + - name: Migrate DB & generate prisma client + run: yarn blitz prisma migrate dev --preview-feature + + # Jest Tests (API/Frontend) + - name: Run Jest Tests + run: yarn test + + # E2E Tests via Cypress + # - name: Run Cypress E2E Tests + # uses: cypress-io/github-action@v2 + # with: + # # we have already installed all dependencies above + # install: false + # start: yarn test:server --production + # wait-on: "http://localhost:3099" + # wait-on-timeout: 300 + # env: + # NODE_ENV: test + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - name: Upload Cypress Screenshots + # uses: actions/upload-artifact@v1 + # # Only capture images on failure + # if: failure() + # with: + # name: cypress-screenshots + # path: cypress/screenshots + # retention-days: 3 + # - name: Upload Cypress Videos + # uses: actions/upload-artifact@v1 + # # Test run video was always captured, so this action uses "always()" condition + # if: always() + # with: + # name: cypress-videos + # path: cypress/videos + # retention-days: 3 diff --git a/recipes/gh-action-yarn-postgres/package.json b/recipes/gh-action-yarn-postgres/package.json index 4c00ca11e6..53151c632f 100644 --- a/recipes/gh-action-yarn-postgres/package.json +++ b/recipes/gh-action-yarn-postgres/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-gh-action-yarn-postgres", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for adding github actions workflow with postgres", "main": "index.ts", "scripts": { @@ -24,6 +24,6 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5" + "@blitzjs/installer": "0.31.1" } } diff --git a/recipes/material-ui/package.json b/recipes/material-ui/package.json index 7d90fdff19..6e66c504d1 100644 --- a/recipes/material-ui/package.json +++ b/recipes/material-ui/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-material-ui", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for installing Material-UI", "main": "index.ts", "scripts": { @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5", + "@blitzjs/installer": "0.31.1", "jscodeshift": "0.11.0" }, "devDependencies": { diff --git a/recipes/quirrel/package.json b/recipes/quirrel/package.json index 01db96ee60..6fd56a0f11 100644 --- a/recipes/quirrel/package.json +++ b/recipes/quirrel/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-quirrel", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for adding Quirrel", "main": "index.ts", "scripts": { @@ -22,6 +22,6 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5" + "@blitzjs/installer": "0.31.1" } } diff --git a/recipes/reflexjs/package.json b/recipes/reflexjs/package.json index 15cda299ab..fa06271436 100644 --- a/recipes/reflexjs/package.json +++ b/recipes/reflexjs/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-reflexjs", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for installing Reflexjs", "main": "index.ts", "scripts": { @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5", + "@blitzjs/installer": "0.31.1", "jscodeshift": "0.11.0" }, "devDependencies": { diff --git a/recipes/render/package.json b/recipes/render/package.json index a76efa9e9f..291e66c6a0 100644 --- a/recipes/render/package.json +++ b/recipes/render/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-render", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for adding render.yaml", "main": "index.ts", "scripts": { @@ -22,6 +22,6 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5" + "@blitzjs/installer": "0.31.1" } } diff --git a/recipes/render/templates/render.yaml b/recipes/render/templates/render.yaml index 9fe6011241..2ea516b065 100644 --- a/recipes/render/templates/render.yaml +++ b/recipes/render/templates/render.yaml @@ -3,7 +3,7 @@ services: name: blitzapp env: node plan: starter - buildCommand: yarn --frozen-lockfile --prod=false && blitz prisma migrate deploy --preview-feature && blitz build + buildCommand: yarn --frozen-lockfile --prod=false && blitz build && blitz prisma migrate deploy --preview-feature startCommand: blitz start envVars: # ⚠️ You must set SESSION_SECRET_KEY env var through the UI. diff --git a/recipes/secureheaders/index.ts b/recipes/secureheaders/index.ts new file mode 100644 index 0000000000..4e79512672 --- /dev/null +++ b/recipes/secureheaders/index.ts @@ -0,0 +1,177 @@ +import {addImport, paths, RecipeBuilder} from "@blitzjs/installer" +import j from "jscodeshift" +import {Collection} from "jscodeshift/src/Collection" +import {join} from "path" + +export default RecipeBuilder() + .setName("Secure Headers") + .setDescription( + `Improve the security of your blitz app at the push of a button. You will probably have to manually adjust your content security policies to suit your needs.`, + ) + .setOwner("jeremy@jeremyliberman.com") + .setRepoLink("https://github.com/blitz-js/blitz") + .addNewFilesStep({ + stepId: "addSecureHeadersUtils", + stepName: "Add SecureHeaders util files", + explanation: `Add a utility file that will help us to generate the hash for our Content Security Policy.`, + targetDirectory: "./app/core", + templatePath: join(__dirname, "templates", "core"), + templateValues: {}, + }) + .addTransformFilesStep({ + stepId: "metaTags", + stepName: "Set meta tags", + explanation: `Inserts meta tags into the element of _document.tsx`, + singleFileSearch: paths.document(), + transform(program: Collection) { + const secureHeadersImport = j.importDeclaration( + [j.importSpecifier(j.identifier("computeCsp"))], + j.literal("app/core/secureheaders"), + ) + + if ( + program + .find(j.ImportDeclaration) + .filter((path) => path.node.source.value === secureHeadersImport.source.value).length === + 0 + ) { + addImport(program, secureHeadersImport) + } + + program.findJSXElements("DocumentHead").forEach((path) => { + path.replace( + j.jsxElement( + j.jsxOpeningElement(j.jsxIdentifier("DocumentHead")), + j.jsxClosingElement(j.jsxIdentifier("DocumentHead")), + [ + ...addHttpMetaTag( + "Content-Security-Policy", + j.jsxExpressionContainer( + j.callExpression(j.identifier("computeCsp"), [ + j.memberExpression(j.thisExpression(), j.identifier("props")), + ]), + ), + ), + ...addHttpMetaTag("Referrer-Policy", j.stringLiteral("origin-when-cross-origin")), + j.literal("\n"), + ...path.node.children + .filter((path) => { + return !( + path.type === "JSXElement" && + path.openingElement.name.type === "JSXIdentifier" && + path.openingElement.name.name === "meta" && + path.openingElement.attributes.some( + (attr) => + attr.type === "JSXAttribute" && + attr.name.type === "JSXIdentifier" && + attr.name.name === "httpEquiv" && + attr.value?.type === "StringLiteral" && + ["Content-Security-Policy", "Referrer-Policy"].includes(attr.value.value), + ) + ) + }) + .filter(Boolean), + ], + ), + ) + }) + + return program + }, + }) + .addTransformFilesStep({ + stepId: "customHeaders", + stepName: "Set custom headers", + explanation: `Insert custom headers into blitz.config.js and disable the "X-Powered-By: Next.js" header`, + singleFileSearch: paths.blitzConfig(), + transform(program: Collection) { + return addHttpHeaders(program, [ + {name: "Strict-Transport-Security", value: "max-age=631138519"}, + {name: "X-Frame-Options", value: "sameorigin"}, + {name: "X-Content-Type-Options", value: "nosniff"}, + {name: "Permissions-Policy", value: "default 'none'"}, + ]) + }, + }) + .build() + +function addHttpMetaTag(name: string, value: j.JSXExpressionContainer | j.StringLiteral) { + return [ + j.literal("\n"), + j.jsxElement( + j.jsxOpeningElement( + j.jsxIdentifier("meta"), + [ + j.jsxAttribute(j.jsxIdentifier("httpEquiv"), j.stringLiteral(name)), + j.jsxAttribute(j.jsxIdentifier("content"), value), + ], + true, + ), + ), + ] +} + +function findModuleExportsExpressions(program: Collection) { + return program + .find(j.AssignmentExpression) + .filter( + (path) => + path.value.left.type === "MemberExpression" && + (path.value.left.object as any).name === "module" && + (path.value.left.property as any).name === "exports" && + path.value.right.type === "ObjectExpression", + ) +} + +function addHttpHeaders( + program: Collection, + headers: Array<{name: string; value: string}>, +) { + findModuleExportsExpressions(program).forEach((moduleExportsExpression) => { + const config = j(moduleExportsExpression.value.right) + + const arr = j.arrayExpression( + headers.map(({name, value}) => + j.objectExpression([ + j.objectProperty(j.identifier("key"), j.stringLiteral(name)), + j.objectProperty(j.identifier("value"), j.stringLiteral(value)), + ]), + ), + ) + + const obj = moduleExportsExpression.value.right as j.ObjectExpression + const poweredByProp = config + .find(j.ObjectProperty) + .filter( + (path) => + path.value.type === "ObjectProperty" && + path.value.key.type === "Identifier" && + path.value.key.name === "poweredByHeader", + ) + + if (poweredByProp.length > 0) { + poweredByProp.forEach((path) => (path.value.value = j.booleanLiteral(false))) + } else { + obj.properties.push( + j.objectProperty(j.identifier("poweredByHeader"), j.booleanLiteral(false)), + ) + } + + const headersCollection = config + .find(j.ObjectProperty) + .filter( + (path) => + path.value.type === "ObjectProperty" && + path.value.key.type === "Identifier" && + path.value.key.name === "headers", + ) + + if (headersCollection.length > 0) { + headersCollection.forEach((path) => (path.value.value = arr)) + } else { + obj.properties.push(j.objectProperty(j.identifier("headers"), arr)) + } + }) + + return program +} diff --git a/recipes/secureheaders/package.json b/recipes/secureheaders/package.json new file mode 100644 index 0000000000..c7b6f2a6d3 --- /dev/null +++ b/recipes/secureheaders/package.json @@ -0,0 +1,32 @@ +{ + "name": "@blitzjs/recipe-secureheaders", + "private": true, + "version": "0.31.1", + "description": "The Blitz Recipe for configuring Secure Headers", + "main": "index.ts", + "scripts": { + "test": "echo \"No tests yet\"" + }, + "repository": { + "type": "git", + "url": "https://github.com/blitz-js/blitz.git" + }, + "keywords": [ + "blitz", + "blitzjs" + ], + "author": "Jeremy Liberman ", + "license": "MIT", + "bugs": { + "url": "https://github.com/blitz-js/blitz/issues" + }, + "homepage": "https://github.com/blitz-js/blitz#readme", + "dependencies": { + "@blitzjs/installer": "0.31.1", + "jscodeshift": "0.11.0", + "uuid": "^8.3.1" + }, + "devDependencies": { + "@types/jscodeshift": "0.7.2" + } +} diff --git a/recipes/secureheaders/templates/core/secureheaders.ts b/recipes/secureheaders/templates/core/secureheaders.ts new file mode 100644 index 0000000000..6ffa83d9ad --- /dev/null +++ b/recipes/secureheaders/templates/core/secureheaders.ts @@ -0,0 +1,19 @@ +import {getBlitzRuntimeData, DocumentProps} from "blitz" +import {NextScript} from "next/document" +import htmlescape from "htmlescape" +import crypto from "crypto" + +export const cspHashOf = (text: string) => { + const hash = crypto.createHash("sha256") + hash.update(text) + return `'sha256-${hash.digest("base64")}'` +} + +export const computeCsp = (props: Readonly) => { + const nextHash = cspHashOf(NextScript.getInlineScriptSource(props)) + const blitzHash = cspHashOf(htmlescape(getBlitzRuntimeData())) + + return `default-src 'self'; style-src 'self' 'unsafe-inline' fonts.googleapis.com; font-src 'self' data: fonts.gstatic.com; script-src 'self' ${ + process.env.NODE_ENV === "production" ? "" : "'unsafe-eval'" + } ${nextHash} ${blitzHash}` +} diff --git a/recipes/tailwind/package.json b/recipes/tailwind/package.json index a410e67cbe..c8471c8b44 100644 --- a/recipes/tailwind/package.json +++ b/recipes/tailwind/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-tailwind", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for installing Tailwind CSS", "main": "index.ts", "scripts": { @@ -22,7 +22,7 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5", + "@blitzjs/installer": "0.31.1", "jscodeshift": "0.11.0" }, "devDependencies": { diff --git a/recipes/theme-ui/package.json b/recipes/theme-ui/package.json index d0a7bc1da3..ff5a395912 100644 --- a/recipes/theme-ui/package.json +++ b/recipes/theme-ui/package.json @@ -1,7 +1,7 @@ { "name": "@blitzjs/recipe-theme-ui", "private": true, - "version": "0.30.5", + "version": "0.31.1", "description": "The Blitz Recipe for installing Theme UI", "main": "index.ts", "scripts": { @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/blitz-js/blitz#readme", "dependencies": { - "@blitzjs/installer": "0.30.5", + "@blitzjs/installer": "0.31.1", "jscodeshift": "0.11.0" }, "devDependencies": { diff --git a/recipes/theme-ui/templates/config/blitz.config.js b/recipes/theme-ui/templates/config/blitz.config.js index 95c65a3d6e..51f5d03eb1 100644 --- a/recipes/theme-ui/templates/config/blitz.config.js +++ b/recipes/theme-ui/templates/config/blitz.config.js @@ -1,4 +1,4 @@ -const {sessionMiddleware, simpleRolesIsAuthorized} = require("@blitzjs/server") +const {sessionMiddleware, simpleRolesIsAuthorized} = require("blitz") const withMDX = require("@next/mdx")({ extension: /\.mdx?$/, diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 0000000000..602cca421c --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["**/*"] +} diff --git a/tsconfig.json b/tsconfig.json index 3b9010c0f2..ce4165a9c2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,19 @@ { "compilerOptions": { - "target": "es5", + "target": "ES2017", "module": "esnext", "lib": ["dom", "dom.iterable", "esnext"], "importHelpers": true, - "declaration": true, - "sourceMap": true, "rootDir": "./", "strict": true, "noImplicitAny": true, "strictNullChecks": true, "strictFunctionTypes": true, "strictPropertyInitialization": true, + "forceConsistentCasingInFileNames": true, "noImplicitThis": true, "alwaysStrict": true, + "skipLibCheck": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, @@ -21,6 +21,23 @@ "moduleResolution": "node", "jsx": "react", "esModuleInterop": true, - "noEmit": true - } + "noEmit": true, + "isolatedModules": true, + "incremental": true + }, + "include": [ + "types/**/*", + "packages/babel-preset/src/**/*", + "packages/blitz/src/**/*", + "packages/config/src/**/*", + "packages/core/src/**/*", + "packages/display/src/**/*", + "packages/file-pipeline/src/**/*", + "packages/generator/src/**/*", + "packages/installer/src/**/*", + "packages/repl/src/**/*", + "packages/server/src/**/*", + "recipes/*" + ], + "exclude": ["*.test.ts", "*.test.tsx"] } diff --git a/packages/cli/test/tsconfig.json b/tsconfig.test.json similarity index 54% rename from packages/cli/test/tsconfig.json rename to tsconfig.test.json index b8dea2dff1..98ae223563 100644 --- a/packages/cli/test/tsconfig.json +++ b/tsconfig.test.json @@ -1,9 +1,8 @@ { - "extends": "../tsconfig", + "extends": "./tsconfig", "compilerOptions": { "noEmit": true, - "types": ["jest"], - "target": "es6" + "types": ["jest"] }, "references": [{"path": ".."}] } diff --git a/packages/server/src/expand-tilde.d.ts b/types/expand-tilde.d.ts similarity index 100% rename from packages/server/src/expand-tilde.d.ts rename to types/expand-tilde.d.ts diff --git a/types/lodash.frompairs.d.ts b/types/lodash.frompairs.d.ts new file mode 100644 index 0000000000..fb78f168fb --- /dev/null +++ b/types/lodash.frompairs.d.ts @@ -0,0 +1,4 @@ +declare module "lodash.frompairs" { + // eslint-disable-next-line + export default function fromPairs(pairs: List<[string, T]> | null | undefined): Dictionary +} diff --git a/packages/file-pipeline/src/micromatch.d.ts b/types/micromatch.d.ts similarity index 100% rename from packages/file-pipeline/src/micromatch.d.ts rename to types/micromatch.d.ts diff --git a/packages/server/src/parse-gitignore.d.ts b/types/parse-gitignore.d.ts similarity index 100% rename from packages/server/src/parse-gitignore.d.ts rename to types/parse-gitignore.d.ts diff --git a/packages/file-pipeline/src/vinyl-file.d.ts b/types/vinyl-file.d.ts similarity index 90% rename from packages/file-pipeline/src/vinyl-file.d.ts rename to types/vinyl-file.d.ts index a4d6e1ce40..8115ce6542 100644 --- a/packages/file-pipeline/src/vinyl-file.d.ts +++ b/types/vinyl-file.d.ts @@ -1,6 +1,6 @@ -import File from "vinyl" - declare module "vinyl-file" { + import File from "vinyl" + type Options = { cwd?: string base?: string diff --git a/yarn.lock b/yarn.lock index 01a0949b7e..ce9decfa90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,12 +9,46 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== -"@babel/core@7.12.10", "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.12.3", "@babel/core@^7.4.4", "@babel/core@^7.7.5": +"@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.5": + version "7.13.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.6.tgz#11972d07db4c2317afdbf41d6feb3a730301ef4e" + integrity sha512-VhgqKOWYVm7lQXlvbJnWOzwfAQATd2nV52koT0HZ/LdDH0m4DUDwkKYsH+IwpXb+bKPyBJzawA4I6nBKqZcpQw== + +"@babel/core@7.13.1", "@babel/core@^7.7.7": + version "7.13.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.1.tgz#7ddd027176debe40f13bb88bac0c21218c5b1ecf" + integrity sha512-FzeKfFBG2rmFtGiiMdXZPFt/5R5DXubVi82uYhjGX4Msf+pgYQMCFIqFXZWs5vbIYbf14VeBIgdGI03CDOOM1w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.0" + "@babel/parser" "^7.13.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + lodash "^4.17.19" + semver "7.0.0" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.12.3", "@babel/core@^7.7.5": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== @@ -44,6 +78,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" + integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw== + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" @@ -51,6 +94,13 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -59,7 +109,15 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.12.5": +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-compilation-targets@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== @@ -69,6 +127,16 @@ browserslist "^4.14.5" semver "^5.5.0" +"@babel/helper-compilation-targets@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1" + integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q== + dependencies: + "@babel/compat-data" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "7.0.0" + "@babel/helper-create-class-features-plugin@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" @@ -80,6 +148,17 @@ "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" +"@babel/helper-create-class-features-plugin@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.0.tgz#28d04ad9cfbd1ed1d8b988c9ea7b945263365846" + integrity sha512-twwzhthM4/+6o9766AW2ZBHpIHPSGrPGk1+WfHiu13u/lBnggXGNYCpeAyVfNwGDKfkhEDp+WOD/xafoJ2iLjA== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-create-regexp-features-plugin@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" @@ -88,6 +167,14 @@ "@babel/helper-annotate-as-pure" "^7.10.4" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" + integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + regexpu-core "^4.7.1" + "@babel/helper-define-map@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" @@ -97,15 +184,15 @@ "@babel/types" "^7.10.5" lodash "^4.17.19" -"@babel/helper-define-polyfill-provider@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.0.3.tgz#df9da66285b884ce66417abdd0b6ca91198149bd" - integrity sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ== +"@babel/helper-define-polyfill-provider@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.4.tgz#b618b087c6a0328127e5d53576df818bcee2b15f" + integrity sha512-K5V2GaQZ1gpB+FTXM4AFVG2p1zzhm67n9wrQCJYNzvuLzQybhJyftW7qeDd2uUxPDNdl5Rkon1rOAeUeNDZ28Q== dependencies: - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/traverse" "^7.11.5" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" @@ -118,6 +205,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" + integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== + dependencies: + "@babel/types" "^7.13.0" + "@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" @@ -127,6 +221,15 @@ "@babel/template" "^7.12.7" "@babel/types" "^7.12.11" +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/helper-get-function-arity@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" @@ -134,6 +237,13 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-hoist-variables@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" @@ -141,6 +251,14 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-hoist-variables@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" + integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== + dependencies: + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" @@ -148,6 +266,13 @@ dependencies: "@babel/types" "^7.12.7" +"@babel/helper-member-expression-to-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" + integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== + dependencies: + "@babel/types" "^7.13.0" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" @@ -177,6 +302,21 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.12.13", "@babel/helper-module-transforms@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" + integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" @@ -184,11 +324,23 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== +"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + "@babel/helper-remap-async-to-generator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" @@ -198,6 +350,15 @@ "@babel/helper-wrap-function" "^7.10.4" "@babel/types" "^7.12.1" +"@babel/helper-remap-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" + integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helper-replace-supers@^7.12.1": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" @@ -208,6 +369,16 @@ "@babel/traverse" "^7.12.10" "@babel/types" "^7.12.11" +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" + integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" @@ -215,6 +386,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -229,6 +407,13 @@ dependencies: "@babel/types" "^7.12.11" +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" @@ -239,6 +424,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + "@babel/helper-wrap-function@^7.10.4": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" @@ -249,6 +439,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-wrap-function@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" + integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helpers@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" @@ -258,6 +458,15 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" +"@babel/helpers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0" + integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -267,11 +476,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.11.5", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0": +"@babel/highlight@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" + integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== +"@babel/parser@^7.12.13", "@babel/parser@^7.13.0": + version "7.13.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.4.tgz#340211b0da94a351a6f10e63671fa727333d13ab" + integrity sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA== + "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": version "7.12.15" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.15.tgz#2b20de7f0b4b332d9b119dd9c33409c538b8aacf" @@ -286,7 +509,24 @@ "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.4.4": +"@babel/plugin-proposal-async-generator-functions@^7.13.5": + version "7.13.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.5.tgz#69e3fbb9958949b09036e27b26eba1aafa1ba3db" + integrity sha512-8cErJEDzhZgNKzYyjCKsHuyPqtWxG8gc9h4OFSUDJu0vCAOsObPU2LcECnW0kJwh/b+uUz46lObVzIXw0fzAbA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.13.0", "@babel/plugin-proposal-class-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" + integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== @@ -302,6 +542,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/plugin-proposal-dynamic-import@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.17.tgz#e0ebd8db65acc37eac518fa17bead2174e224512" + integrity sha512-ZNGoFZqrnuy9H2izB2jLlnNDAfVPlGl5NhFEiFe4D84ix9GQGygF+CWMGHKuE+bpyS/AOuDQCnkiRNqW2IzS1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-proposal-export-namespace-from@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" @@ -310,6 +558,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" + integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-json-strings@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" @@ -318,6 +574,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-json-strings@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz#ced7888a2db92a3d520a2e35eb421fdb7fcc9b5d" + integrity sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-proposal-logical-assignment-operators@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" @@ -326,6 +590,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-proposal-logical-assignment-operators@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz#575b5d9a08d8299eeb4db6430da6e16e5cf14350" + integrity sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" @@ -334,6 +606,22 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.0.tgz#1a96fdf2c43109cfe5568513c5379015a23f5380" + integrity sha512-UkAvFA/9+lBBL015gjA68NvKiCReNxqFLm3SdNKaM3XXoDisA7tMAIX4PmIwatFoFqMxxT3WyG9sK3MO0Kting== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" + integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" @@ -351,6 +639,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" +"@babel/plugin-proposal-object-rest-spread@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.0.tgz#8f19ad247bb96bd5ad2d4107e6eddfe0a789937b" + integrity sha512-B4qphdSTp0nLsWcuei07JPKeZej4+Hd22MdnulJXQa1nCcGSBlk8FiqenGERaPZ+PuYhz4Li2Wjc8yfJvHgUMw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-proposal-optional-catch-binding@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" @@ -359,6 +656,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" +"@babel/plugin-proposal-optional-catch-binding@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz#4640520afe57728af14b4d1574ba844f263bcae5" + integrity sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-proposal-optional-chaining@^7.1.0", "@babel/plugin-proposal-optional-chaining@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" @@ -368,6 +673,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-optional-chaining@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.0.tgz#75b41ce0d883d19e8fe635fc3f846be3b1664f4d" + integrity sha512-OVRQOZEBP2luZrvEbNSX5FfWDousthhdEoAOpej+Tpe58HFLvqRClT89RauIvBuCDFEip7GW1eT86/5lMy2RNA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-proposal-private-methods@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" @@ -376,6 +690,14 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-private-methods@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" + integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" @@ -384,6 +706,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-unicode-property-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@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" @@ -405,6 +735,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -440,6 +777,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" + integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -489,6 +833,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-top-level-await@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-typescript@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" @@ -496,6 +847,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-arrow-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" @@ -503,6 +861,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-arrow-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" + integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-async-to-generator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" @@ -512,6 +877,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.12.1" +"@babel/plugin-transform-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" + integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/plugin-transform-block-scoped-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" @@ -519,6 +893,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-block-scoped-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-block-scoping@^7.12.11": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" @@ -526,6 +907,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-block-scoping@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" + integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-classes@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" @@ -540,6 +928,19 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" + integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" @@ -547,6 +948,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-computed-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" + integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-destructuring@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" @@ -554,6 +962,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-destructuring@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" + integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" @@ -562,6 +977,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-dotall-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-duplicate-keys@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" @@ -569,6 +992,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" @@ -577,6 +1007,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-exponentiation-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-flow-strip-types@^7.12.1": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.10.tgz#d85e30ecfa68093825773b7b857e5085bbd32c95" @@ -592,6 +1030,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-for-of@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" + integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-function-name@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" @@ -600,6 +1045,14 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" @@ -607,6 +1060,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-member-expression-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" @@ -614,6 +1074,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-member-expression-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-modules-amd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" @@ -623,6 +1090,15 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-amd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" + integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" @@ -633,6 +1109,16 @@ "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.13.0", "@babel/plugin-transform-modules-commonjs@^7.7.5": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.0.tgz#276932693a20d12c9776093fdc99c0d9995e34c6" + integrity sha512-j7397PkIB4lcn25U2dClK6VLC6pr2s3q+wbE8R3vJvY6U1UTBBj0n6F+5v6+Fd/UwfDPAorMOs2TV+T4M+owpQ== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" @@ -644,6 +1130,17 @@ "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz#351937f392c7f07493fc79b2118201d50404a3c5" + integrity sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA== + dependencies: + "@babel/helper-hoist-variables" "^7.12.13" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-umd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" @@ -652,6 +1149,14 @@ "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-modules-umd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" + integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" @@ -659,6 +1164,13 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.1" +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/plugin-transform-new-target@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" @@ -666,6 +1178,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-object-super@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" @@ -674,6 +1193,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.12.1" +"@babel/plugin-transform-object-super@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/plugin-transform-parameters@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" @@ -681,6 +1208,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-parameters@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" + integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-property-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" @@ -688,6 +1222,46 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-display-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" + integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-development@^7.12.12": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" + integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.17" + +"@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" + integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.12.17" + +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-regenerator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" @@ -695,6 +1269,13 @@ dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-regenerator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" + integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== + dependencies: + regenerator-transform "^0.14.2" + "@babel/plugin-transform-reserved-words@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" @@ -702,6 +1283,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-runtime@^7.12.1": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz#af0fded4e846c4b37078e8e5d06deac6cd848562" @@ -718,6 +1306,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-shorthand-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" @@ -726,6 +1321,21 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" +"@babel/plugin-transform-spread@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" + integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" + integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-sticky-regex@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" @@ -740,6 +1350,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-template-literals@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" + integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-transform-typeof-symbol@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b" @@ -747,6 +1364,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-typeof-symbol@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" + integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-typescript@7.12.1", "@babel/plugin-transform-typescript@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" @@ -756,6 +1380,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-typescript" "^7.12.1" +"@babel/plugin-transform-typescript@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" + integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-typescript" "^7.12.13" + "@babel/plugin-transform-unicode-escapes@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" @@ -763,6 +1396,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-unicode-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" @@ -771,7 +1411,89 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1": +"@babel/plugin-transform-unicode-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/preset-env@7.13.5": + version "7.13.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.5.tgz#68b3bbc821a97fcdbf4bd0f6895b83d07f84f33e" + integrity sha512-xUeKBIIcbwxGevyWMSWZOW98W1lp7toITvVsMxSddCEQy932yYiF4fCB+CG3E/MXzFX3KbefgvCqEQ7TDoE6UQ== + dependencies: + "@babel/compat-data" "^7.13.5" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-proposal-async-generator-functions" "^7.13.5" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-dynamic-import" "^7.12.17" + "@babel/plugin-proposal-export-namespace-from" "^7.12.13" + "@babel/plugin-proposal-json-strings" "^7.12.13" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.13" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.0" + "@babel/plugin-proposal-numeric-separator" "^7.12.13" + "@babel/plugin-proposal-object-rest-spread" "^7.13.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.13" + "@babel/plugin-proposal-optional-chaining" "^7.13.0" + "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.13.0" + "@babel/plugin-transform-async-to-generator" "^7.13.0" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-classes" "^7.13.0" + "@babel/plugin-transform-computed-properties" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.0" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.13.0" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.13.0" + "@babel/plugin-transform-modules-commonjs" "^7.13.0" + "@babel/plugin-transform-modules-systemjs" "^7.12.13" + "@babel/plugin-transform-modules-umd" "^7.13.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.12.13" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.13.0" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.13.0" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@babel/plugin-transform-unicode-escapes" "^7.12.13" + "@babel/plugin-transform-unicode-regex" "^7.12.13" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.13.0" + babel-plugin-polyfill-corejs2 "^0.1.4" + babel-plugin-polyfill-corejs3 "^0.1.3" + babel-plugin-polyfill-regenerator "^0.1.2" + core-js-compat "^3.9.0" + semver "7.0.0" + +"@babel/preset-env@^7.12.1": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== @@ -862,6 +1584,26 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" + integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-react-display-name" "^7.12.13" + "@babel/plugin-transform-react-jsx" "^7.12.13" + "@babel/plugin-transform-react-jsx-development" "^7.12.12" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" + integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" + "@babel/preset-typescript@^7.1.0": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" @@ -890,13 +1632,20 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.12.5", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@7.12.5", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.5.5", "@babel/runtime@^7.7.7": + version "7.13.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.7.tgz#d494e39d198ee9ca04f4dcb76d25d9d7a1dc961a" + integrity sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3", "@babel/template@^7.4.0": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" @@ -906,7 +1655,16 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0": +"@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== @@ -921,6 +1679,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" + integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.0" + "@babel/types" "^7.13.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/types@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -939,7 +1712,7 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@babel/types@^7.12.13", "@babel/types@^7.12.17": +"@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== @@ -962,6 +1735,11 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@changesets/types@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@changesets/types/-/types-0.4.0.tgz#3413badb2c3904357a36268cb9f8c7e0afc3a804" + integrity sha512-TclHHKDVYQ8rJGZgVeWiF7c91yWzTTWdPagltgutelGu/Psup5PQlUq6svx7S8suj+jXcaE34yEEsfIvzXXB2Q== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1133,13 +1911,6 @@ "@hapi/boom" "9.x.x" "@hapi/hoek" "9.x.x" -"@hapi/address@^4.0.1": - version "4.1.0" - resolved "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz#d60c5c0d930e77456fdcde2598e77302e2955e1d" - integrity sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/boom@9.x.x": version "9.1.1" resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.1.tgz#89e6f0e01637c2a4228da0d113e8157c93677b04" @@ -1147,32 +1918,11 @@ dependencies: "@hapi/hoek" "9.x.x" -"@hapi/formula@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz#edade0619ed58c8e4f164f233cda70211e787128" - integrity sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A== - "@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0": version "9.1.1" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw== -"@hapi/joi@^17.1.1": - version "17.1.1" - resolved "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz#9cc8d7e2c2213d1e46708c6260184b447c661350" - integrity sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg== - dependencies: - "@hapi/address" "^4.0.1" - "@hapi/formula" "^2.0.0" - "@hapi/hoek" "^9.0.0" - "@hapi/pinpoint" "^2.0.0" - "@hapi/topo" "^5.0.0" - -"@hapi/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.0.tgz#805b40d4dbec04fc116a73089494e00f073de8df" - integrity sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw== - "@hapi/topo@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" @@ -1205,17 +1955,6 @@ chalk "^2.0.1" slash "^2.0.0" -"@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/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" - slash "^3.0.0" - "@jest/console@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" @@ -1228,40 +1967,6 @@ jest-util "^26.6.2" slash "^3.0.0" -"@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.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.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" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - "@jest/core@^26.6.3": version "26.6.3" resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" @@ -1306,15 +2011,6 @@ "@jest/types" "^24.9.0" jest-mock "^24.9.0" -"@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.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - "@jest/environment@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" @@ -1334,7 +2030,7 @@ jest-message-util "^24.9.0" jest-mock "^24.9.0" -"@jest/fake-timers@^25.1.0", "@jest/fake-timers@^25.5.0": +"@jest/fake-timers@^25.1.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== @@ -1357,15 +2053,6 @@ jest-mock "^26.6.2" jest-util "^26.6.2" -"@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/globals@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" @@ -1375,38 +2062,6 @@ "@jest/types" "^26.6.2" expect "^26.6.2" -"@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.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.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.1.3" - optionalDependencies: - node-notifier "^6.0.0" - "@jest/reporters@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" @@ -1448,15 +2103,6 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@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.4" - source-map "^0.6.0" - "@jest/source-map@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" @@ -1475,16 +2121,6 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@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.5.0" - "@jest/types" "^25.5.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - "@jest/test-result@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" @@ -1495,17 +2131,6 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@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.5.0" - graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - "@jest/test-sequencer@^26.6.3": version "26.6.3" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" @@ -1539,28 +2164,6 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@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.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.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" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - "@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" @@ -2289,13 +2892,56 @@ 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== +"@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" + +"@manypkg/cli@0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@manypkg/cli/-/cli-0.17.0.tgz#d5b91a150acca808a53bcc90046712a6efb44f5d" + integrity sha512-GTVvO73tAwkHtBqKS5DfIqT54BLCJxE9FMdS3nZTMv48piR8Ykd/gHAJedMiMDENGavZd06C8ySo4HLtyil5jA== + dependencies: + "@babel/runtime" "^7.5.5" + "@manypkg/get-packages" "^1.1.1" + chalk "^2.4.2" + detect-indent "^6.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + get-workspaces "^0.6.0" + meow "^6.0.0" + normalize-path "^3.0.0" + p-limit "^2.2.1" + package-json "^6.5.0" + parse-github-url "^1.0.2" + sembear "^0.5.0" + semver "^6.3.0" + spawndamnit "^2.0.0" + validate-npm-package-name "^3.0.0" + +"@manypkg/find-root@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" + integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== + dependencies: + "@babel/runtime" "^7.5.5" + "@types/node" "^12.7.1" + find-up "^4.1.0" + fs-extra "^8.1.0" + +"@manypkg/get-packages@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@manypkg/get-packages/-/get-packages-1.1.1.tgz#7c7e72d0061ab2e61d2ce4da58ce91290a60ac8d" + integrity sha512-J6VClfQSVgR6958eIDTGjfdCrELy1eT+SHeoSMomnvRQVktZMnEA5edIr5ovRFNw5y+Bk/jyoevPzGYod96mhw== dependencies: - npmlog "^4.1.2" - write-file-atomic "^2.3.0" + "@babel/runtime" "^7.5.5" + "@manypkg/find-root" "^1.1.0" + fs-extra "^8.1.0" + globby "^11.0.0" + read-yaml-file "^1.1.0" "@mdn/browser-compat-data@^2.0.5": version "2.0.7" @@ -2655,6 +3301,66 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71" integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA== +"@preconstruct/cli@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@preconstruct/cli/-/cli-2.0.5.tgz#bd952ecae0fbe5cba37040d7f05c41cab3ac4250" + integrity sha512-yWB0GwqZi9tTpSmsEkcVYxnieCT89L9938XR7s9ffjKf59GFMwy8O0G8wMA8Rm6jNjf3ob5zuVWvCaoHppUS8Q== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/core" "^7.7.7" + "@babel/helper-module-imports" "^7.10.4" + "@babel/runtime" "^7.7.7" + "@preconstruct/hook" "^0.4.0" + "@rollup/plugin-alias" "^3.1.1" + "@rollup/plugin-commonjs" "^15.0.0" + "@rollup/plugin-json" "^4.1.0" + "@rollup/plugin-node-resolve" "^9.0.0" + "@rollup/plugin-replace" "^2.4.1" + builtin-modules "^3.1.0" + chalk "^4.1.0" + dataloader "^2.0.0" + detect-indent "^6.0.0" + enquirer "^2.3.6" + estree-walker "^2.0.1" + fast-deep-equal "^2.0.1" + fast-glob "^3.2.4" + fs-extra "^9.0.1" + is-ci "^2.0.0" + is-reference "^1.2.1" + jest-worker "^26.3.0" + magic-string "^0.25.7" + meow "^7.1.0" + ms "^2.1.2" + normalize-path "^3.0.0" + npm-packlist "^2.1.2" + p-limit "^3.0.2" + parse-glob "^3.0.4" + parse-json "^5.1.0" + quick-lru "^5.1.1" + resolve "^1.17.0" + resolve-from "^5.0.0" + rollup "^2.32.0" + semver "^7.3.4" + terser "^5.2.1" + v8-compile-cache "^2.1.1" + +"@preconstruct/hook@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@preconstruct/hook/-/hook-0.4.0.tgz#c15dfacfc6e60652a6837209c2fd87f0240b099e" + integrity sha512-a7mrlPTM3tAFJyz43qb4pPVpUx8j8TzZBFsNFqcKcE/sEakNXRlQAuCT4RGZRf9dQiiUnBahzSIWawU4rENl+Q== + dependencies: + "@babel/core" "^7.7.7" + "@babel/plugin-transform-modules-commonjs" "^7.7.5" + pirates "^4.0.1" + source-map-support "^0.5.16" + +"@preconstruct/next@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@preconstruct/next/-/next-2.0.0.tgz#050042c13dde0c671bee0681acb49c31e80ab415" + integrity sha512-jpNffjgVKSilBCi3tNs2MEqqGdQBOo5n97B9OCfMDqO9SoiH7MyCmQ+tHCYQvY5gmD6Bf3Fas79N7Rzj6vJBsQ== + dependencies: + resolve "^1.17.0" + "@prisma/client@2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@prisma/client/-/client-2.17.0.tgz#e38462796c2e824504763416f5e3a7219d70652d" @@ -2779,28 +3485,27 @@ tmp "0.2.1" url-parse "^1.4.7" -"@rollup/plugin-babel@^5.1.0": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.2.2.tgz#e5623a01dd8e37e004ba87f2de218c611727d9b2" - integrity sha512-MjmH7GvFT4TW8xFdIeFS3wqIX646y5tACdxkTO+khbHvS3ZcVJL6vkAHLw2wqPmkhwCfWHoNsp15VYNwW6JEJA== +"@rollup/plugin-alias@^3.1.1": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.2.tgz#c585b05be4a7782d269c69d13def56f44e417772" + integrity sha512-wzDnQ6v7CcoRzS0qVwFPrFdYA4Qlr+ookA217Y2Z3DPZE1R8jrFNM3jvGgOf6o6DMjbnQIn5lCIJgHPe1Bt3uw== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" + slash "^3.0.0" -"@rollup/plugin-commonjs@^11.0.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" - integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== +"@rollup/plugin-commonjs@^15.0.0": + version "15.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz#1e7d076c4f1b2abf7e65248570e555defc37c238" + integrity sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ== dependencies: - "@rollup/pluginutils" "^3.0.8" + "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" - estree-walker "^1.0.1" - glob "^7.1.2" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" -"@rollup/plugin-json@^4.0.0": +"@rollup/plugin-json@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== @@ -2819,10 +3524,10 @@ is-module "^1.0.0" resolve "^1.17.0" -"@rollup/plugin-replace@^2.2.1": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" - integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== +"@rollup/plugin-replace@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz#c411b5ab72809fb1bfc8b487d8d02eef661460d3" + integrity sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ== dependencies: "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" @@ -2835,7 +3540,7 @@ estree-walker "^2.0.1" picomatch "^2.2.2" -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -2974,7 +3679,7 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react-hooks@4.0.1", "@testing-library/react-hooks@^4.0.1": +"@testing-library/react-hooks@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-4.0.1.tgz#bb678abb7c766c192da74be50148ad8337a5503f" integrity sha512-DufI8Q2GOM7W2yFEEfz85VNVNaHZL0tPZyBT6ytV7HK+1A4frL1ty+W5NBE0u0K3EFV/Pg5O28HGNEtp9D5EyA== @@ -2983,7 +3688,7 @@ "@types/react" ">=16.9.0" "@types/react-test-renderer" ">=16.9.0" -"@testing-library/react@11.2.3", "@testing-library/react@^11.2.3": +"@testing-library/react@^11.2.3": version "11.2.3" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.3.tgz#9971ede1c8465a231d7982eeca3c39fc362d5443" integrity sha512-BirBUGPkTW28ULuCwIbYo0y2+0aavHczBT6N9r3LrsswEW3pg25l1wgoE7I8QBIy1upXWkwKpYdWY7NYYP0Bxw== @@ -3021,7 +3726,15 @@ resolved "https://registry.yarnpkg.com/@types/b64-lite/-/b64-lite-1.3.0.tgz#0c0351b7d91e0c37c9376a2882b3e794fc69c5b3" integrity sha512-xrTKDOdOCLtdWAn+XnFWVoVNdump98dtZEpzQcw+BCtMdrGNVdbg6i6D1b9IU7HWzQm3ypi7hoLuXhrLiJn3bw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12", "@types/babel__core@^7.1.7": +"@types/babel-plugin-tester@^9.0.0": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@types/babel-plugin-tester/-/babel-plugin-tester-9.0.1.tgz#5f1dc3b9da821b119f74544cda308d1e040c4cba" + integrity sha512-RGZzADCDXd9MIxQzOM2I6guMFRtZw+XwVx+vmPliPAvGeh228ZYA3hoTEF9u3jNR2Nf/gyb55HI3D9pMl3m1LA== + dependencies: + "@types/babel__core" "*" + "@types/prettier" "*" + +"@types/babel__core@*", "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12", "@types/babel__core@^7.1.7": version "7.1.12" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== @@ -3141,11 +3854,6 @@ resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.0.5.tgz#95a3a1c3d9603eba80fe67ff56da1ba275ef2eda" integrity sha512-k4ef69sS4sIqAPW9GoBnN+URAON2LeL1H0duQvL4RgdEBna19/WattYSA1qYqvbVEDRTSWzOw56tCLhC/m/IOw== -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@types/estree@*": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" @@ -3290,7 +3998,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/jest@26.0.20", "@types/jest@^26.0.20": +"@types/jest@^26.0.20": version "26.0.20" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== @@ -3298,14 +4006,6 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/jest@^25.2.1": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - "@types/jscodeshift@0.7.2": version "0.7.2" resolved "https://registry.yarnpkg.com/@types/jscodeshift/-/jscodeshift-0.7.2.tgz#5ce43f545fa17e07c1fe614ccfb024f78e687be5" @@ -3409,11 +4109,6 @@ dependencies: "@types/node" "*" -"@types/module-alias@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/module-alias/-/module-alias-2.0.0.tgz#882668f8b8cdbda44812c3b592c590909e18849e" - integrity sha512-e3sW4oEH0qS1QxSfX7PT6xIi5qk/YSMsrB9Lq8EtkhQBZB+bKyfkP+jpLJRySanvBhAQPSv2PEBe81M8Iy/7yg== - "@types/node-fetch@2.5.8": version "2.5.8" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.8.tgz#e199c835d234c7eb0846f6618012e558544ee2fb" @@ -3432,6 +4127,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== +"@types/node@^12.7.1": + version "12.20.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.4.tgz#73687043dd00fcb6962c60fbf499553a24d6bdf2" + integrity sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ== + "@types/nodemailer@*": version "6.4.0" resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.0.tgz#d8c039be3ed685c4719a026455555be82c124b74" @@ -3514,16 +4214,16 @@ resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.29.tgz#6ffa33ed1fc8813c469b859681d09707eb40d03c" integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== +"@types/prettier@*": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.1.tgz#374e31645d58cb18a07b3ecd8e9dede4deb2cccd" + integrity sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw== + "@types/prettier@2.1.6", "@types/prettier@^2.0.0": version "2.1.6" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.6.tgz#f4b1efa784e8db479cdb8b14403e2144b1e9ff03" integrity sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA== -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== - "@types/preview-email@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/preview-email/-/preview-email-2.0.0.tgz#de5d3a132108e8c4a3de3b4f1918b8ed73f546b4" @@ -3595,13 +4295,6 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@16.14.1": - version "16.14.1" - resolved "https://registry.npmjs.org/@types/react/-/react-16.14.1.tgz#da2ecb638385614a5573e16e4aa7daf936dbead5" - integrity sha512-32mxrbX62m5b+lMTSzucFKNIr8Eq4T6T3rDVxYzKqyRwyfnPcwZppWW0YXUlPNPUE+r6phBtHXYRgr8ad/Zl9A== - dependencies: - "@types/prop-types" "*" - "@types/readable-stream@2.3.9": version "2.3.9" resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.9.tgz#40a8349e6ace3afd2dd1b6d8e9b02945de4566a9" @@ -3651,6 +4344,11 @@ dependencies: "@types/node" "*" +"@types/semver@^6.0.1": + version "6.2.2" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.2.tgz#5c27df09ca39e3c9beb4fae6b95f4d71426df0a9" + integrity sha512-RxAwYt4rGwK5GyoRwuP0jT6ZHAVTdz2EqgsHmX0PYNjGsko+OeT4WFXXTs/lM3teJUJodM+SNtAL5/pXIJ61IQ== + "@types/semver@^7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.4.tgz#43d7168fec6fa0988bb1a513a697b29296721afb" @@ -3766,29 +4464,6 @@ resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a" integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== -"@typescript-eslint/eslint-plugin@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.12.0.tgz#00d1b23b40b58031e6d7c04a5bc6c1a30a2e834a" - integrity sha512-wHKj6q8s70sO5i39H2g1gtpCXCvjVszzj6FFygneNFyIAxRvNSVz9GML7XpqrB9t7hNutXw+MHnLN/Ih6uyB8Q== - dependencies: - "@typescript-eslint/experimental-utils" "4.12.0" - "@typescript-eslint/scope-manager" "4.12.0" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/eslint-plugin@^2.12.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== - dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - "@typescript-eslint/eslint-plugin@~4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.0.tgz#92db8e7c357ed7d69632d6843ca70b71be3a721d" @@ -3803,28 +4478,6 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/experimental-utils@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.12.0.tgz#372838e76db76c9a56959217b768a19f7129546b" - integrity sha512-MpXZXUAvHt99c9ScXijx7i061o5HEjXltO+sbYfZAAHxv3XankQkPaNi5myy0Yh0Tyea3Hdq1pi7Vsh0GJb0fA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.12.0" - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/typescript-estree" "4.12.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - "@typescript-eslint/experimental-utils@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.0.tgz#5aa7b006736634f588a69ee343ca959cd09988df" @@ -3837,26 +4490,6 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.12.0.tgz#e1cf30436e4f916c31fcc962158917bd9e9d460a" - integrity sha512-9XxVADAo9vlfjfoxnjboBTxYOiNY93/QuvcPgsiKvHxW6tOZx1W4TvkIQ2jB3k5M0pbFP5FlXihLK49TjZXhuQ== - dependencies: - "@typescript-eslint/scope-manager" "4.12.0" - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/typescript-estree" "4.12.0" - debug "^4.1.1" - -"@typescript-eslint/parser@^2.12.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" - "@typescript-eslint/parser@~4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.14.0.tgz#62d4cd2079d5c06683e9bfb200c758f292c4dee7" @@ -3867,14 +4500,6 @@ "@typescript-eslint/typescript-estree" "4.14.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.12.0.tgz#beeb8beca895a07b10c593185a5612f1085ef279" - integrity sha512-QVf9oCSVLte/8jvOsxmgBdOaoe2J0wtEmBr13Yz0rkBNkl5D8bfnf6G4Vhox9qqMIoG7QQoVwd2eG9DM/ge4Qg== - dependencies: - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/visitor-keys" "4.12.0" - "@typescript-eslint/scope-manager@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.14.0.tgz#55a4743095d684e1f7b7180c4bac2a0a3727f517" @@ -3883,43 +4508,11 @@ "@typescript-eslint/types" "4.14.0" "@typescript-eslint/visitor-keys" "4.14.0" -"@typescript-eslint/types@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.12.0.tgz#fb891fe7ccc9ea8b2bbd2780e36da45d0dc055e5" - integrity sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g== - "@typescript-eslint/types@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.0.tgz#d8a8202d9b58831d6fd9cee2ba12f8a5a5dd44b6" integrity sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A== -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz#3963418c850f564bdab3882ae23795d115d6d32e" - integrity sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w== - dependencies: - "@typescript-eslint/types" "4.12.0" - "@typescript-eslint/visitor-keys" "4.12.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - "@typescript-eslint/typescript-estree@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz#4bcd67486e9acafc3d0c982b23a9ab8ac8911ed7" @@ -3934,14 +4527,6 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz#a470a79be6958075fa91c725371a83baf428a67a" - integrity sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw== - dependencies: - "@typescript-eslint/types" "4.12.0" - eslint-visitor-keys "^2.0.0" - "@typescript-eslint/visitor-keys@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz#b1090d9d2955b044b2ea2904a22496849acbdf54" @@ -4201,7 +4786,7 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-globals@^4.3.0, acorn-globals@^4.3.2: +acorn-globals@^4.3.0: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== @@ -4242,7 +4827,7 @@ acorn@^6.0.1, acorn@^6.0.4, acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -4372,6 +4957,13 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-split@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ansi-split/-/ansi-split-1.0.1.tgz#3cab03754ab6f1d64d4ad13cd10f22fc36db4a45" + integrity sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg== + dependencies: + ansi-regex "^3.0.0" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -4406,6 +4998,14 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -4516,12 +5116,19 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.1.0: +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -4599,6 +5206,11 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -4710,7 +5322,7 @@ astral-regex@^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: +async-each@^1.0.0, async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== @@ -4752,11 +5364,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -asyncro@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" - integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== - at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" @@ -4792,13 +5399,6 @@ axe-core@^4.0.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf" integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ== -axios@^0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - axios@^0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" @@ -4823,7 +5423,7 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-eslint@10.1.0, babel-eslint@10.x, babel-eslint@^10.0.3, babel-eslint@^10.1.0, babel-eslint@~10.1.0: +babel-eslint@^10.1.0, babel-eslint@~10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== @@ -4849,26 +5449,12 @@ babel-jest@26.6.3, babel-jest@^26.6.3: graceful-fs "^4.2.4" slash "^3.0.0" -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.5.1" - "@jest/types" "^25.5.0" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.5.0" - chalk "^3.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-plugin-annotate-pure-calls@^0.4.0: +babel-plugin-annotate-pure-calls@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz#78aa00fd878c4fcde4d49f3da397fcf5defbcce8" integrity sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA== -babel-plugin-dev-expression@^0.2.1: +babel-plugin-dev-expression@0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.2.tgz#c18de18a06150f9480edd151acbb01d2e65e999b" integrity sha512-y32lfBif+c2FIh5dwGfcc/IfX5aw/Bru7Du7W2n17sJE/GJGAsmIk5DPW/8JOoeKpXW5evJfJOvRq5xkiS6vng== @@ -4901,15 +5487,6 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -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-jest-hoist@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" @@ -4920,21 +5497,38 @@ babel-plugin-jest-hoist@^26.6.2: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== +babel-plugin-macros@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.0.1.tgz#0d412d68f5b3d1b64358f24ab099bd148724e2a9" + integrity sha512-CKt4+Oy9k2wiN+hT1uZzOw7d8zb1anbQpf7KLwaaXRCi/4pzKdFKHf7v5mvoPmjkmxshh7eKZQuRop06r5WP4w== dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" -babel-plugin-polyfill-regenerator@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.0.4.tgz#588641af9a2cb4e299b1400c47672a4a104d2459" - integrity sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA== +babel-plugin-polyfill-corejs2@^0.1.4: + version "0.1.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.8.tgz#54ef37b1c4b2311e515029e8f1f07bbd4d7a5321" + integrity sha512-kB5/xNR9GYDuRmVlL9EGfdKBSUVI/9xAU7PCahA/1hbC2Jbmks9dlBBYjHF9IHMNY2jV/G2lIG7z0tJIW27Rog== + dependencies: + "@babel/compat-data" "^7.13.0" + "@babel/helper-define-polyfill-provider" "^0.1.4" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.1.3: + version "0.1.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.6.tgz#ed1b02fba4885e0892e06094e27865f499758d27" + integrity sha512-IkYhCxPrjrUWigEmkMDXYzM5iblzKCdCD8cZrSAkQOyhhJm26DcG+Mxbx13QT//Olkpkg/AlRdT2L+Ww4Ciphw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.1.4" + core-js-compat "^3.8.1" + +babel-plugin-polyfill-regenerator@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.5.tgz#f42a58fd86a1c97fbe3a2752d80a4a3e017203e1" + integrity sha512-EyhBA6uN94W97lR7ecQVTvH9F5tIIdEw3ZqHuU4zekMlW82k5cXNXniiB7PRxQm06BqAjVr4sDT1mOy4RcphIA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.0.3" + "@babel/helper-define-polyfill-provider" "^0.1.4" babel-plugin-superjson-next@0.2.2: version "0.2.2" @@ -4950,27 +5544,20 @@ babel-plugin-syntax-jsx@6.18.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= -babel-plugin-transform-rename-import@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-rename-import/-/babel-plugin-transform-rename-import-2.3.0.tgz#5d9d645f937b0ca5c26a24b2510a06277b6ffd9b" - integrity sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ== - -babel-preset-current-node-syntax@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" - integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== +babel-plugin-tester@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-tester/-/babel-plugin-tester-10.0.0.tgz#7ece63c50ee76cc4b486f99d6a2a4cf78c836fe5" + integrity sha512-RHlDIUtfdlFvUXHTWroyL3iz9OZnPYgcaDIUrp4ejXrzSClRx3ldJlhaOauvblJqZEPb/7HR32gLZT45lgOXFg== 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-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@types/babel-plugin-tester" "^9.0.0" + lodash.mergewith "^4.6.2" + prettier "^2.0.1" + strip-indent "^3.0.0" + +babel-plugin-transform-inline-environment-variables@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.3.tgz#a3b09883353be8b5e2336e3ff1ef8a5d93f9c489" + integrity sha1-o7CYgzU76LXiM24/8e+KXZP5xIk= babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -4990,14 +5577,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^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-jest@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" @@ -5006,6 +5585,14 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" +babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + babel-walk@3.0.0-canary-5: version "3.0.0-canary-5" resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" @@ -5153,6 +5740,15 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -5186,13 +5782,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -5286,6 +5875,17 @@ browserslist@^4.14.5, browserslist@^4.14.6, browserslist@^4.15.0: escalade "^3.1.1" node-releases "^1.1.67" +browserslist@^4.16.3: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + dependencies: + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -5578,6 +6178,11 @@ caniuse-lite@^1.0.30001179: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001181.tgz#4f0e5184e1ea7c3bf2727e735cbe7ca9a451d673" integrity sha512-m5ul/ARCX50JB8BSNM+oiPmQrR5UmngaQ3QThTTp5HcIIQGP/nPBs82BYLE+tigzm3VW+F4BJIhUyaVtEweelQ== +caniuse-lite@^1.0.30001181: + version "1.0.30001192" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz#b848ebc0ab230cf313d194a4775a30155d50ae40" + integrity sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw== + capitalize@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-1.0.0.tgz#dc802c580aee101929020d2ca14b4ca8a0ae44be" @@ -5621,7 +6226,7 @@ chalk@2.4.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.1, 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== @@ -5744,6 +6349,22 @@ chokidar@3.5.1, chokidar@^3.5.1: optionalDependencies: fsevents "~2.1.2" +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -5886,12 +6507,12 @@ cli-progress@^3.4.0: colors "^1.1.2" string-width "^4.2.0" -cli-spinners@^1.1.0, cli-spinners@^1.3.1: +cli-spinners@^1.1.0: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== -cli-spinners@^2.2.0, cli-spinners@^2.3.0, cli-spinners@^2.5.0: +cli-spinners@^2.3.0, cli-spinners@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== @@ -5986,11 +6607,6 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -6205,11 +6821,6 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.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.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -6250,20 +6861,20 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -concurrently@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.3.0.tgz#7500de6410d043c912b2da27de3202cb489b1e7b" - integrity sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ== +concurrently@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.0.0.tgz#c1a876dd99390979c71f8c6fe6796882f3a13199" + integrity sha512-Ik9Igqnef2ONLjN2o/OVx1Ow5tymVvvEwQeYCQdD/oV+CN9oWhxLk7ibcBdOtv0UzBqHCEKRwbKceYoTK8t3fQ== dependencies: - chalk "^2.4.2" - date-fns "^2.0.1" - lodash "^4.17.15" - read-pkg "^4.0.1" - rxjs "^6.5.2" + chalk "^4.1.0" + date-fns "^2.16.1" + lodash "^4.17.20" + read-pkg "^5.2.0" + rxjs "^6.6.3" spawn-command "^0.0.2-1" - supports-color "^6.1.0" + supports-color "^8.1.0" tree-kill "^1.2.2" - yargs "^13.3.0" + yargs "^16.2.0" config-chain@^1.1.11: version "1.1.12" @@ -6297,7 +6908,7 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.9: +confusing-browser-globals@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== @@ -6446,7 +7057,7 @@ cookie-session@^1.4.0: debug "2.6.9" on-headers "~1.0.2" -cookie@^0.4.1: +cookie@0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== @@ -6484,11 +7095,24 @@ core-js-compat@^3.8.0: browserslist "^4.15.0" semver "7.0.0" +core-js-compat@^3.8.1, core-js-compat@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56" + integrity sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ== + dependencies: + browserslist "^4.16.3" + semver "7.0.0" + core-js-pure@^3.0.0: version "3.8.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.1.tgz#23f84048f366fdfcf52d3fd1c68fec349177d119" integrity sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g== +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -6511,17 +7135,6 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -6533,38 +7146,22 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cp-file@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" - integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== - dependencies: - graceful-fs "^4.1.2" - make-dir "^3.0.0" - nested-error-stacks "^2.0.0" - p-event "^4.1.0" - -cpy-cli@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/cpy-cli/-/cpy-cli-3.1.1.tgz#2adb06544102c948ce098e522d5b8ddcf4f7c0b4" - integrity sha512-HCpNdBkQy3rw+uARLuIf0YurqsMXYzBa9ihhSAuxYJcNIrqrSq3BstPfr0cQN38AdMrQiO9Dp4hYy7GtGJsLPg== - dependencies: - cpy "^8.0.0" - meow "^6.1.1" - -cpy@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.1.tgz#066ed4c6eaeed9577df96dae4db9438c1a90df62" - integrity sha512-vqHT+9o67sMwJ5hUd/BAOYeemkU+MuFRsK2c36Xc3eefQpAsp1kAsyDxEDcc5JS1+y9l/XHPrIsVTcyGGmkUUQ== +cpx@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + integrity sha1-GFvgGFEdhycN7czCkxceN2VauI8= dependencies: - arrify "^2.0.1" - cp-file "^7.0.0" - globby "^9.2.0" - has-glob "^1.0.0" - junk "^3.1.0" - nested-error-stacks "^2.1.0" - p-all "^2.1.0" - p-filter "^2.1.0" - p-map "^3.0.0" + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" crc32-stream@^3.0.1: version "3.0.1" @@ -6648,6 +7245,15 @@ cross-spawn@^4.0.2: lru-cache "^4.0.1" which "^1.2.9" +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -6868,7 +7474,7 @@ cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssom@^0.4.1, cssom@^0.4.4: +cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== @@ -6880,7 +7486,7 @@ cssstyle@^1.1.1: dependencies: cssom "0.3.x" -cssstyle@^2.0.0, cssstyle@^2.2.0: +cssstyle@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== @@ -7002,12 +7608,17 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +dataloader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" + integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== + date-fns@^1.27.2: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -date-fns@^2.0.1, date-fns@^2.16.1: +date-fns@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== @@ -7029,7 +7640,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: 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== @@ -7043,13 +7654,6 @@ debug@4, debug@4.3.1, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, de dependencies: ms "2.1.2" -debug@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - debug@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -7287,11 +7891,6 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" -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-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" @@ -7537,6 +8136,11 @@ electron-to-chromium@^1.3.634: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== +electron-to-chromium@^1.3.649: + version "1.3.675" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.675.tgz#7ad29f98d7b48da581554eb28bb9a71fd5fd4956" + integrity sha512-GEQw+6dNWjueXGkGfjgm7dAMtXfEqrfDG3uWcZdeaD4cZ3dKYdPRQVruVXQRXtPLtOr5GNVVlNLRMChOZ611pQ== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -7618,15 +8222,7 @@ enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.3.2: - version "5.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.4.1.tgz#c89b0c34f17f931902ef2913a125d4b825b49b6f" - integrity sha512-4GbyIMzYktTFoRSmkbgZ1LU+RXwf4AQ8Z+rSuuh1dC8plp0PPeaWvx6+G4hh4KnUJ48VoxKbNyA1QQQIUpXjYA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@2.3.6, enquirer@^2.3.4, enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@2.3.6, enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -7753,7 +8349,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.11.0, escodegen@^1.11.1, escodegen@^1.14.1: +escodegen@^1.11.0, escodegen@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -7773,21 +8369,7 @@ eslint-ast-utils@^1.1.0: lodash.get "^4.4.2" lodash.zip "^4.2.0" -eslint-config-prettier@^6.0.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" - integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== - dependencies: - get-stdin "^6.0.0" - -eslint-config-react-app@5.2.1, eslint-config-react-app@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" - integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== - dependencies: - confusing-browser-globals "^1.0.9" - -eslint-config-react-app@6.0.0, eslint-config-react-app@~6.0.0: +eslint-config-react-app@~6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== @@ -7810,14 +8392,7 @@ eslint-module-utils@^2.6.0: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-cypress@2.11.1: - version "2.11.1" - resolved "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.1.tgz#a945e2774b88211e2c706a059d431e262b5c2862" - integrity sha512-MxMYoReSO5+IZMGgpBZHHSx64zYPSPTpXDwsgW7ChlJTF/sA+obqRbHplxD6sBStE+g4Mi0LCLkG4t9liu//mQ== - dependencies: - globals "^11.12.0" - -eslint-plugin-cypress@2.11.2, eslint-plugin-cypress@~2.11.2: +eslint-plugin-cypress@~2.11.2: version "2.11.2" resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz#a8f3fe7ec840f55e4cea37671f93293e6c3e76a0" integrity sha512-1SergF1sGbVhsf7MYfOLiBhdOg6wqyeV9pXUAIDIffYTGMN3dTBQS9nFAzhLsHhO+Bn0GaVM1Ecm71XUidQ7VA== @@ -7837,7 +8412,7 @@ eslint-plugin-es@4.1.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-flowtype@5.2.0, eslint-plugin-flowtype@~5.2.0: +eslint-plugin-flowtype@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.0.tgz#a4bef5dc18f9b2bdb41569a4ab05d73805a3d261" integrity sha512-z7ULdTxuhlRJcEe1MVljePXricuPOrsWfScRXFhNzVD5dmTHWjIF57AxD0e7AbEoLSbjSsaA5S+hCg43WvpXJQ== @@ -7845,14 +8420,7 @@ eslint-plugin-flowtype@5.2.0, eslint-plugin-flowtype@~5.2.0: lodash "^4.17.15" string-natural-compare "^3.0.1" -eslint-plugin-flowtype@^3.13.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" - integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== - dependencies: - lodash "^4.17.15" - -eslint-plugin-import@2.22.1, eslint-plugin-import@^2.18.2, eslint-plugin-import@~2.22.1: +eslint-plugin-import@~2.22.1: version "2.22.1" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== @@ -7871,7 +8439,7 @@ eslint-plugin-import@2.22.1, eslint-plugin-import@^2.18.2, eslint-plugin-import@ resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-jsx-a11y@6.4.1, eslint-plugin-jsx-a11y@^6.2.3, eslint-plugin-jsx-a11y@~6.4.1: +eslint-plugin-jsx-a11y@~6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== @@ -7895,41 +8463,12 @@ eslint-plugin-prettier@3.3.1: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-prettier@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz#61e295349a65688ffac0b7808ef0a8244bdd8d40" - integrity sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@4.2.0, eslint-plugin-react-hooks@~4.2.0: +eslint-plugin-react-hooks@~4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== -eslint-plugin-react-hooks@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" - integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== - -eslint-plugin-react@7.21.5: - version "7.21.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" - integrity sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g== - dependencies: - array-includes "^3.1.1" - array.prototype.flatmap "^1.2.3" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1 || ^3.0.0" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.18.1" - string.prototype.matchall "^4.0.2" - -eslint-plugin-react@7.22.0, eslint-plugin-react@^7.14.3, eslint-plugin-react@~7.22.0: +eslint-plugin-react@~7.22.0: version "7.22.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== @@ -7996,13 +8535,6 @@ eslint-template-visitor@^2.2.2: esquery "^1.3.1" multimap "^1.1.0" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -8063,49 +8595,6 @@ eslint@7.18.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@^6.1.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - eslint@^7.3.0: version "7.17.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" @@ -8164,15 +8653,6 @@ esm@3.2.25, esm@^3.2.25: resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - espree@^7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" @@ -8196,7 +8676,7 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1, esquery@^1.2.0, esquery@^1.3.1: +esquery@^1.2.0, esquery@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -8286,7 +8766,7 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== -execa@3.4.0, execa@^3.2.0: +execa@3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== @@ -8328,7 +8808,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.0, execa@^4.0.2, execa@^4.0.3, execa@^4.1.0: +execa@^4.0.0, execa@^4.0.2, execa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -8375,6 +8855,13 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -8388,6 +8875,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" @@ -8407,18 +8901,6 @@ expand-tilde@^1.2.2: dependencies: os-homedir "^1.0.1" -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.5.0" - ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" @@ -8469,6 +8951,13 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -8537,6 +9026,11 @@ fancy-test@^1.4.3: nock "^13.0.0" stdout-stderr "^0.1.9" +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -8547,7 +9041,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@3.2.5: +fast-glob@3.2.5, fast-glob@^3.2.4, fast-glob@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -8639,20 +9133,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0, figures@^3.2.0: +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" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" @@ -8685,6 +9172,22 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -8735,6 +9238,11 @@ find-file-up@^0.1.2: fs-exists-sync "^0.1.0" resolve-dir "^0.1.0" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= + find-pkg@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" @@ -8780,13 +9288,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-versions@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" - integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== - dependencies: - semver-regex "^3.1.2" - find-yarn-workspace-root@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" @@ -8835,15 +9336,6 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -8852,11 +9344,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - flatted@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" @@ -8883,13 +9370,6 @@ flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - follow-redirects@^1.10.0: version "1.13.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" @@ -8900,6 +9380,13 @@ for-in@^1.0.1, for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" @@ -8974,25 +9461,6 @@ fs-extra@5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.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== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@9.1.0, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -9020,7 +9488,16 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^8.0.1, fs-extra@^8.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== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== @@ -9030,6 +9507,16 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -9072,7 +9559,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: +fsevents@^1.0.0, fsevents@^1.2.7: version "1.2.13" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== @@ -9134,7 +9621,7 @@ genfun@^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: +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -9184,11 +9671,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stdin@^6.0.0: - version "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@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -9218,6 +9700,16 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-workspaces@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/get-workspaces/-/get-workspaces-0.6.0.tgz#0060bd2238324fd9b7ed7bb9c63f7561fd72001b" + integrity sha512-EWfuENHoxNGk4xoel0jJdm/nhm8oMGQYRsTWJDqrHaj7jyebSckZI0TwQaeWX1rzqpMLULYFrdxhYJPI1l2j3w== + dependencies: + "@changesets/types" "^0.4.0" + fs-extra "^7.0.1" + globby "^9.2.0" + read-yaml-file "^1.1.0" + getopts@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" @@ -9355,6 +9847,21 @@ github-username@4.1.0: dependencies: gh-got "^6.0.0" +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -9396,7 +9903,14 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= + dependencies: + find-index "^0.1.1" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -9472,11 +9986,6 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - globby@11.0.2, globby@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" @@ -9593,6 +10102,11 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.1.5: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + graphql-request@3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b" @@ -9687,13 +10201,6 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" - integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= - dependencies: - is-glob "^3.0.0" - has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" @@ -9994,11 +10501,6 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-duration@^3.15.3: - version "3.25.0" - resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.25.0.tgz#ac73be923dbef477c48116f033f8e150f3e0028a" - integrity sha512-QXth17C/8J2QVO0urby5sANmgvwdOF4YZW3mO13ZTkJli4ltVphzMJVG+HkVuTN/bIq1W/O0jRYSyQACus/GVQ== - humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -10006,21 +10508,10 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@4.3.8: - version "4.3.8" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d" - integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow== - dependencies: - chalk "^4.0.0" - ci-info "^2.0.0" - compare-versions "^3.6.0" - cosmiconfig "^7.0.0" - find-versions "^4.0.0" - opencollective-postinstall "^2.0.2" - pkg-dir "^5.0.0" - please-upgrade-node "^3.2.0" - slash "^3.0.0" - which-pm-runs "^1.0.0" +husky@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/husky/-/husky-5.1.2.tgz#dc6a1f68640455d8d98c28875e073087f86c5081" + integrity sha512-lilaRYeDXcAOj8DuRnN9IxUyEMVbYg9rK7yVNkPB5V4hCvxIUxpMeiv9K2h77CE0HzjCnk1Br0oWe1IghXngDQ== hyperlinker@^1.0.0: version "1.0.0" @@ -10073,7 +10564,7 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -ignore-walk@^3.0.1: +ignore-walk@^3.0.1, ignore-walk@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== @@ -10085,7 +10576,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4: +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -10105,7 +10596,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -10309,25 +10800,6 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - internal-slot@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" @@ -10337,11 +10809,6 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -10444,7 +10911,7 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.1.0: +is-core-module@^2.1.0, is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== @@ -10498,6 +10965,18 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + is-expression@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" @@ -10518,6 +10997,11 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -10550,7 +11034,14 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^3.0.0, is-glob@^3.1.0: +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= @@ -10597,6 +11088,13 @@ is-npm@^4.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -10604,6 +11102,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -10663,17 +11166,27 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + is-potential-custom-element-name@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + is-promise@^2.0.0, is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-reference@^1.1.2: +is-reference@^1.1.2, is-reference@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== @@ -10923,15 +11436,6 @@ jake@^10.6.1: filelist "^1.0.1" minimatch "^3.0.4" -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.5.0" - execa "^3.2.0" - throat "^5.0.0" - jest-changed-files@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" @@ -10941,26 +11445,6 @@ jest-changed-files@^26.6.2: execa "^4.0.0" throat "^5.0.0" -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.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.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-cli@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" @@ -10980,31 +11464,6 @@ jest-cli@^26.6.3: prompts "^2.0.1" yargs "^15.4.1" -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.5.4" - "@jest/types" "^25.5.0" - babel-jest "^25.5.1" - chalk "^3.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - 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.5.0" - realpath-native "^2.0.0" - jest-config@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" @@ -11029,16 +11488,6 @@ jest-config@^26.6.3: micromatch "^4.0.2" pretty-format "^26.6.2" -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.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - jest-diff@^26.0.0, jest-diff@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" @@ -11049,30 +11498,12 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -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-docblock@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -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== + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.5.0" - pretty-format "^25.5.0" + detect-newline "^3.0.0" jest-each@^26.6.2: version "26.6.2" @@ -11085,7 +11516,7 @@ jest-each@^26.6.2: jest-util "^26.6.2" pretty-format "^26.6.2" -jest-environment-jsdom-fourteen@1.0.1, jest-environment-jsdom-fourteen@^1.0.1: +jest-environment-jsdom-fourteen@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== @@ -11107,18 +11538,6 @@ jest-environment-jsdom-sixteen@1.0.3: jest-util "^25.1.0" jsdom "^16.2.1" -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-jsdom@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" @@ -11132,18 +11551,6 @@ jest-environment-jsdom@^26.6.2: jest-util "^26.6.2" jsdom "^16.4.0" -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.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-environment-node@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" @@ -11156,11 +11563,6 @@ jest-environment-node@^26.6.2: jest-mock "^26.6.2" jest-util "^26.6.2" -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-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" @@ -11185,26 +11587,6 @@ jest-haste-map@^24.9.0: optionalDependencies: fsevents "^1.2.7" -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.5.0" - "@types/graceful-fs" "^4.1.2" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - 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" - which "^2.0.2" - optionalDependencies: - fsevents "^2.1.2" - jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -11226,29 +11608,6 @@ jest-haste-map@^26.6.2: optionalDependencies: fsevents "^2.1.2" -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.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.5.0" - is-generator-fn "^2.0.0" - 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-jasmine2@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" @@ -11273,14 +11632,6 @@ jest-jasmine2@^26.6.3: pretty-format "^26.6.2" throat "^5.0.0" -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.6" - pretty-format "^25.5.0" - jest-leak-detector@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" @@ -11289,16 +11640,6 @@ jest-leak-detector@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -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.5.0" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - jest-matcher-utils@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" @@ -11374,7 +11715,7 @@ jest-mock@^26.6.2: "@jest/types" "^26.6.2" "@types/node" "*" -jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: +jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== @@ -11384,25 +11725,11 @@ 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, 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-regex-util@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -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.5.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.5.1" - jest-resolve-dependencies@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" @@ -11412,21 +11739,6 @@ jest-resolve-dependencies@^26.6.3: jest-regex-util "^26.0.0" jest-snapshot "^26.6.2" -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.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.17.0" - slash "^3.0.0" - jest-resolve@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" @@ -11441,31 +11753,6 @@ jest-resolve@^26.6.2: resolve "^1.18.1" slash "^3.0.0" -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.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.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-runner@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" @@ -11492,38 +11779,6 @@ jest-runner@^26.6.3: source-map-support "^0.5.6" throat "^5.0.0" -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.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" - yargs "^15.3.1" - jest-runtime@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" @@ -11562,13 +11817,6 @@ 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.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-serializer@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" @@ -11577,27 +11825,6 @@ jest-serializer@^26.6.2: "@types/node" "*" graceful-fs "^4.2.4" -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.5.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - 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.5.0" - semver "^6.3.0" - jest-snapshot@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" @@ -11661,18 +11888,6 @@ jest-util@^26.1.0, jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" -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.5.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" - leven "^3.1.0" - pretty-format "^25.5.0" - jest-validate@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" @@ -11685,7 +11900,7 @@ jest-validate@^26.6.2: leven "^3.1.0" pretty-format "^26.6.2" -jest-watch-typeahead@0.6.1, jest-watch-typeahead@^0.6.1: +jest-watch-typeahead@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== @@ -11698,31 +11913,6 @@ jest-watch-typeahead@0.6.1, jest-watch-typeahead@^0.6.1: string-length "^4.0.1" strip-ansi "^6.0.0" -jest-watch-typeahead@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.5.0.tgz#903dba6112f22daae7e90b0a271853f7ff182008" - integrity sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-regex-util "^25.2.1" - jest-watcher "^25.2.4" - slash "^3.0.0" - string-length "^3.1.0" - strip-ansi "^6.0.0" - -jest-watcher@^25.2.4, 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.5.0" - "@jest/types" "^25.5.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.5.0" - string-length "^3.1.0" - jest-watcher@^26.3.0, jest-watcher@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" @@ -11744,15 +11934,7 @@ jest-worker@24.9.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -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-worker@^26.6.2: +jest-worker@^26.3.0, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -11761,7 +11943,7 @@ jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@26.6.3, jest@^26.6.3: +jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== @@ -11770,15 +11952,6 @@ jest@26.6.3, jest@^26.6.3: import-local "^3.0.2" jest-cli "^26.6.3" -jest@^25.3.0: - 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.5.4" - import-local "^3.0.2" - jest-cli "^25.5.4" - joi@^17.3.0: version "17.3.0" resolved "https://registry.yarnpkg.com/joi/-/joi-17.3.0.tgz#f1be4a6ce29bc1716665819ac361dfa139fff5d2" @@ -11790,11 +11963,6 @@ joi@^17.3.0: "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -jpjs@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jpjs/-/jpjs-1.2.1.tgz#f343833de8838a5beba1f42d5a219be0114c44b7" - integrity sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw== - js-stringify@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" @@ -11805,7 +11973,7 @@ js-stringify@^1.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-yaml@^3.13.1, js-yaml@^3.6.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -11875,38 +12043,6 @@ jsdom@^14.1.0: ws "^6.1.2" xml-name-validator "^3.0.0" -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" - xml-name-validator "^3.0.0" - jsdom@^16.2.1, jsdom@^16.4.0: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" @@ -12003,6 +12139,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -12024,7 +12167,7 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonwebtoken@^8.5.1: +jsonwebtoken@8.5.1: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== @@ -12066,11 +12209,6 @@ jstransformer@1.0.0: array-includes "^3.1.1" object.assign "^4.1.1" -junk@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" - integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== - jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -12248,14 +12386,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -12264,6 +12394,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + libbase64@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-1.2.1.tgz#fb93bf4cb6d730f29b92155b6408d1bd2176a8c8" @@ -12338,27 +12476,6 @@ linkify-it@3.0.2: dependencies: uc.micro "^1.0.1" -lint-staged@10.5.1: - version "10.5.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.1.tgz#901e915c2360072dded0e7d752a0d9a49e079daa" - integrity sha512-fTkTGFtwFIJJzn/PbUO3RXyEBHIhbfYBE7+rJyLcOXabViaO/h6OslgeK6zpeUtzkDrzkgyAYDTLAwx6JzDTHw== - dependencies: - chalk "^4.1.0" - cli-truncate "^2.1.0" - commander "^6.2.0" - cosmiconfig "^7.0.0" - debug "^4.2.0" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^4.1.0" - listr2 "^3.2.2" - log-symbols "^4.0.0" - micromatch "^4.0.2" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" - lint-staged@10.5.3: version "10.5.3" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.3.tgz#c682838b3eadd4c864d1022da05daa0912fb1da5" @@ -12552,11 +12669,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash-es@^4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.20.tgz#29f6332eefc60e849f869c264bc71126ad61e8f7" - integrity sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA== - lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -12587,6 +12699,11 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= +lodash.frompairs@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz#bc4e5207fa2757c136e573614e9664506b2b1bd2" + integrity sha1-vE5SB/onV8E25XNhTpZkUGsrG9I= + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -12632,10 +12749,10 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.merge@^4.6.2: +lodash.mergewith@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== lodash.once@^4.0.0, lodash.once@^4.1.1: version "4.1.1" @@ -12682,11 +12799,16 @@ lodash.zip@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= -lodash@4.x, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: +lodash@4.x, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.0.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -12701,13 +12823,6 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -12756,13 +12871,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -12933,6 +13041,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -13037,7 +13150,7 @@ meow@^4.0.0: redent "^2.0.0" trim-newlines "^2.0.0" -meow@^6.1.1: +meow@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== @@ -13054,6 +13167,23 @@ meow@^6.1.1: type-fest "^0.13.1" yargs-parser "^18.1.3" +meow@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" + integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" + meow@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.0.tgz#0fcaa267e35e4d58584b8205923df6021ddcc7ba" @@ -13081,6 +13211,38 @@ merge2@^1.2.3, merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +micro-memoize@^4.0.9: + version "4.0.9" + resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.0.9.tgz#b44a38c9dffbee1cefc2fd139bc8947952268b62" + integrity sha512-Z2uZi/IUMGQDCXASdujXRqrXXEwSY0XffUrAOllhqzQI3wpUyZbiZTiE2JuYC0HSG2G7DbCS5jZmsEKEGZuemg== + +micromatch@4.0.2, 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@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -13100,14 +13262,6 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -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" @@ -13197,7 +13351,7 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@1.2.5, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@1.2.5, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, 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== @@ -13295,11 +13449,6 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -module-alias@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" - integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== - moment@^2.22.1, moment@^2.27.0: version "2.29.1" resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" @@ -13322,7 +13471,7 @@ mri@1.1.0: resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a" integrity sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o= -mri@^1.1.0, mri@^1.1.5: +mri@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== @@ -13337,7 +13486,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: +ms@^2.0.0, ms@^2.1.1, ms@^2.1.2, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -13384,7 +13533,7 @@ 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.4: +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== @@ -13476,24 +13625,11 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" - integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== - new-github-issue-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz#e17be1f665a92de465926603e44b9f8685630c1d" integrity sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA== -next-transpile-modules@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/next-transpile-modules/-/next-transpile-modules-6.1.0.tgz#f5673044a9a955855733b15ab48ff12a05e5c5f4" - integrity sha512-IVjXHXnvr/n7liIe7SZcDbq3Gab4zltmKk7sC8zqn/L3TJt1V49W0OnUdtD/LRUdET3i34EfH/4p45SjgyQbNw== - dependencies: - enhanced-resolve "^5.3.2" - escalade "^3.1.1" - next@10.0.7: version "10.0.7" resolved "https://registry.yarnpkg.com/next/-/next-10.0.7.tgz#442f8e1da7454de33b0bbcc1ce5684b923597ee6" @@ -13543,14 +13679,6 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - nock@13.0.6: version "13.0.6" resolved "https://registry.yarnpkg.com/nock/-/nock-13.0.6.tgz#9f90573ea6e84883b94eeac374d1c73460afed56" @@ -13700,17 +13828,6 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== - dependencies: - growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" - shellwords "^0.1.1" - which "^1.3.1" - node-notifier@^8.0.0: version "8.0.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" @@ -13749,6 +13866,11 @@ node-releases@^1.1.69: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== +node-releases@^1.1.70: + version "1.1.71" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" + integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== + node-version@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.3.tgz#1081c87cce6d2dbbd61d0e51e28c287782678496" @@ -13832,7 +13954,7 @@ normalize-package-data@^3.0.0: semver "^7.3.2" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -13861,7 +13983,7 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-bundled@^1.0.1: +npm-bundled@^1.0.1, npm-bundled@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== @@ -13906,6 +14028,16 @@ npm-packlist@^1.1.6, npm-packlist@^1.4.1, npm-packlist@^1.4.4: npm-bundled "^1.0.1" npm-normalize-package-bin "^1.0.1" +npm-packlist@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" + integrity sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw== + dependencies: + glob "^7.1.6" + ignore-walk "^3.0.3" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" @@ -13937,6 +14069,13 @@ npm-run-all@4.1.5: shell-quote "^1.6.1" string.prototype.padend "^3.0.0" +npm-run-path@4.0.1, npm-run-path@^4.0.0, npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + 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" @@ -13944,13 +14083,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - npm-which@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" @@ -14108,6 +14240,14 @@ object.map@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -14169,11 +14309,6 @@ open@^7.3.0: is-docker "^2.0.0" is-wsl "^2.1.1" -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" @@ -14194,7 +14329,7 @@ optimize-css-assets-webpack-plugin@^5.0.4: cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" -optionator@^0.8.1, optionator@^0.8.3: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -14230,20 +14365,6 @@ ora@2.0.0: strip-ansi "^4.0.0" wcwidth "^1.0.1" -ora@^4.0.3: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" - integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - ora@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" @@ -14309,13 +14430,6 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= -p-all@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" - integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== - dependencies: - p-map "^2.0.0" - p-cancelable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" @@ -14341,7 +14455,7 @@ p-each-series@^2.1.0: resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== -p-event@4.2.0, p-event@^4.1.0: +p-event@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== @@ -14384,7 +14498,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -14431,13 +14545,6 @@ p-map@^2.0.0, p-map@^2.1.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - 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" @@ -14501,7 +14608,7 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" -package-json@^6.3.0: +package-json@^6.3.0, package-json@^6.5.0: version "6.5.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== @@ -14577,6 +14684,16 @@ parse-gitignore@1.0.1: resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-1.0.1.tgz#8b9dc57f17b810d495c5dfa62eb07caffe7758c7" integrity sha512-UGyowyjtx26n65kdAMWhm6/3uy5uSrpcuH7tt+QEVudiBoVS+eqHxD5kbi9oWVRwj7sCzXqwuM+rUGw7earl6A== +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -14602,6 +14719,16 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-json@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -14635,14 +14762,6 @@ parse5@5.1.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -pascal-case@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -14879,6 +14998,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +pid-cwd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pid-cwd/-/pid-cwd-1.2.0.tgz#c14c03d812b1d23f97aee27767957fc16272c979" + integrity sha512-8QQzIdBmy4bd2l1NKWON1X8flO5TQQRzU2uRDua/XaxSC0iJ+rgbDrlX76t0W3DaJ7OevTYpftyvQ6oMe3hclQ== + pidtree@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" @@ -15358,6 +15482,11 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -15370,36 +15499,16 @@ prettier-plugin-prisma@0.2.0: resolved "https://registry.yarnpkg.com/prettier-plugin-prisma/-/prettier-plugin-prisma-0.2.0.tgz#8ca14224bbc16570cdda3fa774e675a27614f4ba" integrity sha512-A9D8tUpicPFQ5+wDGAjBowBqXnkoJublmlh4tlOo89f4HSOp+H1ETyZhfvjKkrJSn0k7s3TS7PYkL1Z00o5W4A== -prettier@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.0.tgz#8a03c7777883b29b37fb2c4348c66a78e980418b" - integrity sha512-yYerpkvseM4iKD/BXLYUkQV5aKt4tQPqaGW6EsZjzyu0r7sVZZNPJW4Y8MyKmicp6t42XUPcBVA+H6sB3gqndw== - -prettier@2.2.1: +prettier@2.2.1, prettier@^2.0.1: version "2.2.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== -prettier@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - pretty-bytes@^5.4.1: version "5.5.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== -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.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" @@ -15462,16 +15571,6 @@ process@0.11.10, process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress-estimator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/progress-estimator/-/progress-estimator-0.2.2.tgz#1c3947a5782ea56e40c8fccc290ac7ceeb1b91cb" - integrity sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA== - dependencies: - chalk "^2.4.1" - cli-spinners "^1.3.1" - humanize-duration "^3.15.3" - log-update "^2.3.0" - progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -15564,6 +15663,11 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +ps-list@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/ps-list/-/ps-list-7.2.0.tgz#3d110e1de8249a4b178c9b1cf2a215d1e4e42fc0" + integrity sha512-v4Bl6I3f2kJfr5o80ShABNHAokIgY+wFDTQfE+X3zWYgSGQOCBeYptLZUpoOALBqO5EawmDN/tjTldJesd0ujQ== + ps-tree@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" @@ -15826,6 +15930,15 @@ random-string@0.2.0: resolved "https://registry.yarnpkg.com/random-string/-/random-string-0.2.0.tgz#a46e4375352beda9a0d7b0d19ed6d321ecd1d82d" integrity sha1-pG5DdTUr7amg17DRntbTIezR2C0= +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -15878,13 +15991,6 @@ react-dom@0.0.0-experimental-3310209d0: object-assign "^4.1.1" scheduler "0.0.0-experimental-3310209d0" -react-error-boundary@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-2.3.2.tgz#4d629cf958202da722e49f624bfb5cf9710b52c6" - integrity sha512-ZMzi7s4pj/6A/6i9RS4tG7g1PdF2Rgr4/7FTQ8sbKHex19uNji0j+xq0OS//c6TUgQRKoL6P51BNNNFmYpRMhw== - dependencies: - "@babel/runtime" "^7.11.2" - react-error-boundary@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.0.tgz#9487443df2f9ba1db90d8ab52351814907ea4af3" @@ -15899,12 +16005,7 @@ react-final-form@6.5.2: dependencies: "@babel/runtime" "^7.12.1" -react-is@0.0.0-experimental-3310209d0: - version "0.0.0-experimental-3310209d0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-0.0.0-experimental-3310209d0.tgz#58787a47ee7b1f6b50f13bb05394d7612405bd93" - integrity sha512-s0mpFRpWkvIvBi4MFG92/ZnAwvOEsRhOQh+NGu8PtbNf1b2/Pl4NkaPTUMuE5WQUROUwPWS1jko4/FAn36yM7g== - -react-is@16.13.1, react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: +react-is@16.13.1, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -15944,26 +16045,6 @@ react-shallow-renderer@^16.13.1: object-assign "^4.1.1" react-is "^16.12.0 || ^17.0.0" -react-test-renderer@0.0.0-experimental-3310209d0: - version "0.0.0-experimental-3310209d0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-0.0.0-experimental-3310209d0.tgz#f09aa8123fe93e13d0bc5b9fdb740ee9867ab1b6" - integrity sha512-KLaj8xikKFnW7WD+tQABodxszjDrJJI9mCS9v5/sphVcKxvnIouFmE4UUkiwuyLN40PMzQheeKs/kaHvVSB5aw== - dependencies: - object-assign "^4.1.1" - react-is "0.0.0-experimental-3310209d0" - react-shallow-renderer "^16.13.1" - scheduler "0.0.0-experimental-3310209d0" - -react-test-renderer@16.14.0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" - integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== - dependencies: - object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.8.6" - scheduler "^0.19.1" - react-test-renderer@17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3187e636c3063e6ae498aedf21ecf972721574c7" @@ -16076,15 +16157,6 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" - integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= - dependencies: - normalize-package-data "^2.3.2" - parse-json "^4.0.0" - pify "^3.0.0" - read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -16095,6 +16167,16 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +read-yaml-file@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" + integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== + dependencies: + graceful-fs "^4.1.5" + js-yaml "^3.6.1" + pify "^4.0.1" + strip-bom "^3.0.0" + read@1, read@1.0.x, read@~1.0.1: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" @@ -16144,7 +16226,7 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.2.1: +readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -16160,6 +16242,11 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +readline@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" + integrity sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw= + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -16167,11 +16254,6 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== - recast@0.17.2: version "0.17.2" resolved "https://registry.yarnpkg.com/recast/-/recast-0.17.2.tgz#f18f18cf20bf3fad4522621a7f9c2ada37276814" @@ -16242,7 +16324,12 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -16254,6 +16341,13 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -16275,11 +16369,6 @@ regexp.prototype.flags@^1.3.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -16408,7 +16497,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -16439,7 +16528,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.5, request-promise-native@^1.0.7, request-promise-native@^1.0.8: +request-promise-native@^1.0.5, request-promise-native@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -16563,18 +16652,6 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -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.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.18.1: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" @@ -16583,6 +16660,14 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11. is-core-module "^2.1.0" path-parse "^1.0.6" +resolve@^1.19.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -16663,20 +16748,20 @@ rimraf@2, rimraf@2.x.x, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6 dependencies: glob "^7.1.3" -rimraf@2.6.3, rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -16735,37 +16820,7 @@ rollup-plugin-peer-deps-external@2.2.4: resolved "https://registry.yarnpkg.com/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz#8a420bbfd6dccc30aeb68c9bf57011f2f109570d" integrity sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g== -rollup-plugin-sourcemaps@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed" - integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw== - dependencies: - "@rollup/pluginutils" "^3.0.9" - source-map-resolve "^0.6.0" - -rollup-plugin-terser@^5.1.2: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^4.0.0" - terser "^4.6.2" - -rollup-plugin-typescript2@^0.27.3: - version "0.27.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz#cd9455ac026d325b20c5728d2cc54a08a771b68b" - integrity sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - find-cache-dir "^3.3.1" - fs-extra "8.1.0" - resolve "1.17.0" - tslib "2.0.1" - -rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: +rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.1: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== @@ -16779,21 +16834,19 @@ rollup@2.36.1: optionalDependencies: fsevents "~2.1.2" -rollup@^1.32.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@^2.32.0: + version "2.40.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.40.0.tgz#efc218eaede7ab590954df50f96195188999c304" + integrity sha512-WiOGAPbXoHu+TOz6hyYUxIksOwsY/21TRWoO593jgYt8mvYafYqQl+axaA8y1z2HFazNUUrsMSjahV2A6/2R9A== + optionalDependencies: + fsevents "~2.3.1" rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.2.0, run-async@^2.4.0: +run-async@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -16817,27 +16870,13 @@ rxjs@^5.5.2: dependencies: symbol-observable "1.0.1" -rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.2, rxjs@^6.6.0, rxjs@^6.6.3: +rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.3: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" -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" - -sade@^1.4.2: - version "1.7.4" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691" - integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA== - dependencies: - mri "^1.1.0" - safe-buffer@*, 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.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -16924,14 +16963,6 @@ scheduler@^0.18.0: loose-envify "^1.1.0" object-assign "^4.1.1" -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler@^0.20.1: version "0.20.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" @@ -16966,6 +16997,14 @@ secure-password@4.0.0: nanoassert "^1.0.0" sodium-native "^3.1.1" +sembear@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/sembear/-/sembear-0.5.2.tgz#679da95f1cf1a39b7fcd54a1ae89cd5badedb7b3" + integrity sha512-Ij1vCAdFgWABd7zTg50Xw1/p0JgESNxuLlneEAsmBrKishA06ulTTL/SHGmNy2Zud7+rKrHTKNI6moJsn1ppAQ== + dependencies: + "@types/semver" "^6.0.1" + semver "^6.3.0" + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -16978,11 +17017,6 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -semver-regex@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" - integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== - "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, 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" @@ -16998,14 +17032,14 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.4, semver@7.x, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: +semver@7.3.4, semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.1, 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== @@ -17107,14 +17141,10 @@ shell-quote@1.7.2, shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shelljs@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" +shellwords-ts@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shellwords-ts/-/shellwords-ts-3.0.0.tgz#cd0679116dbe8581a8a0299b4f5f52a067ac79f2" + integrity sha512-4uZTHR2P7zKRZmSoOiUCFK1K+5LlDxay/RVNWDDImnGG1/4r/dZ2Y3rzpo871Iche913yOgYeKrrxl+3vengFw== shellwords@^0.1.1: version "0.1.1" @@ -17213,15 +17243,6 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.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" @@ -17342,7 +17363,7 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -17355,7 +17376,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.7.3, source-map@^0.7.3: +source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -17395,6 +17416,14 @@ spawn-to-readstream@~0.1.3: limit-spawn "0.0.3" through2 "~0.4.1" +spawndamnit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad" + integrity sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA== + dependencies: + cross-spawn "^5.1.0" + signal-exit "^3.0.2" + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -17517,19 +17546,6 @@ stacktrace-parser@0.1.10: dependencies: type-fest "^0.7.1" -start-server-and-test@1.11.2: - version "1.11.2" - resolved "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.11.2.tgz#9144b7b6f25197148f159f261ae80119afbb17d5" - integrity sha512-rk1zS5WQvdbc8slE5hPtzfji1dFSnBAfm+vSjToZNrBvozHJvuAG80xE5u8N4tQjg3Ej1Crjc19J++r28HGJgg== - dependencies: - bluebird "3.7.2" - check-more-types "2.24.0" - debug "4.1.1" - execa "3.4.0" - lazy-ass "1.6.0" - ps-tree "1.2.0" - wait-on "5.1.0" - start-server-and-test@1.11.7: version "1.11.7" resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-1.11.7.tgz#3026bc6020e41edd4efad231bedf00a6a051f22a" @@ -17837,7 +17853,7 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -17897,6 +17913,13 @@ stylis@3.5.4: resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= + dependencies: + minimist "^1.1.0" + superjson@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.7.2.tgz#81f531829fee8bdab5593f57c145be25d2ed54c4" @@ -17987,16 +18010,6 @@ symbol-tree@^3.2.2, symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - table@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/table/-/table-6.0.4.tgz#c523dd182177e926c723eb20e1b341238188aa0d" @@ -18020,11 +18033,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== - tar-fs@^2.0.0, tar-fs@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -18186,7 +18194,7 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2, terser@^4.6.2: +terser@^4.1.2: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -18195,6 +18203,15 @@ terser@^4.1.2, terser@^4.6.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.2.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -18319,14 +18336,6 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -tiny-glob@^0.2.6: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.8.tgz#b2792c396cc62db891ffa161fe8b33e76123e531" - integrity sha512-vkQP7qOslq63XRX9kMswlby99kyO5OvKptw7AMwBVMjXEI7Tb61eoI5DydyEMOseyGS5anDN1VPoVxEvH01q8w== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - tlds@1.214.0: version "1.214.0" resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.214.0.tgz#a20191443eec26fd3339a3bd98e87a0b4f3f0d89" @@ -18503,7 +18512,7 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -ts-jest@26.5.0, ts-jest@^25.3.1, ts-jest@^26.4.4: +ts-jest@26.5.0: version "26.5.0" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.0.tgz#3e3417d91bc40178a6716d7dacc5b0505835aa21" integrity sha512-Ya4IQgvIFNa2Mgq52KaO8yBw2W8tWp61Ecl66VjF0f5JaV8u50nGoptHVILOPGoI7SDnShmEqnYQEmyHdQ+56g== @@ -18552,73 +18561,6 @@ tsconfig-paths@3.9.0, tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tsdx@0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/tsdx/-/tsdx-0.14.1.tgz#8771d509b6fc523ad971bae3a63ebe3a88355ab3" - integrity sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w== - dependencies: - "@babel/core" "^7.4.4" - "@babel/helper-module-imports" "^7.0.0" - "@babel/parser" "^7.11.5" - "@babel/plugin-proposal-class-properties" "^7.4.4" - "@babel/preset-env" "^7.11.0" - "@babel/traverse" "^7.11.5" - "@rollup/plugin-babel" "^5.1.0" - "@rollup/plugin-commonjs" "^11.0.0" - "@rollup/plugin-json" "^4.0.0" - "@rollup/plugin-node-resolve" "^9.0.0" - "@rollup/plugin-replace" "^2.2.1" - "@types/jest" "^25.2.1" - "@typescript-eslint/eslint-plugin" "^2.12.0" - "@typescript-eslint/parser" "^2.12.0" - ansi-escapes "^4.2.1" - asyncro "^3.0.0" - babel-eslint "^10.0.3" - babel-plugin-annotate-pure-calls "^0.4.0" - babel-plugin-dev-expression "^0.2.1" - babel-plugin-macros "^2.6.1" - babel-plugin-polyfill-regenerator "^0.0.4" - babel-plugin-transform-rename-import "^2.3.0" - camelcase "^6.0.0" - chalk "^4.0.0" - enquirer "^2.3.4" - eslint "^6.1.0" - eslint-config-prettier "^6.0.0" - eslint-config-react-app "^5.2.1" - eslint-plugin-flowtype "^3.13.0" - eslint-plugin-import "^2.18.2" - eslint-plugin-jsx-a11y "^6.2.3" - eslint-plugin-prettier "^3.1.0" - eslint-plugin-react "^7.14.3" - eslint-plugin-react-hooks "^2.2.0" - execa "^4.0.3" - fs-extra "^9.0.0" - jest "^25.3.0" - jest-watch-typeahead "^0.5.0" - jpjs "^1.2.1" - lodash.merge "^4.6.2" - ora "^4.0.3" - pascal-case "^3.1.1" - prettier "^1.19.1" - progress-estimator "^0.2.2" - regenerator-runtime "^0.13.7" - rollup "^1.32.1" - rollup-plugin-sourcemaps "^0.6.2" - rollup-plugin-terser "^5.1.2" - rollup-plugin-typescript2 "^0.27.3" - sade "^1.4.2" - semver "^7.1.1" - shelljs "^0.8.3" - tiny-glob "^0.2.6" - ts-jest "^25.3.1" - tslib "^1.9.3" - typescript "^3.7.3" - -tslib@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" - integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== - tslib@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" @@ -18714,6 +18656,11 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.21.2: + version "0.21.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.2.tgz#43b9dc71d9dc5593ea71bf7b0e013ec10f838249" + integrity sha512-pvQl0WNazvfQ0rq2XDdhpWv49sohh2t+buFbglaJ9N9+Xj4BhFRpuo+uJxemeARteRxRloJ1m+8gBR6Z2Nfktg== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -18746,7 +18693,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@4.1.3, typescript@^3.7.3: +typescript@4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== @@ -18776,6 +18723,30 @@ uid2@0.0.x: resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= +ultra-runner@3.10.5: + version "3.10.5" + resolved "https://registry.yarnpkg.com/ultra-runner/-/ultra-runner-3.10.5.tgz#7a723b64326642a6d4649ca4cd51a9900c7eccd2" + integrity sha512-0U2OPII7sbvtbu9rhDlUUkP4Au/DPz2Tzbnawd/XwDuUruDqd+t/Bmel3cLJxl3yMLHf0OY0TMcIx9zzxdlAZw== + dependencies: + ansi-split "^1.0.1" + chalk "^4.1.0" + cross-spawn "^7.0.3" + fast-glob "^3.2.5" + globrex "^0.1.2" + ignore "^5.1.8" + json5 "^2.2.0" + micro-memoize "^4.0.9" + npm-run-path "4.0.1" + pid-cwd "^1.2.0" + ps-list "^7.2.0" + shellwords-ts "^3.0.0" + string-width "^4.2.0" + tslib "2.1.0" + type-fest "^0.21.2" + wrap-ansi "^7.0.0" + yamljs "^0.3.0" + yargs "^16.2.0" + umask@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" @@ -19099,20 +19070,11 @@ uuid@^8.3.0, uuid@^8.3.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache@2.2.0, v8-compile-cache@^2.0.3: +v8-compile-cache@2.2.0, v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -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" - v8-to-istanbul@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" @@ -19255,17 +19217,6 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -wait-on@5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/wait-on/-/wait-on-5.1.0.tgz#b697f21c6fea0908b9c7ad6ed56ace4736768b66" - integrity sha512-JM0kgaE+V0nCDvSl72iM05W8NDt2E2M56WC5mzR7M+T+k6xjt2yYpyom+xA8RasSunFGzbxIpAXbVzXqtweAnA== - dependencies: - "@hapi/joi" "^17.1.1" - axios "^0.19.2" - lodash "^4.17.19" - minimist "^1.2.5" - rxjs "^6.5.5" - wait-on@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.2.1.tgz#05b66fcb4d7f5da01537f03e7cf96e8836422996" @@ -19641,13 +19592,6 @@ write-pkg@^3.1.0: 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" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -19655,7 +19599,7 @@ ws@^6.1.2: dependencies: async-limiter "~1.0.0" -ws@^7, ws@^7.0.0, ws@^7.2.3, ws@^7.2.5, ws@^7.3.1: +ws@^7, ws@^7.2.3, ws@^7.2.5, ws@^7.3.1: version "7.4.2" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== @@ -19742,24 +19686,24 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.7.2: +yaml@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yamljs@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" + integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== + dependencies: + argparse "^1.0.7" + glob "^7.0.5" + yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -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" @@ -19776,22 +19720,6 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^13.3.0: - 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" @@ -19809,7 +19737,7 @@ yargs@^14.2.2: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@^15.3.1, yargs@^15.4.1: +yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== @@ -19826,7 +19754,7 @@ yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.1.1: +yargs@^16.1.1, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -19873,7 +19801,7 @@ zip-stream@^3.0.1: compress-commons "^3.0.0" readable-stream "^3.6.0" -zod@1.11.11, zod@>=1.0.0: +zod@1.11.11: version "1.11.11" resolved "https://registry.yarnpkg.com/zod/-/zod-1.11.11.tgz#1cc937e0b4ce08693de01b5bcd7c4d1a37d83993" integrity sha512-q1YeBpu+c7eUX5fDFMyfP97sD74TUQ+UN8va/nvbxnArr5euYsNO6fjiY0SdDkHKNZ+xBR2ZQToaeLgJ6fsB2A==